windows - PE 文件格式 - 节表和第一节之间是什么?

标签 windows executable portable-executable coff

在十六进制编辑器中查看 PE 文件时,我经常遇到节表和第一节之间的一些字节,这对我来说真的没有意义。就我而言,应该有一个 00 字节的填充以适合对齐。然而,这里有一个截屏,展示了相反的情况:

事实证明,突出显示的 block 几乎就是绑定(bind)的导入表。但我仍然很困惑。为什么这张表不在一个部分?情况总是如此还是只是某个编译器/链接器的规范?我没有找到有关此特定问题的任何文档。人们可以找到的关于这个主题的所有内容基本上都是这样说的:

  1. DOS MZ 标题
  2. DOS stub
  3. PE header
  4. 分区表
  5. 第 1 部分
  6. 第 2 部分
  7. 第 3 部分

...等等

在我遇到这个问题之前,我什至没有意识到这些部分之外可能还有一些东西(当然除了我上面列出的那些)。

[编辑]

概念证明(因为 Mox 不相信我):

LordPE

最佳答案

IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 等数据目录可以存在于部分之外。存在于任何已知部分之外的数据目录的另一个示例是 IMAGE_DIRECTORY_ENTRY_CERTIFICATE 数据目录,它是在对可执行文件进行签名时用于存储证书信息的数据目录。

数据目录可以指向节外、节内的数据,也可以指向整个节。 IMAGE_DIRECTORY_ENTRY_RESOURCE 数据目录指向整个“.rsrc”部分。某些数据目录指向已知部分,这些记录在 PE format specification by Microsoft 中.

关于windows - PE 文件格式 - 节表和第一节之间是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416054/

相关文章:

Linux - 如何将一组文件和一个可执行文件压缩为一个唯一的可执行文件

windows - 可编写脚本的 PE 资源编辑器

linux - 你如何从 windows 主机获取文件到 linux docker 容器?

python - 在不破坏内容的情况下重命名 python 3.7 可执行文件

javascript - 如何在客户端运行程序或批处理文件?

haskell - 从可执行文件中查找 ghc 版本

c - Windows 和 Unix 的文件分隔符

windows - 从 AWS 上的 EC2 实例共享文件夹 (SMB) 到远程机器

windows - 易于使用的可移植可执行恶意软件调试器

python - 我们如何在PE文件中的IMAGE_IMPORT_BY_NAME STRUCT中获取提示?