WER 报告能说明什么
Windows 错误报告(Windows Error Reporting)在程序崩溃或异常退出时生成报告,落在系统级 ReportArchive、ReportQueue 与用户级 LocalAppData 目录下。报告目录名与其中的 Report.wer 文本记录应用名、模块、异常代码与时间,可以用来发现“某个程序在此之前反复崩溃”“某个系统进程曾经异常终止”。在入侵调查里它常用于佐证漏洞利用尝试(利用失败往往表现为目标进程崩溃)与恶意程序自身不稳定导致的异常退出。
基本信息
| 适用平台 | Windows Vista 以后各版本(Win7 及更早为 ReportQueue/ReportArchive,Win10/11 沿用并新增用户级目录) |
|---|---|
| 系统级路径 | C:\ProgramData\Microsoft\Windows\WER\ReportArchive 与 ReportQueue |
| 用户级路径 | %LOCALAPPDATA%\Microsoft\Windows\WER\ReportArchive(含 Report.wer 与 .dmp) |
| 关键字段 | AppName、AppPath、EventType、Sig[0..n]、ReportIdentifier |
| 注意 | 报告生成时间与崩溃时间可能相差数分钟,且清理工具会删除这些目录 |
典型使用场景
- 确认办公软件是否在打开可疑文档后崩溃,为宏或漏洞利用提供佐证
- 发现恶意程序反复崩溃的规律:同一路径在短时间多次出现报告
- 排查被杀软或 EDR 结束的进程留下的异常退出痕迹
- 为“程序曾在这台机器上运行过”提供路径级证据,补充 Prefetch 与 Amcache
- 确认漏洞利用尝试的时间窗,配合应用日志与网络记录定位入口
清单与内容查看
清单与内容查看
# 列出最近的错误报告目录(含时间与进程相关信息)
Get-ChildItem 'C:\ProgramData\Microsoft\Windows\WER\ReportArchive' -Directory |
Select-Object Name, CreationTime | Sort-Object CreationTime -Descending | Select-Object -First 20
# 用户级报告:常以 AppCrash_<进程名> 前缀命名
Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Windows\WER\ReportArchive" -Recurse -Filter Report.wer |
Select-Object FullName, LastWriteTime | Sort-Object LastWriteTime -Descending
# 读取报告正文中的关键字段
Select-String -Path "$env:LOCALAPPDATA\Microsoft\Windows\WER\ReportArchive\*\Report.wer" -Pattern 'AppName|AppPath|EventType'报告字段读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| AppName / AppPath | 崩溃程序名与完整路径 | 路径在临时目录或用户目录时优先级提高 |
| EventType | 事件类型 | AppCrash 为程序崩溃;BEX/BEX64 提示缓冲区异常 |
| Sig[n] | 签名参数序列 | 包含异常代码与出错模块,同一签名可聚类同一类崩溃 |
| ReportIdentifier | 报告标识 | 用于跨目录去重,避免重复计数 |
| 目录时间戳 | 报告生成时间 | 与崩溃时间有延迟,需与事件日志交叉核实 |
崩溃常由漏洞利用尝试失败触发,但崩溃本身不是成功入侵的证据;把它作为“该时段目标程序被异常输入影响”的线索,与网络流量、后续进程创建记录一起使用。
部分报告包含内存转储文件(.dmp),体量较大但价值高;现场处置时优先固定是否有 dmp 及对应哈希,再考虑后续分析方式。