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

Stato
Discussione chiusa ad ulteriori risposte.

SpeedJack

Super Moderatore
Super Moderatore
18 Febbraio 2010
5,790
74
3,818
1,410
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
 

text

Utente Palladium
28 Dicembre 2010
3,473
200
1,165
1,562
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

SpeedJack

Super Moderatore
Super Moderatore
18 Febbraio 2010
5,790
74
3,818
1,410
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

sghi600

Utente Silver
21 Novembre 2011
10
2
1
50
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

sghi600

Utente Silver
21 Novembre 2011
10
2
1
50
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?
 

SpeedJack

Super Moderatore
Super Moderatore
18 Febbraio 2010
5,790
74
3,818
1,410
Significa che non è riuscito ad ottenere il valore dell'address. I motivi possono essere molti. Posta uno screen.
 

sghi600

Utente Silver
21 Novembre 2011
10
2
1
50
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?
 

SpeedJack

Super Moderatore
Super Moderatore
18 Febbraio 2010
5,790
74
3,818
1,410
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 :)
 

sghi600

Utente Silver
21 Novembre 2011
10
2
1
50
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
 

SpeedJack

Super Moderatore
Super Moderatore
18 Febbraio 2010
5,790
74
3,818
1,410
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/
 

sghi600

Utente Silver
21 Novembre 2011
10
2
1
50
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
 

SpeedJack

Super Moderatore
Super Moderatore
18 Febbraio 2010
5,790
74
3,818
1,410
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).
 

SpeedJack

Super Moderatore
Super Moderatore
18 Febbraio 2010
5,790
74
3,818
1,410
qqeio1.jpg
 

xKeapt

Utente Emerald
5 Luglio 2011
1,170
63
203
518
ti consiglio di usare per il processo se non esiste da erore il Try/Catch/Finaly(XD)*e un consiglio

 

Sekmet

Utente Palladium
8 Maggio 2010
2,504
185
1,377
1,406
Io sono così fesso che so trovare Pointer ecc ma non so come creare un Pointer in C++ per creare un'hack :\
 

SpeedJack

Super Moderatore
Super Moderatore
18 Febbraio 2010
5,790
74
3,818
1,410
Io sono così fesso che so trovare Pointer ecc ma non so come creare un Pointer in C++ per creare un'hack :\
:\
int a = 5;
int pa = &a;
E già così hai creato un pointer :\ con *pa ricevi il valore di a.
Comunque, usa le API WriteProcessMemory e ReadProcessMemory di Windows e scrivere/leggere la memoria del processo di gioco.
 

digger

Utente Silver
27 Gennaio 2010
180
2
26
93
...
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_

NOHYPE

Utente Diamond
24 Maggio 2011
6,679
206
2,435
1,895
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;

Ed per usare i pointer e gli offset

#define ADR_STAMINA 0x0A08F0E
#define OFF1_STAMINA 0x54

*(float*)(OFF1_STAMINA+ADR_STAMINA)=100.0f;
 

digger

Utente Silver
27 Gennaio 2010
180
2
26
93
Ultima modifica:
truee... truee... :)
anche se a voler essere pignolo l'esempio un po' confonde perchè di solito hai l'address di base della struttura (ad es. il player, qualcosa come ADR_PLAYERPTR a cui sommi l'offset dell'adrenalina), nell'esempio tuo hai messo l'offset dell'adrenalina che si somma all'indirizzo dell'adrenalina.
A parte la precisazione da rompiscatole il concetto rimane comunque valido come l'hai scritto
 
Stato
Discussione chiusa ad ulteriori risposte.