# Cheat Engine

Cheat Engine, comunemente abbreviato in CE, è un software open source che permette la scansione della memoria di un altro programma e inoltre ha funzioni di debugger ed editor esadecimale.
È sviluppato da Eric Heijnen ("Dark Byte") per il sistema operativo Windows ed è utilizzato in modo particolare per barare nei videogiochi e a volte viene modificato e ricompilato per eludere i rilevamenti. Questo programma è simile a "Memory Hacking Software" di L. Spiro, TSearch e ArtMoney.
CE opera cercando, nella memoria del processo selezionato, un valore iniziale immesso dall'utente (per esempio il numero delle 'Munizioni') con un'ampia gamma di opzioni e al termine memorizza gli indirizzi trovati contenenti quel valore. Nel processo in esame si modifica il valore cercato (sparando qualche colpo) e si ripete la scansione, con il nuovo valore (di Munizioni), nelle locazioni precedentemente memorizzate tentando alla fine di isolare l'unico indirizzo probabile.
Tramite CE è anche possibile creare dei Trainers autonomi che possono funzionare indipendentemente da esso.

## Caratteristiche

CE può visualizzare il disassemblato della memoria di un processo e di effettuare modifiche per dare vantaggi all'utente come salute, tempo o munizioni infinite in un videogioco. Ha anche alcuni strumenti di manipolazione Direct3D, permettendo di vedere attraverso i muri, zoomare in avanti o indietro e con qualche configurazione avanzata permette, a CE , di spostare il mouse per voi per ottenere una certa texture nel centro dello schermo. Questo è comunemente utilizzato per creare aimbots. CE può anche iniettare codice in altri processi, ma così facendo può provocare l'antivirus a identificarlo come un virus. Ci sono versioni che evitano questa falsa identificazione a costo di molte funzioni (quelle che si basano su iniezione di codice). La ragione più comune per queste false identificazioni è che CE fa uso di alcune tecniche utilizzate anche in rootkit e trojan per ottenere l'accesso a parti sensibili del sistema, e perché alcuni file eseguibili sono troppo piccoli (16KB o meno), e quindi vengono rilevati e contrassegnati come sospetti. Le nuove versioni di CE hanno meno probabilità di essere bloccati da programmi antivirus e così caratteristiche come l'inserimento di codice possono essere utilizzate senza problemi. A partire dalla versione 6.1, CE può produrre Game Trainers per i giochi più comuni. Anche se i Trainers così creati sono in genere troppo grandi per i fini previsti e generalmente vengono utilizzati solo a scopo di test, alcuni di essi sono stati comunque distribuiti come versioni "definitive".

## Implementazioni

CE esiste in due diverse implementazioni, Cheat Engine Delphi e Cheat Engine Lazarus. Cheat Engine Delphi è principalmente per le versioni a 32 bit di Windows XP. Cheat Engine Lazarus è progettato espressamente per le versioni 32 e 64 bit di Windows Vista. CE è, con l'eccezione del modulo del Kernel, scritto interamente in Object Pascal. CE espone un'interfaccia per il suo driver di periferica con dbk32.dll, un wrapper che gestisce sia il caricamento che l'inizializzazione del driver richiamando funzioni alternative del modulo Kernel di Windows. A causa di un bug di programmazione in Lazarus circa l'utilizzo dei blocchi di dichiarazione try e except, in Cheat Engine Lazarus è stato rimosso l'uso della librearia dbk32.dll e le funzioni del driver sono state integrate nell'eseguibile principale. Il modulo del Kernel, mentre non è essenziale per il normale utilizzo di CE può essere proficuamente utilizzato per impostare i punti di interruzione hardware e bypassare gli agganci delle API in Ring 3 e anche alcuni in Ring 0. Esso è compilato con il Kit di Sviluppo Driver di Windows (Windows Driver Development Kit) ed è scritto in C. Cheat Engine Lazarus ha la possibilità di caricare il driver di periferica non firmati a 64 bit su Windows Vista x64, utilizzando DBVM, una macchina virtuale degli stessi sviluppatori che consente l'accesso allo spazio del Kernel in modalità utente. Ciò viene usato per allocare memoria non paginata in modalità Kernel, caricando manualmente l'immagine eseguibile, e creando un thread di sistema a DriverEntry. Tuttavia, poiché i parametri DriverEntry non sono realmente validi, il driver deve essere modificato per DBVM. CE è progettato e sviluppato con un'architettura a plugin per coloro che non desiderano condividere con la comunità il proprio codice sorgente. I plugin sono generalmente usati per giochi con caratteristiche specifiche, così come l'intento dichiarato di CE è quello di essere un generico strumento per barare nei videogiochi. Questi plugin possono essere reperiti sul sito di Cheat Engine, in altri siti di gioco e in forum più o meno specifici.

## Tavole dei trucchi

Il programma permette ai suoi utenti di condividere indirizzi, posizioni di codice e script dei trucchi con altri utenti della comunità avvalendosi di apposite tabelle. Cheat Tables è un formato di file utilizzato da CE per memorizzare dati degli indirizzi dei trucchi, script e posizioni del codice, assegnando al relativo file l'estensione CT. L'utilizzo di queste tabelle è semplice e comporta semplicemente l'apertura del file, tramite CE, per abilitare i trucchi memorizzati all'interno di esso. La possibilità di salvare e condividere le Tabelle dei trucchi ha fatto nascere una vasta comunità online per la condivisione di questi file tramite il forum di Cheat Engine che ha una sezione appositamente dedicata.