web-dev-qa-db-ja.com

RAMメモリの内容を確認する方法は?

RAMメモリの内容を確認する方法はありますか?最初のバイトから最後のバイトまで。OSとその上で実行されているすべてのプロセスがどこにあるのかを確認したいRAM。これは可能ですか?

14
osta

SoftICE for Windows のような「生の」メモリアクセスを可能にするカーネルデバッガを使用できます。 Linuxカーネルのデバッガ として機能するようにGDBを設定することもできます。仮想マシンがオプションの場合、一部の仮想化ソフトウェアは、マシンの状態(RAMを含む)をディスクに保存することをサポートします。これは、 さらに分析 にすることができます。ただし、ほとんどの「最新の」オペレーティングシステムは アドレススペースレイアウトのランダム化 (ASLR)を使用することに注意してください。システムの実際の物理メモリマップは意図的に断片化されており、さまざまなセキュリティの問題や悪用を軽減するのに役立ちます(つまり、 stack / heap バッファオーバーフロー)。

ただし、最新のオペレーティングシステムで実行されている特定のプログラムについては、適切なデバッグシンボルとデバッガがあれば、特定のプロセス/スレッドの論理メモリマップを取得できます。全体的なビューが必要な場合、ソフトウェア/ハードウェアが 仮想メモリ を使用すると、状況は大幅に複雑になります。繰り返しますが、RAMにjustが文字通り必要な場合は、最初の段落を参照してください。

8
Breakthrough

Windowsでは、物理メモリの内容には Object Manager の_\Device\PhysicalMemory_オブジェクトを介してアクセスできます。これには、システムへのカーネルレベルのアクセスが必要です。つまり、このオブジェクトにアクセスするには、プログラム(おそらくカーネルモードドライバー)をインストールする必要があります。

Linuxでは、物理メモリの内容は、_/dev/mem_をrootとして読み取ることにより、バイナリデータとして直接アクセスできます。詳細は / dev/memとは および mem(4) のマニュアルページを参照してください。

ただし、オペレーティングシステムとプロセスが物理メモリのどこにあるのかを判断する必要がある理由はわかりませんが...

9
bwDraco