跳转至

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 显示的 AddressOfCallBacks 0x14002B8C8 处的回调数组匹配。
  • 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 cookie 0x4560dc 位于 .data 中,SafeSEH 表 0x453b28 包含 7 个处理程序,guard 标志为 0x100,与 llvm-readobj 匹配。

这些样本之外的带 size 字段、EH-continuation 和 XFG 声明,以及格式错误的范围,均由合成测试夹具覆盖。任何缓解措施的运行时强制实施均未验证。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea