Come vedere il contenuto della memoria RAM? [chiuso]


14

C'è un modo per vedere il contenuto della memoria RAM? Dal primo byte fino all'ultimo. Vorrei vedere dove si trovano il sistema operativo e tutti i processi in esecuzione su di esso nella RAM. È possibile?


1
Come processo utente in un ambiente di memoria protetto , hai accesso solo alla copia dell'utente del suo spazio di memoria virtuale. Lo spazio di memoria del kernel, lo spazio di memoria virtuale di altri utenti e la memoria fisica inutilizzata sono tutti protetti dai tuoi occhi indiscreti. D'altra parte, un'istantanea casuale nel tempo di SDRAM fisica non significherà molto se non si conoscono i mapping di memoria virtuale.
segatura,

Memoria di memoria ad accesso casuale? Quindi la tabella di allocazione della pagina?
ta.speot.is

Cosa stai cercando di realizzare esattamente? meta.stackexchange.com/questions/66377/what-is-the-xy-problem
bwDraco

Probabilmente saresti molto più felice con uno strumento che mostra come viene allocata la memoria, rispetto a 1 e 0.
Daniel R Hicks,

1
era solo per curiosità
osta

Risposte:


8

È possibile utilizzare un debugger del kernel, che consentirebbe l'accesso alla memoria "raw", come SoftICE per Windows . Puoi anche configurare GDB in modo che funga da debugger per il kernel Linux . Se una macchina virtuale è un'opzione, alcuni software di virtualizzazione supportano il salvataggio dello stato della macchina (compresa la RAM) su disco, che può quindi essere ulteriormente analizzato . Va notato, tuttavia, che la maggior parte dei sistemi operativi "moderni" utilizzano la randomizzazione del layout dello spazio degli indirizzi (ASLR). La vera mappa della memoria fisica del sistema è volutamente frammentata per aiutare a mitigare vari problemi di sicurezza e exploit (es . Overflow del buffer stack / heap ).

Per un determinato programma in esecuzione in un moderno sistema operativo, tuttavia, è possibile ottenere una mappa di memoria logica per un determinato processo / thread, purché si disponga dei simboli e del debugger appropriati. Se si desidera una vista generale, se il software / hardware utilizza la memoria virtuale , la situazione diventa drasticamente più complessa. Ancora una volta, però, se vuoi letteralmente ciò che è solo sulla RAM, vedi il primo paragrafo.


9

Su Windows, è possibile accedere al contenuto della memoria fisica tramite l' \Device\PhysicalMemoryoggetto nel Gestore oggetti . Ciò richiede l'accesso a livello di kernel al sistema, il che significa che sarebbe necessario installare un programma, molto probabilmente un driver in modalità kernel, per accedere a questo oggetto.

Su Linux, è possibile accedere direttamente al contenuto della memoria fisica come dati binari leggendo /dev/memcome root. Vedi Cos'è / dev / mem? e la mem(4)pagina man per maggiori dettagli.

Non sono sicuro del motivo per cui è necessario determinare dove si trovano il sistema operativo e i processi nella memoria fisica, sebbene ...


3
Su Windows, infatti, è possibile aprire \Device\PhysicalMemory(equivalenti a /dev/kmem), come fanno le utility RAMMap e PhysMem .
user1686

1
Non più. A partire da Server 2003 e in tutte le versioni successive, l' \DevicePhysicalMemoryoggetto non può essere aperto dalla modalità utente. RAMmap e la maggior parte degli altri strumenti sysinternals includono un driver in modalità kernel per svolgere quella parte del loro lavoro.
Jamie Hanrahan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.