Molti strumenti di analisi cercano strutture di dati noti (cioè modelli) in memoria che indicano un particolare tipo di informazioni.
Ad esempio, la memoria malloc'd ha dati di intestazione (e talvolta di trailer) che puntano in avanti e indietro nella memoria adiacente alla memoria. I puntatori di memoria liberi possono saltare in memoria se non sono consolidati / coalizzati.
Le applicazioni Windows C ++ hanno la nozione di classi e un puntatore "this", che punta a una classe. La struttura delle classi C ++ è nota, quindi quando si trova uno di questi puntatori è possibile ricavare molte informazioni sulla classe. Se si tratta di una classe / tipo di dati noti, può essere analizzata in modo relativamente semplice.
I file aperti in memoria possono essere scoperti dalle loro "firme dei file" (di solito i primi 3 o così i byte del file). Se vengono rilevati, è possibile eseguire alcune analisi rapide per determinare se si tratta di un file legittimo di quel tipo o se è stato un caso di fortuna che quei byte si siano verificati.
Quindi, in generale, molti strumenti di analisi della memoria cercano modelli noti in memoria e / o si agganciano a strutture dati chiave all'interno del kernel e quindi analizzano la memoria da lì. Una volta individuate le aree di codice, è possibile "disassemblarle" e trovare riferimenti (puntatori) ad altre regioni della memoria. E seguendo quelli puoi trovare altre strutture di dati.
Spero di esserne utile.