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 - [VB.NET] valore memoria processo
Forum - C# / VB.NET - [VB.NET] valore memoria processo

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
noitide (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 10:10
Venerdì, 28/08/2009
buon giorno a tutti, volevo chiedervi delucidazioni in merito ai dati caricati in memoria da un processo, più precisamente sto sviluppando un software x non far imbrogliare ad un gioco attraverso la modifica della RAM. mi è stato segnalato da manvb.net questo articolo http://www.pierotofy.it/pages/extras/forum/16/52799-classe ... ma sinceramente non ci ho capito molto e x quel poco ke ho capito non dovrebbe fare al caso mio, infatti a me serve cercare nella parte di ram utilizzata dal processo dei valori ke sono contenuti in un file di testo e una volta trovati come posso essere sicuro ke siano giusti?, ad esempio devo cercare il valore "0", ma ce ne sono milioni, è possibile identificare quello giusto? e una volta spento il pc la cache della ram si svuota e al successivo riavvio le posizioni assegnate in memoria dalla ram non dovrebbero coincidere quindi anke trovando il valore preciso e ricavandone la posizione non è utile.. o mi sbaglio? spero di essere stato abbastanza chiaro.. grazie..

PM Quote
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 10:46
Venerdì, 28/08/2009
Se vuoi iniziare a lavorare con la memoria dei processi guarda qui http://www.cheatengine.org/downloads.php. Una volta scaricato il programma ti fa affrontare le basi dell'argomento con un piccolo tutorial

PM Quote
Avatar
noitide (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 11:04
Venerdì, 28/08/2009
si grazie.. :) poi vdo ek ci sono anke i sorgenti.. comnq ora ho provato a usare tsearch ke è un programma cheat e ho salvato i valori ke mi interessano in un file .cht e poi ho provato a riavviare il pc ma il cheat funziona ankora quindi o il blocco di memoria utilizzato è sempre quello o c'è dell'altro..

EDIT: ho fatto il tutorial e qlcs penso di aver capito.. sta di fatto ke io non posso cambiare valori x capire quale valore è quello giusto, i miei valori sono statici e una volta caricati sono li e non li posso più modificare..

Ultima modifica effettuata da noitide il 28/08/2009 alle 11:44
PM Quote
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 13:55
Venerdì, 28/08/2009
Ma il programma è tuo e devi modificare i tuoi valori del tuo programma usando gli address ( credo che sia piuttosto scontata la risposta ( no ))? Perché è così credo che tu possa  già fissare l'address all'interno del programma

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 17:17
Venerdì, 28/08/2009
Si, gli address coincidono sempre(perchè sono relativi e poi la cache non c'entra niente) comunque non puoi risalire con semplicità ad una variabile nel processo se non puoi modificare il suo valore per testarla di volta in volta. Poi devi stare attento alle variabili dinamiche(puntatori) perchè il loro puntatore è statico ma punta ad una locazione dinamica, che può cambiare ad ogni avvio del programma. Non hai modo di saper se una variabile è un valore o un puntatore(in vb.net ad esempio tutte le istanze di classi sono puntatori mentre le strutture e i tipi di base sono valori).
Quindi credo che quello che stai cercando di fare sia molto complicato, se non impossibile!

PM Quote
Avatar
noitide (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 19:28
Venerdì, 28/08/2009
ok ho capito grazie.. ma ipotizzando ke riesco a trovare quel valore ke mi interessa, cambiandolo in un modo molto scomodo, come faccio a trovare lo stesso valore su un altro pc? dovrei rifare la ricerca oppure è un percorso assoluto in qualsiasi pc? grazie..

PM Quote
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 21:22
Venerdì, 28/08/2009
in pratica, se sono puntatori, ad ogni avvio del programma, ( sia che tu lo avvii sul tuo computer, sia che tu lo avvii su di un altro ) devi ricercare l'address

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 23:06
Venerdì, 28/08/2009
Allora, se sono variabili statiche(allocate in fase di compilazione) hanno sempre lo stesso indirizzo relativo(a prescindere dal pc, dal sistema operativo, dalla ram, ecc...). Se invece sono dinamiche si tratta di aree di dati referenziate da un puntatore che vengono allocate con new(in vb.net e c++ ad esempio). New(malloc in c) chiama un api di sistema a cui viene richiesta memoria e che restituisce un puntatore a tale memoria(il puntatore è una variabile statica che contiene l'indirizzo di un'area dinamicha), quindi non è detto che il sistema restituisca sempre la stessa area di memoria, ma questa cambia a causa di vari fattori.
In pratica si, devi ricercare ogni volta la variabile(dinamica), in quanto tu non puoi sapere se la cella di memoria che stai leggendo è una variabile statica(o parte), un puntatore(o parte) o un'area dinamica(o parte), è una cosa comunque molto complicata da fare.

PM Quote
Avatar
noitide (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 12:34
Sabato, 29/08/2009
Testo quotato

Postato originariamente da manvb.net:

Allora, se sono variabili statiche(allocate in fase di compilazione) hanno sempre lo stesso indirizzo relativo(a prescindere dal pc, dal sistema operativo, dalla ram, ecc...). Se invece sono dinamiche si tratta di aree di dati referenziate da un puntatore che vengono allocate con new(in vb.net e c++ ad esempio). New(malloc in c) chiama un api di sistema a cui viene richiesta memoria e che restituisce un puntatore a tale memoria(il puntatore è una variabile statica che contiene l'indirizzo di un'area dinamicha), quindi non è detto che il sistema restituisca sempre la stessa area di memoria, ma questa cambia a causa di vari fattori.
In pratica si, devi ricercare ogni volta la variabile(dinamica), in quanto tu non puoi sapere se la cella di memoria che stai leggendo è una variabile statica(o parte), un puntatore(o parte) o un'area dinamica(o parte), è una cosa comunque molto complicata da fare.



perfetto.. come credevo.. purtroppo.. grazie mille del chiarimento :)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo