RAMメモリの内容を表示する方法はありますか?最初のバイトから最後のバイトまで。OSとその上で実行されているすべてのプロセスがRAMのどこにあるかを確認したいと思います。これは可能ですか?
RAMメモリの内容を表示する方法はありますか?最初のバイトから最後のバイトまで。OSとその上で実行されているすべてのプロセスがRAMのどこにあるかを確認したいと思います。これは可能ですか?
回答:
SoftICE for Windowsのような「生の」メモリアクセスを可能にするカーネルデバッガを使用できます。Linuxカーネルのデバッガーとして動作するようにGDBを構成することもできます。仮想マシンがオプションである場合、一部の仮想化ソフトウェアは、マシンの状態(RAMを含む)をディスクに保存することをサポートしており、これをさらに分析できます。ただし、ほとんどの「最新の」オペレーティングシステムはアドレス空間レイアウトランダム化(ASLR)を使用していることに注意してください。システムの真の物理メモリマップは、さまざまなセキュリティの問題や悪用(スタック / ヒープバッファのオーバーフロー)を軽減するために意図的に断片化されています。
ただし、最新のオペレーティングシステムで実行されている特定のプログラムでは、適切なデバッグシンボルとデバッガーがあれば、特定のプロセス/スレッドの論理メモリマップを取得できます。全体的なビューが必要な場合、ソフトウェア/ハードウェアが仮想メモリを使用していると、状況は劇的に複雑になります。あなたは文字通り何したい場合は、再度しかし、単に RAM上で、最初の段落を参照してください。
Windowsでは、オブジェクトマネージャーの\Device\PhysicalMemory
オブジェクトを介して物理メモリのコンテンツにアクセスできます。これには、システムへのカーネルレベルのアクセスが必要です。つまり、このオブジェクトにアクセスするには、おそらくカーネルモードドライバーであるプログラムをインストールする必要があります。
Linuxでは、物理メモリの内容を直接読み取ることによって、バイナリデータとしてアクセスすることができる/dev/mem
ようにroot
。/ dev / memとはをご覧ください。mem(4)
詳細についてはmanページをご覧ください。
オペレーティングシステムとプロセスが物理メモリのどこにあるのかを判断する必要がある理由はわかりませんが...
\DevicePhysicalMemory
、ユーザーモードからオブジェクトを開くことはできません。RAMmapおよび他のほとんどのsysinternalsツールには、作業の一部を実行するカーネルモードドライバーが含まれています。