@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

Windows XP のプレフェッチ機能

Windows XP/Server 2003 には、アプリケーションの起動を高速化させる目的でプレフェッチ*1機能がありますが、これはフォレンジック調査でも興味深い機能だったりします。

Microsoft Windows XP パフォーマンス
http://www.microsoft.com/japan/technet/prodtechnol/winxppro/evaluate/xpperf.mspx
Windows XPとは何か?18.アプリケーション起動の高速化
http://www.atmarkit.co.jp/fwin2k/special/winxp_over/winxp_over_19.html

簡単に説明すると、XP上でプログラムを実行するとプレフェッチ用のフォルダ(例:C:\WINDOWS\Prefetch)に「実行ファイル名-16進数番号.pf」というファイルが自動的に作成されます。
例えば IE を起動すると以下のようなファイルが作成されます。

IEXPLORE.EXE-27122324.pf

このファイルの作成時刻*2を確認することで、何時そのプログラム用の .pf ファイルが作成されたのかを確認できます。PFファイルは、プログラムを実行したタイミングで(すでに.pfファイルが無ければ)新規に作成され、すでに該当プログラム用のPFファイルが存在する場合には、プログラムの実行時に既存PFファイルの M*3A*4E*5 がその時刻になります。*6
<追記>
16進数部分はプログラム名のハッシュだと“http://blogs.msdn.com/ryanmy/archive/2005/05/25/421882.aspx”に書いてあるのですが、ハッシュ関数が何かとか対象範囲がどうなっているのかはわかりません、最大で128個まで.pfファイルは作成されるようですね。<追記2>
インサイド MS WINDOWS 第4版 上 (マイクロソフト公式解説書)を読んでいたら、.pf ファイルが作成されるまでのタイムラグが約10秒ほどあるということが書かれていたので実験してみる。本では Filemon が使われているのですが、「プロセス追跡の監査」を有効にしてイベントログで時刻を確認してみる。

Notepad.exe-336351A9.pfが新規に作成された場合
イベントログの時刻 7:51:10
MAE の時刻 7:51:20
Notepad.exe-336351A9.pfが存在する場合
イベントログの時刻 7:54:12
MAE の時刻 7:54:22

なるほど10秒ですね〜

*1:「プリ」なのか「プレ」なのか表記が記事によって違うのですが、MSのドキュメントではプレになってるようですね

*2:File Created

*3:Last Written

*4:LastAccessed

*5:Entry Modified

*6:同一のプログラム名だと、16進数番号で区別された .PF ファイルが作成されます