这一部分继续展开 PE 数据目录:资源目录保存图标、对话框、版本信息等;异常目录支持 x64 异常展开;安全证书用于签名校验。这些内容不是主代码,但对分析软件身份、界面资源和异常处理很重要。
1、内容范围
| 小节 |
内容 |
复盘点 |
| 12.2 - 14.4 |
资源与图标 |
资源目录层级、GUI SDK、图标组、ICO 提取 |
| 14.5 - 16.5 |
异常机制 |
SEH、VEH、x64 UNWIND、Runtime Function |
| 16.6 - 16.8 |
安全证书 |
证书目录、特殊地址和模块证书解析 |
2、资源目录层级
资源目录通常是三层:
常见资源类型:
| 类型 |
内容 |
| ICON |
图标数据 |
| GROUP_ICON |
图标组 |
| VERSION |
版本信息 |
| DIALOG |
对话框 |
| STRING |
字符串表 |
3、图标资源提取
应用程序图标往往由图标组和多个图标图像组成。复盘时要区分:
| 项 |
说明 |
| 图标组 |
描述有哪些尺寸/颜色深度 |
| 图标数据 |
真正的图像数据 |
| ICO 文件 |
文件头 + 图标目录 + 图像数据 |
4、异常机制
x86 常见 SEH 链,x64 更依赖异常目录和 UNWIND 信息。异常目录能帮助系统在异常发生时正确展开栈、调用处理器和清理资源。
| 机制 |
复盘重点 |
| SEH |
结构化异常处理 |
| VEH |
向量化异常处理 |
| Runtime Function |
x64 函数范围和展开信息 |
| UNWIND_INFO |
记录栈帧如何恢复 |
5、x64 异常展开
x64 下不再主要依赖栈上的 SEH 链,而是通过 .pdata / .xdata 等信息描述函数和展开规则。
| 数据 |
作用 |
| BeginAddress |
函数起始 RVA |
| EndAddress |
函数结束 RVA |
| UnwindInfoAddress |
展开信息 RVA |
6、安全证书目录
安全证书目录比较特殊,它的地址通常是文件偏移而不是 RVA。解析时不能直接按普通数据目录换算。
| 注意点 |
说明 |
| 位置特殊 |
证书表不映射进内存 |
| 用途 |
数字签名、完整性和发布者信息 |
| 修改影响 |
修改文件内容可能破坏签名 |
7、防护复盘
| 方向 |
观察点 |
| 资源异常 |
图标/版本信息与真实文件不一致 |
| 证书异常 |
签名缺失、无效或发布者不匹配 |
| 异常目录异常 |
异常表损坏或不合理 |
| 图标伪装 |
图标像正常软件,但路径/签名异常 |
8、学习检查清单
| 检查项 |
状态 |
| 能说明资源目录三层结构 |
待复盘 |
| 能区分图标组和图标数据 |
待复盘 |
| 能说明 x86 SEH 和 x64 UNWIND 的区别 |
待复盘 |
| 能解释证书目录为什么不能按普通 RVA 处理 |
待复盘 |
| 能把资源、证书和文件身份复盘结合起来 |
待复盘 |