PE TLS/load-config 验证 - 2026-10-24¶
所有运行均使用 macOS arm64 和 Node 26.5.0。未执行任何目标。
交叉编译通道¶
npm run verify:pe:load-config 使用 Zig 0.16.0 为 x86_64-windows-gnu 和 x86-windows-gnu 编译了独立式 C 示例,然后调用了公开的 inspect-pe-load-config --json CLI。
| 目标 | 回调 VA | RVA | 文件偏移 | 节 |
|---|---|---|---|---|
| PE32+ | 0x140001000 |
0x1000 |
0x400 |
.text |
| PE32 | 0x401000 |
0x1000 |
0x400 |
.text |
两个映像都声明了一个回调,且没有 load-config 目录。
链接器生成与厂商提供的映像(未提交)¶
- 一个 MinGW 链接的 PE32+ 示例,包含两个
.CRT$XL*回调(zig cc -target x86_64-windows-gnu):在.text中报告了四个回调,位于0x140001000、0x140001020、0x140001470和0x140001500,与llvm-readobj --coff-tls-directory显示的AddressOfCallBacks0x14002B8C8处的回调数组匹配。 - Sysinternals
strings64.exe(PE32+,MSVC):load-config 字段与llvm-readobj --coff-load-config匹配。 - Sysinternals
strings.exe(PE32,MSVC):数据目录声明了 64 字节,而结构体Size为 188(0xBC)。REA 报告size: 188,security cookie0x4560dc位于.data中,SafeSEH 表0x453b28包含 7 个处理程序,guard 标志为0x100,与llvm-readobj匹配。
这些样本之外的带 size 字段、EH-continuation 和 XFG 声明,以及格式错误的范围,均由合成测试夹具覆盖。任何缓解措施的运行时强制实施均未验证。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea