windows - ImageBase + SizeOfHeaders 会跳转到节表

标签 windows assembly portable-executable

我正在阅读有关 PE 的教程,它说

Go to the section table either by adding ImageBase to SizeOfHeaders

但是 SizeOfHeaders 是

The size of all headers+section table

因此,如果我们将 SizeOfHeaders 添加到 ImageBase,我们是否会跳转到部分而不是表格?

最佳答案

SizeOfHeaders 不用于找出节表的位置,即使它们可能在某些文件中匹配(但我不希望如此)。

这是在 Windows header (以及系统加载程序)中完成的方式:

#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER)        \
    ((ULONG_PTR)(ntheader) +                                            \
     FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) +                 \
     ((ntheader))->FileHeader.SizeOfOptionalHeader   \
    ))

请注意,SizeOfOptionalHeader 的实际值未被检查;它可能非常大甚至是负面的 - 一些恶意软件使用它来欺骗分析工具。

参见 here了解更多细节,甚至是更狡猾的技巧。

关于windows - ImageBase + SizeOfHeaders 会跳转到节表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590732/

相关文章:

c++ - 是否可以访问物理地址0?

portable-executable - 如何在 IDA pro 中显示 PE header ?

c++ - PE文件中的MZ签名有什么用?

python - Windows 上 1970 年 1 月 1 日之前日期的 datetime timestamp() 解决方法

Windows 10 专业版 - Docker 容器系统区域设置

c - C 和汇编之间的链接错误

macos - 使用 NASM 加载符号的地址?

linux - 如何在不改变其功能的情况下将一些垃圾指令插入/删除到 ELF/PE 文件中?

windows - 我如何知道是否使用 RawInput 按下了 shift?

windows - 使用批处理文件脚本查找字符串的子字符串