Windows: memory-mapped fileの中身を直接見る

Windows APIの CreateFileMapping ではファイルハンドルに INVALID_HANDLE_VALUE を渡すと実在しないファイルをmemory-mapped fileとして扱うことができる。たとえば次のコードを実行すると MappedFileTest という名前でmemory-mapped fileが作られる。

CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 512, "MappedFileTest");

しかし、ファイルの実体がディスク上にないため1直接ファイルを開いて中身のデータを見るというのができない。 簡単に見る方法はないかなと探したところ、Process Hacker にその機能があった。

対象プロセスのプロパティの "Handles" タブを開くとその中に memory-mapped fileが Section というカテゴリで存在する。コンテキストメニューから "Read Write Memory" を選択すると中身のバイナリデータを直接見れる!すごい!

f:id:castaneai:20220116174009p:plain

このデータをそのままバイナリファイルとして保存もできるので、バイナリエディタに移して解析することも可能。 Process Hacker、本当に便利ソフトです。


  1. どこかにあるのかもしれないが、場所がわからない