Oppure

Loading
09/10/08 18:58
gianluca
ah, beh! quello si... ma mi da cmq errore!!!!! uffa
aaa
10/10/08 15:52
Il Totem
Forse il tuo processo è inaccessibile, o magari si tratta veramente di corruzione della memoria. Prova a vedere come va con un altro processo.
aaa
10/10/08 19:50
gianluca
tutto uguale! AAAAAAAAAAAA ke scesa! cmq ho visto un source di cheatEngine e io non so manco come aprirlo!ahahah ti consiglio di scaricarlo!

cheatengine.org/…
Ultima modifica effettuata da gianluca 10/10/08 20:39
aaa
11/10/08 14:35
Il Totem
Cosa c'entra il chat engine con questo? Fammi un po' vedere il codice che hai scritto.
aaa
12/10/08 2:43
gianluca
cosa vuol dire ke centra cheat Engine... voglio fare una cs similare, per la ricerca degli address ke portano il valore ke cerco... forse mi ero spiegato male... scusa se è cosi... cmq questo è quello ke ho fatto fin ora...
sara sicuramente scritto orrendo... ma non sono mooolto bravo ancora! devo imparare, e mi alleno con cose ke mi interessano! quindi DAMMI 1 MANO PLEASEEEEE...
ps, per ora l'ho fatto ke mi scrive tutte gli address ke portano il valore <> 0 il problema è ke non li trova!:rotfl: UFF
Ultima modifica effettuata da gianluca 13/10/08 21:11
aaa
12/10/08 8:06
Il Totem
    Public Function ReadLong(ByVal Address As Integer) As Long
        Dim ProgramLookUp As Process() = Process.GetProcessesByName(TextBox1.Text)
        Dim Buffer(ProgramLookUp(0).NonpagedSystemMemorySize64) As Long
        Dim processHandle As IntPtr = ProgramLookUp(0).Handle
        Dim GH As GCHandle = GCHandle.Alloc(Buffer, GCHandleType.Pinned)
        Dim BufferPtr As IntPtr = GH.AddrOfPinnedObject()
        Dim Read As IntPtr = Marshal.AllocHGlobal(4)
        Dim ReadBytes As Int32 = Marshal.ReadInt32(Read)

        ReadProcessMemory(processHandle, &H1F0FFF, BufferPtr, Buffer.Length, Nothing)
        CloseHandle(processHandle)
    End Function


Hai modificato il mio codice, ma lo hai fatto in modo sbagliato:
- Hai usato un array di Long, non di Byte. La memoria è formata da unità minime a 8 bit, quindi byte e non a 64 bit (long). Inoltre la funzione richiede esplicitamente un puntatore ad array di bytes;
- Non hai usato BaseAddress come avevo scritto io. L'indirizzo che hai immesso potrebbe causare errori.
- Hai impostato come ultimo paremtro Nothing, quando nel mio codice era Read. In questo modo non potrai mai sapere quanti bytes hai letto.
Inoltre hai letto ReadBytes prima di iniziare la lettura, il che restituirà sempre 0 come numero di bytes letti. Devi impostare ReadBytes dopo la lettura, come avevo fatto nel mio codice.

Modifica il codice e riprova.

P.S.: CloseHandle è inutile. Non funziona su handle di processi, ma solo sui tipi specificati qui: msdn.microsoft.com/en-us/library/…
Ultima modifica effettuata da Il Totem 12/10/08 8:09
aaa
12/10/08 14:36
gianluca
questo è cm hai scritto tu... ma mi continua a dare quel maledetto errore della memoria! UFF cmq dentro allo zip ti ho messo anke il codice(ModuloUd.txt) ke usavo per un gioco ONLINE in questo oltre a tutte le funzioni di scrittura in memoria ce ne erano 2 anke per la lettura! readLong e readFloat... perche quando le usavo nel gioco funzionavano ed ora no? cioè il read long lo usavo cs

IF ReadLong(Address da leggere) = 2 then
'il valore dell'address era 2 quando avevo un nemico davanti

sparavo in automatico
else
'se non c'è l'avevo piu davanti quindi <> 2
finivo di sparare
end if

perche li funzionava e per altri programmi no?

Cmq grazie infinite per quanto mi stai aiutando e per la pazienza! scusa se sono cs ma voglio imparare!:rotfl::rotfl:
Ultima modifica effettuata da gianluca 16/10/08 18:14
aaa
13/10/08 15:36
Il Totem
Questa riga:
Marshal.WriteInt32(Handle, Address)

scrive il numero Address nei primi 4 bytes della memoria del processo. Rimuovi questa riga.

E fai attenzione all'uguale:
For I As Int16 = 0 To Buffer.Length - 1
    RichTextBox1.Text &= (String.Format("{0:X2}", Buffer(I)))
Next
aaa