Domanda Inizio del un percorso da programmatori di cheat

cilibe56

Utente Bronze
18 Dicembre 2020
26
8
1
23
Salve a tutti, incominciamo con dire che suono nuovo in questo ambito quindo ora vi elencherò le uniche cose che ho appreso tramite una veloce ricerca:
1) Non c'è un linguaggio preciso per scrivere cheat;
2) L'assebly è importante per capirne e modificare la memoria di un gioco;
Prima : domanda da classico neofita è come io posso iniziare diciamo che come linguaggio sono idirizzato nel C++ e non conosco neanche una minima cosa dell'assembly.
Seconda : Quale tools oltre a Cheat engine potrebbe essermi utile?
Grazie a tutti <3.
 
ciao @cilibe56 se vuoi imparare a programmare puoi dare un'occhiata a questa discussione https://www.inforge.net/forum/threads/come-imparare-a-programmare-partendo-da-zero.613516/ se sei intenzionare ad entrare nel mondo della sicurezza informatica ti consiglio di imparare prima a programmare (e anche bene).
Cheat Engine è un programma molto potente ma se vuoi entrare a far parte di questo mondo (affascinante quanto complesso) non ti troverai quasi mai ad utilizzare programmi pronti all'uso.
C++ è un ottimo linguaggio con cui partire, almeno secondo me, ma c'è chi preferisce Python :)
 
Il cookbook del buon sviluppatore di cheats include diversi ingredienti:
  • Impiego del reverse engineering (include saper leggere e capire assembly)
  • Conoscenza del sistema operativo, delle sue API di lettura/scrittura della memoria su altri processi
  • Conoscenza del formato PE, del loader PE usato dall'OS, delle tecniche di injection, delle contromisure all'injection usate da anti-cheat
  • Per i cheat più difficili serve saper sviluppare driver del kernel per poter combattere ad armi pari con certi anti-cheat
Hai chiesto tools del mestiere ma in realtà ognuno usa ciò che vuole, senza dubbio ti servirà un debugger (es. IDA, x64dbg, windbg...) e magari un hex editor (es. HxD), utility per file PE (es. petools, CFF...), o anche qualcosa simile a cheat engine, ne esistono diversi.

Il mio consiglio è di iniziare piano, non gettarti sul gioco multiplayer del momento con anti-cheat kernel, piuttosto prendi un gioco opensource, compilalo e poi cerca di programmare un cheat usando i vari tool, paragonando l'assembly col sorgente corrispettivo e il layout in memoria delle variabili dichiarate.
 
  • Mi piace
Reazioni: cilibe56
Hai tutto il mio sostegno e della community, è una nobilissima arte pure remunerativa a certi livelli , e poi per tanti anni è stato il marchio di fabbrica di inforge .

Non mastico da molto , non so se AutoIt è ancora valido ma ai tempi si usava molto per creare bot o aimbot ( molto primitivi )


Seguo xon interesse
 
Non ne so molto, ma sia CryptoCat che LiveOverflow hanno fatto delle serie su YouTube relative al game hacking e lo sviluppo di cheats. Sono abbastanza specifiche (e ovviamente in inglese), ma credo che possano darti un'idea su tutto il processo di reversing e sviluppo:


Vedi: https://www.youtube.com/playlist?list=PLmqenIp2RQcg0x2mDAyL2MC23DAGcCR9b



Vedi: https://www.youtube.com/playlist?list=PLhixgUqwRTjwvBI-hmbZ2rpkAl4lutnJG



Vedi: https://www.youtube.com/playlist?list=PLhixgUqwRTjzzBeFSHXrw9DnQtssdAwgG
 
Ok grazie e tutti ora ho le idee più chiare ma la mia domanda è:
Ho scaricato pwn il gioco in questione dell'ultimo video linkato come faccio a cercare il codice hex che per esempio corrisponde alla vita
 
Ok grazie e tutti ora ho le idee più chiare ma la mia domanda è:
Ho scaricato pwn il gioco in questione dell'ultimo video linkato come faccio a cercare il codice hex che per esempio corrisponde alla vita
Una strategia per fare in fretta è che potresti tirare a indovinare: ipotizzi che il gioco conservi la vita in una variabile numero intero a 32 bit e che 100 sia il massimo, mentre quando <= 0 perdi. Il metodo in stile cheat engine è che scansioni la memoria del processo del gioco cercando 4 byte che rappresentano 0x00000064 (100 in hex). Però nella memoria del processo c'è tantissima roba quindi difficilmente troverai una sola area con quel valore, per "ridurre il cerchio" potresti far scendere la barra della salute di proposito, mettere in pausa e fare una nuova scansione per vedere quale delle variabili trovate in precedenza è diminuita in modo consistente. Puoi verificare se hai trovato quello giusto dall'interfaccia grafica, modificando o freezando il valore e vedere le conseguenze in gioco.

Da lì puoi cercare i puntatori, disassemblare il codice e vedere come quel dato viene usato. Ovviamente il gioco potrebbe gestire il valore in tutt'altro modo però questo può essere un primo approccio perché in un gioco c'è una montagna di codice quindi vuoi provare prima una strategia che ti permetta di trovare il codice che ti interessa in fretta perché l'ultima spiaggia è trovarlo tra megabyte di binario leggendo assembly senza simboli. Con l'esperienza avrai più strategie e soprattutto l'intuizione per dove andare a cercare le cose.
 
  • Mi piace
Reazioni: cilibe56
Ultima modifica:
Una strategia per fare in fretta è che potresti tirare a indovinare: ipotizzi che il gioco conservi la vita in una variabile numero intero a 32 bit e che 100 sia il massimo, mentre quando <= 0 perdi. Il metodo in stile cheat engine è che scansioni la memoria del processo del gioco cercando 4 byte che rappresentano 0x00000064 (100 in hex). Però nella memoria del processo c'è tantissima roba quindi difficilmente troverai una sola area con quel valore, per "ridurre il cerchio" potresti far scendere la barra della salute di proposito, mettere in pausa e fare una nuova scansione per vedere quale delle variabili trovate in precedenza è diminuita in modo consistente. Puoi verificare se hai trovato quello giusto dall'interfaccia grafica, modificando o freezando il valore e vedere le conseguenze in gioco.

Da lì puoi cercare i puntatori, disassemblare il codice e vedere come quel dato viene usato. Ovviamente il gioco potrebbe gestire il valore in tutt'altro modo però questo può essere un primo approccio perché in un gioco c'è una montagna di codice quindi vuoi provare prima una strategia che ti permetta di trovare il codice che ti interessa in fretta perché l'ultima spiaggia è trovarlo tra megabyte di binario leggendo assembly senza simboli. Con l'esperienza avrai più strategie e soprattutto l'intuizione per dove andare a cercare le cose.
Sei stato molto chiaro grazie mille.
Messaggio unito automaticamente:

Una strategia per fare in fretta è che potresti tirare a indovinare: ipotizzi che il gioco conservi la vita in una variabile numero intero a 32 bit e che 100 sia il massimo, mentre quando <= 0 perdi. Il metodo in stile cheat engine è che scansioni la memoria del processo del gioco cercando 4 byte che rappresentano 0x00000064 (100 in hex). Però nella memoria del processo c'è tantissima roba quindi difficilmente troverai una sola area con quel valore, per "ridurre il cerchio" potresti far scendere la barra della salute di proposito, mettere in pausa e fare una nuova scansione per vedere quale delle variabili trovate in precedenza è diminuita in modo consistente. Puoi verificare se hai trovato quello giusto dall'interfaccia grafica, modificando o freezando il valore e vedere le conseguenze in gioco.

Da lì puoi cercare i puntatori, disassemblare il codice e vedere come quel dato viene usato. Ovviamente il gioco potrebbe gestire il valore in tutt'altro modo però questo può essere un primo approccio perché in un gioco c'è una montagna di codice quindi vuoi provare prima una strategia che ti permetta di trovare il codice che ti interessa in fretta perché l'ultima spiaggia è trovarlo tra megabyte di binario leggendo assembly senza simboli. Con l'esperienza avrai più strategie e soprattutto l'intuizione per dove andare a cercare le cose.
Ok sto facendo molti progressi nel gioco in questione ho freezato il mana così da non finirlo idem per la vita, facendo così anche per le ammunizioni soldi , ecc ora ho un dubbio se io devo attraversare un muro, una sorta di NoClip a me che informazione serve ? (Ho provato a sperimentare e a giocare un po' con una variabile che viene sempre aggiornata dal client e mandata al server ma non va)
 
Se vuoi passare attraverso i muri devi necessariamente fare reversing del codice e trovare un modo per disattivare le collisioni, non puoi arrivarci cercando un valore nella memoria. Per riuscirci devi capirne di reversing e devi anche saperne un minimo di sviluppo di videogiochi, per avere anche solo un idea di come possano essere fatte le funzioni che gestiscono le collisioni in gioco. Per non andare troppo off-topic se vuoi approfondire ti chiedo di aprire un nuovo thread.