Domanda Pointer e offsets

Il base address è un indirizzo che funge da punto di riferimento per altri indirizzi. Ad esempio potrebbe indicare l'inizio di un programma, o nello specifico l'istruzione per definire un oggetto.
Tu stai cercando una soluzione alla casualizzazione dello spazio degli indirizzi (Address Space Layout Randomization - TL;DR: vuoi trovare l'indirizzo di memoria nuovo al riavvio dell'eseguibile), ed il tuo programma ti sta offrendo un meccanismo semplificato per trovare un indirizzo statico.
Hai inserito nel programma un indirizzo per la scansione, e viene eseguita la scansione di questo indirizzo per trovare tutti i puntatori che puntano ad esso. Non si ferma finchè non trova un indirizzo statico o un indirizzo relativo all'indirizzo di base di un modulo caricato dal programma.
Insomma, penetra a forza bruta in tutti i percorsi dei puntatori in base ai parametri che inserisci. Ci sono solo due motivi per cui lo utilizzi: 1.) Non hai idea di quello che stai facendo e non sai cosa sia il reverse engineering 2.) Sei troppo pigro, ma in questo caso non dovresti fare quello che stai facendo.

Di conseguenza quello è un puntatore multilivello ed è: [[[[["TestDrive2.exe"+00C...]+11C]+6C]+164]+8]+60, dereferenziandolo (con *p) avrai 345 (valore di 0x17B64CB4). 0x17B64CB4 è l'indirizzo al quale punta il puntatore ((void *)p).
"TestDrive2.exe"+00C... è il base address di un oggetto.
 
  • Mi piace
Reazioni: 0xbro

Yesn00

Utente Iron
17 Maggio 2021
10
2
2
15
Ho usato pointerscanner di Cheat Engine ma oltre ad aver trovato 2 offsets dovrei trovare pure il pointer e il BaseAddress, dove sono? Del tipo in questa foto tra quelli che ho sottolineato qual’è il pointer e quale il baseaddress?
E75EAD4D-4128-4CB1-A57E-8945A4974394.jpeg
 
Ok, quello che volevo sapere è il baseaddress grazie. Comunque ho iniziato da poco a seguire le guide quindi nessuna delle due xD. So cercare gli offsets “manualmente” ma volevo vedere se funzionava bene anche lo scanner