Windowsにおけるプロセスメモリの内訳


|-------------------------|
| Dynamic DLLs            |
|-------------------------|
| Environment variables   |
|-------------------------|
|    PEB                  |
|-------------------------|
|  Process heap           |
|-------------------------|
|  Thread 1 stack         |
|-------------------------|
|  Thread 2 stack         |
|-------------------------|
|  Mapped file(s)         |
|  Application data       |
|-------------------------|
|  Executable             |
|-------------------------|

※上記はあくまで一例であり、必ずしも、この順番通りの配置であるとは限らない。Thread stackがExecutableよりも下位のアドレスに配置されることもあり得るし、Mapped fileの内容がプロセス空間全体にまたがっていて、ひとかたまりでない場合もあり得る。

Dynamic linked libraries (DLLs): プロセスによってアドレス空間にロードされる共有ライブラリ(DLL)が格納されている。

Environment variables: 実行パス、一時ディレクトリ、ホームディレクトリなど、プロセスの環境変数が格納されている。

Process Environment Block (PEB): プロセスのフルパス、プロセスのコマンドライン引数、カレントディレクトリ、ヒープ・ポインタ、プロセスのハンドル、プロセスによってロードされるDLLのフルパスなど、プロセスに関する情報が格納されている。

Process heaps: プロセスが受け取る動的な入力情報が格納されている。例えば、Emailやドキュメントの入力情報や、ネットワークソケットの送受信データなど。

Thread stacks: 関数の引数、戻りアドレス、ローカル変数などの情報が格納されている。

Mapped files and application data: Mapped filesにはディスク上のファイルの内容が格納されている。コンフィグ情報やドキュメントデータなどがこれに当たる。Application dataにはプロセスがその目的を達成するために必要な情報が含まれている。Mapped filesとapplication dataの内容はプロセスの内容によって変わってくる。

Executable: コード本体およびアプリケーションの読み取り・書き込み用の変数が格納されている。これらのデータはディスク上では圧縮化または暗号化されている場合もあるが、メモリへのロード時にアンパックされる。

参考
The Art of MEMORY FORENSICS (Wiley出版) ⅡWindows Memory Forensics, 7 Process Memory Internals P.190 - 191

Leave a Reply

Your email address will not be published. Required fields are marked *