Windows で、あるプロセスのOS上のAPIコール等をトラッキングする。

投稿日:2009年12月12日

マイクロソフトから、Process Monitor と言うツールが提供されていた。

ダンロードとインストール

以下のマイクロソフトのサイトから、ダウンロードして展開すると単体のバイナリが出てくる。

Process Monitor

インストーラー等は無く、解析ツールとして使いやすいものになっている。

ツールの概要

マイクロソフトのサイトによると、「ファイルシステム、レジストリ、プロセスおよびスレッドの活動をリアルタイムで表示する」とある。
Filemon / Regmon を統合したツールとあるが、Filemon / Regmon のページに行くと Process Monitor に統合されました。とのメッセージがある。

簡単に使ってみた感じだと、OS上にあるプロセスがファイルにアクセスしたり、レジストリにアクセスしたりという活動が OS の APIレベルで確認できる。

普通に起動するとOS上の全てのプロセスの動きをトラッキングするので、もの凄い数のログが出る。
そのため、まず起動したら、Ctrl + E でキャプチャーを停止する。その後、自分の観察したいプロセスだけを対象にしてキャプチャーを開始する(正確には興味のあるものだけフィルターできる)と良い。

ProcessMo
(クリックで拡大)

上記のカーソルの会わせた所は、あるプロセスが、Windows API のCreateFile をコールしているが、Detail の所を読むと、どんな引数で CreateFile をコールしたのかがわかるようになっている。

はじめの全体のトレースの中に自分の見たいプロセスがあると思うので、それを選択して右クリックから、「Include」→「Process Name」を指定すると、この「Process Name」でフィルターされる。

image
(クリックで拡大)