我有一个 Windows 二进制文件的 hexdump,并通过查看 COFF 偏移量识别了此可执行文件中的 COFF 标头:
0000080: 4550 0000 014c 0003 6ec8 3add 0000 0000
0000090: 0000 0000 00e0 010f 010b 0301 2000 0000
我们可以进一步验证这是文件头,因为它的4 字节签名:'PE'
后跟两个NULL
字节。显然,该格式似乎是用小端表示的,因为如果我们要显式编写 PE,我们将使用 hex 50 45
。
如果我们查看PE 格式规范并进行此观察,该NumberOfSections
字段(从签名末尾偏移 2 个字节,该Machine
字段被跳过),我们确定有 768 个部分(03 00
小端序)。这与规范相矛盾,指出 Windows 加载程序将节数限制为 96。
此外,字段中的字节顺序Timestamp
(接下来的 4 个字节)似乎很奇怪,因为只有排列3add 6ec8
会产生过去的 Unix 时间戳。
我是否缺少更明确定义的字节顺序?为什么字段之间的字节顺序似乎不一致?