Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Address Finder...
Forum - C# / VB.NET - Address Finder... - Pagina 2

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:52
Venerdì, 10/10/2008
Forse il tuo processo è inaccessibile, o magari si tratta veramente di corruzione della memoria. Prova a vedere come va con un altro processo.

PM Quote
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 21:50
Venerdì, 10/10/2008
tutto uguale! AAAAAAAAAAAA ke scesa! cmq ho visto un source di cheatEngine e io non so manco come aprirlo!ahahah ti consiglio di scaricarlo!

http://www.cheatengine.org/downloads.php

Ultima modifica effettuata da gianluca il 10/10/2008 alle 22:39
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:35
Sabato, 11/10/2008
Cosa c'entra il chat engine con questo? Fammi un po' vedere il codice che hai scritto.

PM Quote
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 4:43
Domenica, 12/10/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!:rotfl: UFF

Ultima modifica effettuata da gianluca il 13/10/2008 alle 23:11
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:06
Domenica, 12/10/2008
Codice sorgente - presumibilmente VB.NET

  1. Public Function ReadLong(ByVal Address As Integer) As Long
  2.         Dim ProgramLookUp As Process() = Process.GetProcessesByName(TextBox1.Text)
  3.         Dim Buffer(ProgramLookUp(0).NonpagedSystemMemorySize64) As Long
  4.         Dim processHandle As IntPtr = ProgramLookUp(0).Handle
  5.         Dim GH As GCHandle = GCHandle.Alloc(Buffer, GCHandleType.Pinned)
  6.         Dim BufferPtr As IntPtr = GH.AddrOfPinnedObject()
  7.         Dim Read As IntPtr = Marshal.AllocHGlobal(4)
  8.         Dim ReadBytes As Int32 = Marshal.ReadInt32(Read)
  9.  
  10.         ReadProcessMemory(processHandle, &H1F0FFF, BufferPtr, Buffer.Length, Nothing)
  11.         CloseHandle(processHandle)
  12.     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
PM Quote
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 16:36
Domenica, 12/10/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!:rotfl::rotfl:

Ultima modifica effettuata da gianluca il 16/10/2008 alle 20:14
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:36
Lunedì, 13/10/2008
Questa riga:
Codice sorgente - presumibilmente Plain Text

  1. 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

  1. For I As Int16 = 0 To Buffer.Length - 1
  2.     RichTextBox1.Text &= (String.Format("{0:X2}", Buffer(I)))
  3. Next


PM Quote
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 0:29
Martedì, 14/10/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
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo