use*_*887 3 windows executable coff portable-executable
在十六进制编辑器中查看 PE 文件时,我经常遇到节表和第一节之间的一些字节,这对我来说没有意义。就我而言,应该有一个 00 字节的填充以适应对齐。但是,这是一个屏幕截图,它演示了相反的情况:
事实证明,突出显示的块几乎是绑定导入表。但我仍然很困惑。为什么这个表不在一个节中?这是总是如此还是只是某个编译器/链接器的规范?我没有找到有关此特定问题的任何文档。关于这个主题的所有内容基本上都说:
... 等等
在我遇到这个问题之前,我什至不知道这些部分之外可能还有其他东西(当然,除了我上面列出的那些)。
[编辑]
概念证明(因为 Mox 不相信我):
诸如 之类的数据目录IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT
可以存在于节之外。存在于任何已知部分之外的数据目录的另一个示例是IMAGE_DIRECTORY_ENTRY_CERTIFICATE
数据目录,它是在可执行文件被签名时用于存储证书信息的数据目录。
数据目录可以指向节外、节内的数据,也可以指向整个节。该IMAGE_DIRECTORY_ENTRY_RESOURCE
数据目录指向整个“.rsrc”一节。某些数据目录指向已知部分,这些在Microsoft的PE 格式规范中进行了记录。