Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Forse il tuo processo è inaccessibile, o magari si tratta veramente di corruzione della memoria. Prova a vedere come va con un altro processo.
|
|
gianluca (Normal User)
Pro
Messaggi: 103
Iscritto: 23/06/2008
|
Ultima modifica effettuata da gianluca il 10/10/2008 alle 22:39 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Cosa c'entra il chat engine con questo? Fammi un po' vedere il codice che hai scritto.
|
|
gianluca (Normal User)
Pro
Messaggi: 103
Iscritto: 23/06/2008
|
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! UFF
Ultima modifica effettuata da gianluca il 13/10/2008 alle 23:11 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Codice sorgente - presumibilmente VB.NET |
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: http://msdn.microsoft.com/en-us/library/ms724211.aspx
Ultima modifica effettuata da Il Totem il 12/10/2008 alle 10:09 |
|
gianluca (Normal User)
Pro
Messaggi: 103
Iscritto: 23/06/2008
|
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!
Ultima modifica effettuata da gianluca il 16/10/2008 alle 20:14 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Questa riga:
Codice sorgente - presumibilmente Plain Text |
Marshal.WriteInt32(Handle, Address)
|
scrive il numero Address nei primi 4 bytes della memoria del processo. Rimuovi questa riga.
E fai attenzione all'uguale:
Codice sorgente - presumibilmente C# / VB.NET |
For I As Int16 = 0 To Buffer.Length - 1
RichTextBox1.Text &= (String.Format("{0:X2}", Buffer(I)))
Next
|
|
|
gianluca (Normal User)
Pro
Messaggi: 103
Iscritto: 23/06/2008
|
ce la sto facendo! forse...
cmq ti volevo kiedere cosa fa questa riga?
Dim ReadBytes As Int32 = Marshal.ReadInt32(Read)
Ultima modifica effettuata da gianluca il 15/10/2008 alle 23:43 |
|