Bagaimana cara melihat isi memori RAM? [Tutup]

14

Apakah ada cara untuk melihat isi memori RAM? Dari byte pertama hingga yang terakhir. Saya ingin melihat di mana OS dan semua proses yang berjalan di dalamnya berada di RAM. Apakah ini mungkin?

osta
sumber
1
Sebagai proses pengguna dalam lingkungan memori yang dilindungi , Anda hanya memiliki akses ke salinan ruang memori virtual pengguna. Ruang memori kernel, ruang memori virtual pengguna lain, dan memori fisik yang tidak digunakan semuanya dilindungi dari mata Anda yang mengintip. Di sisi lain, snapshot waktu acak dari SDRAM fisik tidak akan berarti banyak kecuali Anda tahu pemetaan memori virtual.
serbuk gergaji
Memori memori akses acak? Jadi tabel alokasi halaman?
ta.speot.is
Apa yang sebenarnya ingin Anda capai? meta.stackexchange.com/questions/66377/what-is-the-xy-problem
bwDraco
Anda mungkin akan jauh lebih bahagia dengan beberapa alat yang menunjukkan bagaimana memori dialokasikan, vs benar-benar melihat angka 1 dan 0.
Daniel R Hicks
1
itu hanya karena penasaran
osta

Jawaban:

8

Anda dapat menggunakan debugger kernel, yang memungkinkan akses memori "mentah", seperti SoftICE untuk Windows . Anda juga dapat mengonfigurasi GDB untuk bertindak sebagai debugger untuk kernel Linux . Jika mesin virtual adalah opsi, beberapa perangkat lunak virtualisasi mendukung penyimpanan status mesin (termasuk RAM) ke disk, yang kemudian dapat dianalisis lebih lanjut . Namun perlu dicatat bahwa kebanyakan sistem operasi "modern" menggunakan pengacakan tata letak ruang alamat (ASLR). Peta memori fisik sebenarnya dari sistem sengaja difragmentasi untuk membantu mengurangi berbagai masalah keamanan dan eksploitasi (yaitu stack / heap buffer overflow).

Namun, untuk program tertentu yang berjalan dalam sistem operasi modern, Anda dapat memperoleh peta memori logis untuk proses / utas tertentu - selama Anda memiliki simbol dan debugger debugging yang sesuai. Jika Anda menginginkan tampilan keseluruhan, jika perangkat lunak / perangkat keras menggunakan memori virtual , situasinya menjadi jauh lebih kompleks. Sekali lagi meskipun, jika Anda benar-benar menginginkan yang hanya di RAM, lihat paragraf pertama.

Penerobosan
sumber
9

Pada Windows, isi memori fisik dapat diakses melalui \Device\PhysicalMemoryobjek di Object Manager . Ini membutuhkan akses level kernel ke sistem, yang berarti Anda perlu menginstal sebuah program, kemungkinan besar driver mode kernel, untuk mengakses objek ini.

Di Linux, isi memori fisik dapat langsung diakses sebagai data biner dengan membaca /dev/memsebagai root. Lihat Apa / dev / mem? dan mem(4)halaman manual untuk detail lebih lanjut.

Saya tidak yakin mengapa Anda perlu menentukan di mana sistem operasi dan proses berada dalam memori fisik, meskipun ...

bwDraco
sumber
3
Pada Windows, Anda dapat, pada kenyataannya, terbuka \Device\PhysicalMemory(setara dengan /dev/kmem), seperti yang dilakukan oleh RAMMap dan utilitas PhysMem .
user1686
1
Tidak lagi. Pada Server 2003 dan dalam semua versi yang lebih baru, \DevicePhysicalMemoryobjek tidak dapat dibuka dari mode pengguna. RAMmap dan sebagian besar alat sysinternals lainnya termasuk driver mode kernel untuk melakukan bagian dari pekerjaan mereka.
Jamie Hanrahan