1

我能够从 DOS 头文件中解析 A​​SLR、DEP、SEH 等,但不确定如何判断文件是否使用 /GS 堆栈金丝雀编译。

我正在编写一个程序,所以除非它是开源的,否则将我指向一个像 PEStudio 这样的程序对我没有帮助。

这是dos标头的一部分吗?还是我必须扫描 .data 部分的 __security_cookie?

4

1 回答 1

3
  • 转到IMAGE_NT_HEADERS
  • 然后IMAGE_OPTIONAL_HEADER (IMAGE_NT_HEADERS.OptionalHeader )
  • 然后IMAGE_DATA_DIRECTORY (IMAGE_NT_HEADERS.OptionalHeader.DataDirectory)
  • 第 10 个条目 VirtualAddress 成员是“加载配置目录”的 RVA。
    • IMAGE_NT_HEADERS.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].VirtualAddress

加载配置目录是一个IMAGE_LOAD_CONFIG_DIRECTORY结构。

检查 SecurityCookie 成员:如果它不为 0,则 /GS 正在用于此 PE。

于 2014-10-22T00:21:28.797 回答