上一篇從 Jump List 看到了使用者透過某個 Application 開過哪些檔案。
但如果今天換一個問題:
這個程式到底有沒有真的執行過?
這時可以看另一個 Windows Artifact:Prefetch。
Prefetch 原本是 Windows 為了加快程式啟動速度所留下的資料。當程式執行時,系統會記錄程式啟動過程中使用到的檔案與目錄,並建立 .pf 檔。
而這些原本為了效能留下來的資料,在數位鑑識中剛好可以拿來找程式的執行痕跡。
Windows 的 Prefetch 主要存放在:
C:\Windows\Prefetch\

進到資料夾後,可以看到大量 .pf 檔案,檔名通常會帶有 Executable Name。
這次繼續沿用上一篇的 Word 當作範例,可以找到:
WINWORD.EXE-AB6EC2FA.pf
前面的:WINWORD.EX
可以直接看出這份 Prefetch 和 Microsoft Word 的執行檔有關。
後面的 AB6EC2FA 則是 Windows 用來產生 Prefetch 檔名的 Hash 值。
這裡要注意,它不是平常鑑識時拿來驗證檔案完整性的 MD5、SHA-1 或 SHA-256,因此不能把 AB6EC2FA 當成 WINWORD.EXE 本身的檔案 Hash。
.pf 並不是直接打開就很好閱讀的格式,所以這次使用 Eric Zimmerman 的 PECmd 解析。
先把要分析的 .pf 複製出來,在 PECmd 資料夾中開啟 CMD 並執行:
``
PECmd.exe -f "[.pf 檔案路徑]"
這次分析的是:
```text
WINWORD.EXE-AB6EC2FA.pf

解析後,可以先看到這份 Prefetch 的基本資訊:
Executable name: WINWORD.EXE
Hash: AB6EC2FA
Version: Windows 11
其中 Executable name 可以確認這份 Prefetch 對應的執行檔就是 WINWORD.EXE。
接著往下可以看到和程式執行比較有關的資訊:
Run count: 401
Last run: 2026-10-01 14:12:04
Other run times: ...
這份 Prefetch 顯示 Run count: 401,也就是這份 Prefetch 目前記錄的執行計數為 401。
另外:
Last run: 2026-10-01 14:12:04
則可以看到最近一次被記錄下來的執行時間。
下面的 Other run times 還保留了其他幾筆較近期的執行時間,因此 Prefetch 不僅能回答程式有沒有跑過,還能提供建立程式執行時間線時可以使用的線索。
PECmd 畫面最上方會看到 .pf 檔案本身的檔案系統 Timestamp。
Created on: 2025-02-25 05:11:36
Modified on: 2026-10-01 14:12:05
Last accessed on: 2026-10-01 15:12:24
它們和下面的 Last run 和 Other run times 是不同的。
例如不能因為看到 Created on: 2025-02-25 05:11:36,就直接判斷 Word 第一次是在 2025-02-25 執行。
Created on 描述的是這個 Prefetch 檔案本身的建立時間,而不是程式「第一次執行」的直接證明。
真正要分析程式的執行紀錄,會比較關注 Prefetch 內解析出的:
Last run
Other run times
Run count
再把這些資訊和其他 Artifact 的時間一起比對。
再繼續往下看,PECmd 還解析出了:
Directories referenced: 57
File references: 142
下面可以看到不少 Word 啟動時涉及的目錄,例如:
\PROGRAM FILES\MICROSOFT OFFICE
\PROGRAM FILES\MICROSOFT OFFICE\ROOT
\PROGRAM FILES\MICROSOFT OFFICE\ROOT\OFFICE16
代表 Prefetch 留下的不只有 WINWORD.EXE 曾經被執行過,還包含程式啟動過程中引用過的 File 和 Directory。
如果今天分析的是一個可疑的 Executable,就可以繼續往這些 Reference 裡找,看它執行時曾經涉及哪些檔案或目錄。
假設某個程式執行完成後,本體被刪除了:
tool.exe
↓
執行
↓
留下 Prefetch
↓
tool.exe 被刪除
即使原本的 tool.exe 已經不存在,只要:
TOOL.EXE-XXXXXXXX.pf
還留在系統裡,就可能從 Prefetch 找到這個程式曾經執行過的線索。
因此在調查惡意程式、清除工具,或其他事後被移除的 Executable 時,Prefetch 是很值得檢查的 Artifact。