Newsgroup: it.comp.programmare.win32
Titolo: Trovare un programma nella memoria

ciao a tutti.
conosco un po' di c++ e volevo fare una specie di trainer(in c++) per un
giochino
che ho fatto tempo fa in visualbasic.
io stavo pensando di cercare nella ram dove sono memorizzate le variabili
del giochino,e poi modificarle ma come faccio a trovarle??
grazie a chi mi risponde

 variabili del giochino,e poi modificarle ma come faccio a trovarle?? 
prima di tutto, apri il processo del gioco con OpenProcess, per poterlo 
manipolare. Poi trova tutti i suoi thread (flussi di esecuzione) con le 
funzioni CreateToolhelp32Snapshot, Thread32First e Thread32Next, aprili 
con OpenThread e mettili in pausa con SuspendThread. Questo impedirà al 
gioco di modificare le variabili. Per leggere le variabili, trova tutte 
le zone di memoria allocate usando VirtualQueryEx. Come primo indirizzo 
usa il valore del campo lpMinimumApplicationAddress della struttura che 
ti vien ritornata da GetSystemInfo. Per sapere se una zona di memoria è  
allocata, devi esaminare la struttura MEMORY_BASIC_INFORMATION che vien 
ritornata da VirtualQueryEx: se State non è MEM_COMMIT, non è allocata, 
e non può contenere una variabile. Altrimenti, devi leggere la zona con 
ReadProcessMemory, e vedere se contiene la variabile che cerchi. Se sì, 
ti salvi in una lista l'indirizzo a cui si trova, per ricontrollarlo in 
seguito. Continua a chiamare VirtualQueryEx, fino ad esaminare tutta la 
memoria del processo - cioè, quando il puntatore raggiunge il valore di 
lpMaximumApplicationAddress nella struttura ritornata da GetSystemInfo. 
A questo punto, puoi togliere i thread dalla pausa usando ResumeThread. 
Gioca un po' finchè la variabile non cambia valore, e riprendi tutto da 
capo. Stavolta hai già una lista di indirizzi probabili, però: non devi 
leggere l'intera memoria del processo, ma solo quei valori, per cercare 
quello che ha il nuovo valore. Togli dalla lista tutti quelli che *non* 
hanno il nuovo valore, e continua finchè non rimane un solo indirizzo
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.2. C, C++ and ASM developers
                               and beta testers are welcome!

 ha scritto nel messaggio
news:Xns93D9DDCA...@127.0.0.1...
[cutto tutto]
lavoraccio che fanno i diversi cheat dei giochi ... in cui vai a barare sui
punti, vita o altre amenita' ...
per fregare questo metodo basta continuare a tenere dinamica l'allocazione,
cioe' ad ogni tot cambiamenti della variabile crei una nuova allocazione ci
copi il valore e distruggi la vecchia, cosi' facendo i vari trucchi esterni
tengono un puntatore che ora non punta piu' alla tua var ma a qualcos'altro
e quindi faresti solo dei macelli modificando il valore ;-) ma questi sono
truccazzi da cheterone e da un impedito che non riesce a finire i giochi
ciofeca che fanno oggi (i veri giochi difficilissimi sono es:ghosts and
gouls e gouls and gosts, veri giochi proibitivi da finire ... e mangia soldi
in salagiochi, meno male che c'e' il mame :-p)
ah ora che mi viene in mente c'e' anche un modo in piu' per non far barare
sul valore ... tenere piu' var memorizzate in memoria con un tot
spiazzamento e poi fare i test se una solo e' cambiata all'ora uno sta
barando, o tenerla in una stringa crittata da ricontrollare ogni tanto ... o
altri modi che rendono la vita un incubo a chi tenta di barare ... (ameno
che non siano dei geni dell'inverse difficilmente ti scovano il metodo, poi
dato che disolito le patch escono ogni 2 mesi anche un inverse eng. si stufa
di ricercare tutte le modifiche da effettuare per rendere dinuovo funzionale
il tutto (questo non succede sui giochi che hanno una penetrazione del
mercato molto grande e che vengono patchati poco spesso, vedasi i vari HL
che oltre ad essere patchati poco per i vari cheat sono pure non patchati su
vari buchi di uncheked buffer !!!)
ciao

grazie a tutti

 o altri modi che rendono la vita un incubo a chi tenta di barare ...
a che pro? giusto cosě per farsi quattro risate e sprecare cicli di CPU 
a gratis?


 a gratis?
no ... molti giochi ormai hanno tali metodi per rendere il gioco leale anche
in single player ... (molti vabbe hanno pure i cheat built in :-p) alcuni
che mi ricordo sono: Starcraft, Warcraft x (almeno gli ultimi 2), poi dark
earth (una avventura grafica che mi ha richiesto molti tentativi per provare
a finirla senza trucchi a livello medio), poi non mi ricordo ... cmq li
usavo spesso quei programmi di cheat a ricerca in memoria ... quindi mi
rendevo conto anche quali giochi avevano modalita' di anti baro :-p, e ti
assicuro che cercavano proprio tutto, int virgola mobile aree dati che
subivano tot cambiamenti in tot tempo ecc ... quindi gestivano proprio
l'analisi completa.
ciao

qui non ci siamo capiti...
non sto cercando di taroccare una partita on-line a quake 3, sto cercando di
modificare le variabili di uno stupido giochino fatto con 30 righe di codice
basic...

 ha scritto nel messaggio
news:VlR%a.247532$Ny5.7...@twister2.libero.it...

guarda che la risposta tu l'hai gia' avuta ... io e juliet stavamo solo
divagando sul tema ...
ciao

 con 30 righe di codice basic...
leggi il mio messaggio. Quello che descrivo è il metodo classico per il 
training di giochi. Tutto parte di lì
