Prefetch 痕迹解析是什么
Prefetch 记录程序执行与加载过的文件引用,常驻 C:/Windows/Prefetch。它按执行时间补全执行史:即使可执行文件已被删除,痕迹仍可能保留下来,因此在「这台机器上跑过什么」这个问题上价值很高。
基本信息
| 适用平台 | Windows 工作站,服务器系统通常默认关闭 |
|---|---|
| 关键字段 | 执行次数、首末执行时间、引用文件与目录 |
| 位置 | C:/Windows/Prefetch 下的 .pf 文件 |
| 解析工具 | PECmd(Zimmerman 工具集) |
典型使用场景
- 补全某程序是否被执行、执行过几次
- 与进程创建事件交叉验证
- 判断某程序是否为近期首次运行
- 从引用文件推断程序读取了哪些配置或数据
- 可执行文件已被删除时,仍能取回执行线索
- 与执行事件的时间对齐,找出只有 Prefetch 而无日志的执行
解析
解析
PECmd.exe -d C:/Windows/Prefetch --csv out/ --csvf prefetch.csv # 目录批量
PECmd.exe -f C:/Windows/Prefetch/CMD.EXE-XXXX.pf --json out/ # 单文件
# 输出含执行次数、首次与末次执行时间,以及程序引用的文件与目录列表字段读法
| 字段 | 含义 | 注意 |
|---|---|---|
| 执行次数 | 该程序被执行的近似次数 | 有滚动上限,数值偏保守 |
| 最后一次执行时间 | 最近一次运行时间 | 与事件日志时间交叉验证 |
| 首次执行时间 | 最早记录到的运行时间 | 受滚动覆盖影响 |
| 引用文件 | 程序加载过的文件与目录 | 可推断其读取的数据来源 |
执行次数与首末时间受滚动窗口限制:Windows 7 之后默认只保留一定条数,早期记录会被覆盖,次数按「近似」口径使用。
服务器系统可能关闭该功能,缺失属正常现象。报告里要说明这一点,而不是据此推断程序从未运行过。
对空的 Prefetch 目录做一次完整性检查:该目录被人为清空本身就是值得记录的重要线索。
解析时保留原始文件的副本,便于用不同工具复核结果,也方便后续重新解析。
同一程序在不同用户下会各自产生痕迹,汇总统计时要按用户区分,否则次数会重复计算。
引用文件列表还能提示程序调用过的其他可执行文件,可据此发现执行链上的下一环。