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?
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?
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.
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 ...
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.
Jawaban:
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.
sumber
Pada Windows, isi memori fisik dapat diakses melalui
\Device\PhysicalMemory
objek 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/mem
sebagairoot
. Lihat Apa / dev / mem? danmem(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 ...
sumber
\Device\PhysicalMemory
(setara dengan/dev/kmem
), seperti yang dilakukan oleh RAMMap dan utilitas PhysMem .\DevicePhysicalMemory
objek tidak dapat dibuka dari mode pengguna. RAMmap dan sebagian besar alat sysinternals lainnya termasuk driver mode kernel untuk melakukan bagian dari pekerjaan mereka.