Guida [GUIDA] Cheat Engine - Il memory-scanner (by SpeedJack)

Stato
Discussione chiusa ad ulteriori risposte.

SpeedJack

Sviluppatore
Amministratore
18 Febbraio 2010
5,788
74
3,825
1,413
Ultima modifica da un moderatore:
Ecco una guida completa e molto dettagliata all'uso di Cheat Engine.

All'interno dell'archivio .rar troverete anche un video-guida di esempio. Consiglio di guardarlo solo dopo aver terminato il capitolo sul memory-scanning nel testo.

La guida si trova sia in formato .pdf che in formato .docx. Pertanto, per visualizzarla, è necessario avere installato Adobe Reader o Microsoft Word 2007 o 2010. Il video è in formato .wmv.

La guida era già stata scritta per la sezione VB / VB.NET. Ho ripreso parte di quella guida, tolto tutto ciò che riguardava il vb.net, aggiunte una unità in più, e ripostata in questa sezione.

DOWNLOAD GUIDA - MEDIAFIRE

Se poi volete imparare anche a scrivere un'hack da codice Visual Basic .NET, trovate sempre la mia guida in sezione VB / VB.NET:
http://www.inforge.net/community/vb...e-creare-hacks-speedjack-con-video-guida.html


Riporto la prefazione della guida:

Con questa guida impareremo a leggere e a modificare la memoria e non solo. Il testo tratta anche alcune basi del linguaggio assembly (riportando ad alcune pagine web esterne), spiega come funzionano i processi nei sistemi operativi Windows (in modo molto semplificato), come il processore esegue le istruzioni di un programma, eccetera… Inoltre oltre alla modifica normale della memoria viene spiegato anche il code cave e altre tecniche che vi potranno essere utili nella creazione di hacks. Insomma, con questa guida imparerete a lavorare bene con Cheat Engine.

In questa guida non vi fornisco address, pointers o offsets per i vostri giochi, vi insegno invece a trovarli. Quindi scordatevi di poter cercare qui i vostri address.

Durante la guida vengono usati i giochi di Windows e altre applicazioni scaricabili facilmente. Nel video-guida uso anche il gioco Metin2. Uso il client di babau, scaricabile facilmente cercando con Google, per i server privati, perché Metin2 IT è protetto da HackShield. Mi scuso per la scarsa qualità del video.

Il testo, diviso in unità e capitoli, inizia con le premesse di carattere matematico e informatico, per poi passare alle basi del linguaggio assembly. Seguono le unità per il memory-scanning, il debugging e il code-cave. Alla fine viene ripreso tutto dall’inizio, spiegando le funzioni che ogni finestra di Cheat Engine fornisce.

Come prerequisiti non c’è niente di necessario. Ma avere buona conoscenza del funzionamento di un computer e del linguaggio assembly, aiuta moltissimo.


Testo e video-guida sono sotto licenza:


[GUIDA] Cheat Engine - Il memory-scanner by SpeedJack is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
Based on a work at www.inforge.net
 
Io l'ho provato a fare 4-5 volte ma non ci son mai riuscito con questo video,infatti devo capire ancora come funziona bene,specialmente la parte del "Memory View"
Il memory view permette di disassemblare e debuggare la memoria. Esistono disassembler (IDA) e debugger (OllyDBG) molto migliori di quelli che puoi trovare in CE. L'utilità di CE sta sopratutto nella facilità per la ricerca di pointer, code-cave, ecc.
Ad ogni modo, per l'uso del disassembler/debugger, devi conoscere l'assembly.
 
Bravo Speed ;)
P.S. fra pochissimo rilascio l'eseguibile del tutorial di Cheat Engine, in italiano, se vuoi puoi implementarlo alla tua guida ;)
 
  • Mi piace
Reazioni: SunGod
Bravo Speed ;)
P.S. fra pochissimo rilascio l'eseguibile del tutorial di Cheat Engine, in italiano, se vuoi puoi implementarlo alla tua guida ;)

Già in fondo alla guida ho annunciato che rilascerai un tutorial eseguibile. Quando lo avrai rilasciato, inserirò il link in questa discussione ;)
 
  • Mi piace
Reazioni: SunGod
Ottima guida SpeedJack! Mi spiegheresti meglio una cosa? Come fai a fare le somme tra gli address? Per esempio nella guida hai scritto: 004B13D7 + 5B = 004B1432
Anche da altre parti hai riportato queste somme o sottrazioni, mi spieghi come si fanno? Grazie
 
  • Mi piace
Reazioni: SunGod
...
Comunque, usa le API WriteProcessMemory e ReadProcessMemory di Windows e scrivere/leggere la memoria del processo di gioco.

mi permetto di aggiungere un dettaglio, se la hack la fai sotto forma di DLL iniettata non usi Write/ReadProcessMemory ma usi direttamente i puntatori e la dereferenziazione perchè di fatto ti trovi già all'interno del processo stesso del gioco, ad esempio cosi :

#define ADR_STAMINA 0x0A08F0E
...
*(float *)ADR_STAMINA=100.0f;
 
  • Mi piace
Reazioni: Domokun_
Comunque se vuoi darti al reversing studiare assembly non è importante, lo impari stando sul debugger, almeno per me è stato cosi..
Nota che capire un listato di un debugger e scrivere un programma in assembly sono due cose totalmente diverse, reversando non impari a programmare in assembly ma impari la sintassi, le istruzioni e tanta altra roba relativa all'assembly.
 
  • Mi piace
Reazioni: Maestro Yoda
perchè con il pointer scanner mi trova i pointer, ne prendo uno a caso (il primo) e se aggiungo quell'address nella schermata sotto di CE, nella tabella Value ci sta: =?? . Che significa?
 
Significa che non è riuscito ad ottenere il valore dell'address. I motivi possono essere molti. Posta uno screen.
 
ok speedjack, cmq può essere che il valore è contenuto nel server e ancora non è stato inviato al clinet, c'è un modo per decriptarlo o comunque di leggere questo valore anche se sta nel server?
 
ok speedjack, cmq può essere che il valore è contenuto nel server e ancora non è stato inviato al clinet, c'è un modo per decriptarlo o comunque di leggere questo valore anche se sta nel server?
Ciò che dici non ha senso :D Il memory-scanner analizza semplicemente la memoria. Se è nel server allora non esiste nessuna locazione di memoria contenente il valore. Non dovresti riuscire neppure a trovare quell'address. Posta uno screen e vediamo :)
 
ok speedjack, nei prossimi giorni posterò lo screen dato che sto facendo tutto nel pc di un amico...ho provato in diversi giochi sia con il client che con i giochi in flash, e in entrambi mi capitano address con value =?, il mio amico mi ha detto che gli capita anche con pes2012 online ma io non ho provato. Intanto se hai qualche idea su come fare per scoprire il valore che si nasconde dietro il punto interrogativo te ne sarei molto grato! Ciao
 
ke poi speed, una volta trovato il pointer che si deve fare? a cosa ci serve?
Questa guida spiega SOLO come usare cheat engine. Non come creare hack.
Se vuoi creare hack devi scegliere anche un linguaggio di programmazione in cui programmare tale hack. Puoi usare vari linguaggi. Se scegli il Visual Basic trovi una mia guida su come creare hack in rilievo in sezione VB / VB.NET.
Però, qualsiasi linguaggio scegli, prima devi imparare il linguaggio (per il Visual Basic puoi seguire questa guida: Totem's Lair: Guida al Visual Basic .NET 2005/2008) altrimenti non riuscirai mai a fare hack serie.
Inoltre per fare delle buone hack è necessario anche conoscere l'assembly. Ottima è la guida della Ra.M. Software: http://www.virgilio.it/ramsoft/
 
azz, io non capisco niente di programmazione...pensavo bastasse modificare il value. Vedrò un po cosa riesco a fare, ti rifaccio la domanda di prima..se hai qualche idea su come fare a scoprire il value che si nasconde dietro il punto interrogativo mi saresti di grande aiuto! Intanto ti ringrazio per la tua disponibilità..Ciao
 
Non è possibile. CE mostra un punto interrogativo se l'area di memoria non può essere letta...con tutta probabilità stai sbagliando qualcosa, ecco perché ti chiedevo uno screen.
Comunque sì, basta anche modificare un valore, ma:
1- Allora è inutile cercare i puntatori (servono solo per creare hack).
2- Non crei un'hack e quindi ogni volta dovresti riaprire CE, ricercare l'address che vuoi modificare e rimodificarlo.
Quindi se vuoi creare un'hack, un linguaggio di programmazione è necessario (basta studiarlo. Il Visual Basic ad esempio va bene, la guida di Totem è ottima), e inoltre, se vuoi creare ottime hack, hai bisogno anche dell'assembly (la guida della Ra.M. Software è comprensibile benissimo anche ai novizi dell'informatica).
 
qqeio1.jpg
 
ti consiglio di usare per il processo se non esiste da erore il Try/Catch/Finaly(XD)*e un consiglio

 
Io sono così fesso che so trovare Pointer ecc ma non so come creare un Pointer in C++ per creare un'hack :\
 
Stato
Discussione chiusa ad ulteriori risposte.