mondo hack
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.

Le Basi

Andare in basso

Le Basi Empty Le Basi

Messaggio  Admin Mer Set 01, 2010 12:16 pm

Cos'è¨ un processo?
In un sistema operativo il termine processo definisce un insieme formato da un elenco finito di azioni da eseguire in sequenza e dai dati che vengono elaborati dalle stesse azioni.
Per visualizzare i processi attivi sul vostro PC potete aprire il Task manager premendo in contemporanea Ctrl+Alt+Canc ed andare nella scheda "Processi". Solitamente i processi avranno un'estensione .exe ma potrà essere anche del tipo .bin ecc.

Cos'è un Memory Address?
Un address o indirizzo di memoria, in informatica, è un identificatore univoco per una posizione di memoria alla quale il processore oppure un'altra perifarica possono salvare i dati per poterlo recuperare in seguito.
Nell' Indirizzamento a byte ogni indirizzo identifica un singolo byte di memoria. Dati troppo grandi per essere contenuti in un singolo byte possono risiedere in in più byte occupando una sequenza di indirizzi consecutivi. nal
Per facilitare il fluire dei dati contenuti nelle memorie, il sistema operativo solitamente divide la memoria in pagine, ognuna delle quali contiene un numero predefinito di indirizzi di memoria.

Cos'è Un Pointer? (Wikipedia)
Lo stack pointer (ESP) è, nelle architetture x86 un registro dedicato della CPU che contiene l'indirizzo della locazione di memoria occupata dal top dello stack per permetterne le operazioni di push, che lo incrementerà , e di pop, che farà l'inverso, per permettere le operazioni che implicano l'uso dello stack che seguono la logica LIFO.
Lo stack viene allocato e deallocato continuamente quindi può esser facile perder traccia della sua "testa".
Per ovviare a questo inconveniente esiste il registro dedicato EBP chiamato anche frame pointer o base pointer che punta, per tutta la durata della procedura, alla prima locazione di memoria del record di attivazione in modo che si possa far riferimento al top dello stack in maniera relativa ad essa.

Cos'è il DMA?
Il DMA (Dynamic Memory Allocation) fa cambiare gli offset delle variabili del gioco ogni volta che esso viene caricato. Poichè cambiano soltanto gli offsets delle variabili il DMA può essere diciamo "bypassato". Tutto quello che bisogna fare è utilizzare un debugger (di cui parleremo nelle prossime parti della guida) e modificare il codice del gioco (gamecode) siccome gli offsets del gamecode non cambiano mai. Questo richiede comunque almeno una conoscenza di base del linguaggio assembly.
Proseguendo la guida cercherò di darvi anche queste nozioni fondamentali ma vi consiglio di trovare una buona guida sul linguaggio assembly se si vuole capire a fondo questa parte.

Cos'è un "code injection"?
La tecnica del code injection è molto simile a lavorare con il DMA, tanto che spesso "bypassare" il DMA viene appunto chiamato "code injection".
Spesso il programmatore utilizza le stesse funzioni sia per la macchina che per il giocatore. Per aggirare servirà un debugger in grado di creare un salto (jump) ad una parte pulita della memoria del gioco. Quindi potrai fare tutto quello che vorrai.
Solitamente i registri memorizzano un certo valore quando le funzioni lavorano con il giocatore. Solitamente bisogna rimpiazzare i comandi che sono stati rimossi quando è stato determinato il "jump".

Che cosa sono i pacchetti?
I pacchetti sono ciò che permettono ai giochi online di comunicare con il server. Quando parli al telefono, ad esmepio, la tua voce viene convertita in elettricità , inviata all'altra persona, e quindi riconvertita in suono. I pacchetti li puoi immaginare allo stesso modo.
I pacchetti sono quindi delle informazioni che vengono inviati/ricevuti dal server. I pacchetti possono essere codificati proprio come la nostra voce.
Questi pacchetti possono essere modificati, a volte tramite questi pacchetti si può controllare l'intero gioco oppure la modifica di essi potrebbe essere inutile, questo dipende da molti fattori.

Cosa significa HEX?
HEX sta per "hexadecimal", esso si riferisce al sistema numerico esadecimale (base 16). I valori nella memoria sono rappresentati da numeri in base esadecimale, questo perchè sono più piccoli e più facili da controllare che quelli del sistema decimale. Questo sistema utilizza i numeri da 0 a 9 e le lettere da A ad F.
In informatica si parla spesso disistema binario (in base 2) ma a noi non servirà . Utilizzeremo molto invece il sistema esadecimale.


2.1 [L'Interfaccia]
Bene, iniziamo quindi questa guida analizzando l'interfaccia grafica di Cheat Engine:
Le Basi Interfaccia
Di seguito la legenda delle varie funzioni principali di Cheat Engine con relativa berve spiegazione:

Process List: Permette di visualizzare una lista dei processi attivi sul vostro PC, tramite questo pulsante potrete aprire il processo desiderato per poi utilizzarlo con CE, creare un nuovo processo, aprire un file.

Apri Cheat Table: Questo pulsante permette di aprire tutte le "Cheat Tables" supportate da CE; i formati supportati sono: Cheat Engine tables (*.CET, *.CT2, *.CT3, *.CT), Cheat table XML, GameHack tables (*.GH), Art Money tables (*.AMT).

Salva: Permette di salvare le vostre "Cheat Tables" nei formati elencati precedentemente.

Process: Visualizza il processo a cui Cheat Engine è stato associato.

Progress Bar: La barra di prograsso che vi indicherà lo stato delle scansioni in corso, le scansioni possono richeiedere pochi secondi ma anche parecchi minuti.

First Scan: Dopo aver impostato i parametri della scansione (vedi p14) tramite questo pulsante potrete iniziare la prima scansione.

Next Scan: Qui potrete iniziare le successive scansioni che andranno a diminuire il numero di address trovati fino a risalire a quello che si voleva ottenere (sempre impostando le relative opzioni di scansione).

Undo Scan: Se commettete un errore potrete ritornare alla scansione precedente semplicemente premendo "Undo Scan" senza dover ricominciare dalla prima scansione.

Hex: Se selezionato il valore che inserirete nel campo Value (10) sarà riferito al sistema numerico Esadecimale anzichè decimale.

Value: In questa textbox dovrete inserire il valore dell'address che vorrete ricavare, può anche essere tralasciato impostando "Unknown Initial Value" al punto 11.

Scan Type: In questa combobox potrete scegliere il tipo di scansione che andremo a fare, essa può essere:
Exact Value: Ricerca il valore esatto indicato nel campo Value.
Bigger Than...: Ricerca tutti gli address con valore maggiore di quello indicato.
Smaller Than...: Ricerca tutti gli address con valore minore di quello indicato.
Value Between: Ricerca tutti gli address di valore compreso tra quelli impostati.
Unknown initial value: Valore di partenza non conosciuto, vengono quindi analizzati tutti gli address presenti, qualsiasi valore essi abbiano.
Value Type: Qui andremo ad impostare il tipo di value dell'address da ricercare, esso può essere di 9 tipi più 2 (10 parametri di ricerca):
Binario: In base 2 (es. 10010101110...)
Byte: La più piccola quantità di memoria che un indirizzo può avere (dagli ultimi anni per byte si intendono 8bit).
2 Bytes: 16 bit, sono chiamati anche Word.
4 Bytes: 32 bit, ovvero 2 Word, e quindi sono chiamati anche "double word" o abbreviato Dword.
8 Bytes: 64 bit ovvero 2 double word, sono chiamati anche "quad word".
Float: Numero in virgola mobile (floating point), potrete impostarlo Rounded ovvero arrotondato (dafault oppure extreme), oppure come Truncated cioè troncato senza alcuna approssimazione.
Double: (Precisione doppia, 64 bit) La precisione doppia è molto simile alla singola, in dimensioni maggiori. Puossono essere utilizzati gli stassi parametri elencati per il tipo di dato Float.
Text: Testo, permette di ricercare del testo; la ricerca può essere effetuata case sensitive/insensitive (distingue o no le maiuscole dalle minuscole), unicode/non unicode.
Array of Bytes: Un array o vettore è una struttura dati complessa usata in molti linguaggi di programmazione. Più precisamente, l'array è in genere classificato come un costruttore di tipo: in altre parole, esso consente di definire nuovi tipi di dati a partire da tipi preesistenti.
All: Esegue una scansione su tutti i tipi di formato dal tipo Byte fino al Double.
Custom: Permette di impostare un tipo di dato definito dall'utente.
Address Box: In questa tabella composta da due colonne, una per gli address ed una per i corrispondenti valori, compariranno i risultati delle vostre scansioni e potrenno essere memorizzati nell'altra tabella nella parte inferiore di Cheat Engine semplicemente cliccandoli due volte oppure premendo la freccetta rossa in basso (16) dopo averli selezionati.

Memory Scan Options: Qui potremo impostare ulteriori parametri per le scansioni; possiamo quindi impostare un range di 16 oppure di 32 bit oppure "all" cioè tutti dal primo all'ultimo. Può essere impostata anche l'opzione che vi permetterà di scansionare anche gli address situati nella parte di memoria di sola lettura ed infine potrete anche abilitare l'opzione di mettere in pausa il gioco mentre eseguite la scansione (sconsigliabile nei giochi multiplayer) anche se può provocare improvvisi crash rendendo instabile il processo.

Unrandomezer & SpeedHack: La funzione unrandomizer tenta di rimuovere il fattore "random" (un metodo per simulare il caso), C.E. fa una scansione dialcune "routines" utilizzate solitamente per generare numeri casuali, tuttavia Cheat Engine potrebbe non riuscirci modificando valori sbagliati specialmente se il gioco/programma in questione utilizza dei metodi sconosciuti da C.E..
La funzione SpeedHack serve invece a velocizzare tutti i timer persenti nel processo provocando il noto effetto SpeedHack, cioè se state utilizzando un gioco potrete ad esempio muovervi ed attaccare più velocemente del normale. Il mio consiglio personale è di tralasciare questa funzione e cercare di imparare a fare il tutto senza di essa.

Copy to address list: Questo pulsante vi permetterà di copiare gli address selezionati della tabella 13 nella tabella degli address 19 in modo da poterli modificare e/o freezare (congelare) comodamente.

Memory View: Questo pulsante apre il Memory Viewer, questo strumento fa uso di un Debugger incorporato a Cheat Engine che permette di visualizzare le varie regioni della memoria e l'assembly del processo, può essere utilizzato come un semplice Debugger ma con molte funzioni in più molto utili ed interessanti.

Delete all Addresses: Premendo qui potrete eliminare tutti gli Addresses contenuti nella tabella degli address (19), dopo aver cliccato vi chiederà la conferma.

Address List: Questa tabella servirà a contenere gli address che vorrete monitorare e/o modificare, essa è composta da 5 colonne: La prima colonna partendo da sinistra è Frozen, essa servirà a congelare i valori degli address per fare in modo che un'azione da parte del gioco non li faccia modificare o tornare alla normalità se stati modificati. La seconda colonna è description, una colonna facoltativa nella quale potrete dare un nome ai vostri address come nota (es. address della vita, address della velocità ...). Poi abbiamo le colonne Address, Type e Value dove vedremo rispetivamente e potremo modificare l'address, il tipo di dato ed il valore. Tutti questi paramatri potranno essere modificati in modo molto semplice ed intuitivo facendo doppio click sulla colonna/valore interessato.

Add Address Manually: Da qui potrete inserire degli address manualmente nella vostra tabella, è molto utile per inserire i Pointer di cui parleremo più tardi.

Advanced Options: Qui potrete accedere a delle funzioni avanzate di cheat engine, segnalo in particolare la funzione che permette di creare dei trainer (.exe) in modo davvero facile ed intuitivo. lol!

Admin
Admin

Messaggi : 13
Data di iscrizione : 20.08.10

https://mondohack.forumattivo.com

Torna in alto Andare in basso

Torna in alto


 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.