关于DOS EXE头中的重定位表

时间:2010-09-26 07:56:43

标签: dos exe portable-executable

alt text

从上面我们可以看到重定位表条目的数量0(没有重定位项),但第一个重定位项的偏移量表明reloc项目实际存在。

DOS EXE标题的定义是here

如何理解?

2 个答案:

答案 0 :(得分:0)

这很正常。对于像PE这样的现代格式,重定位表的偏移量始终为0040H,即使重定位项为零也是如此。

答案 1 :(得分:0)

您必须查看 EXE 标头大小(在屏幕截图中显示为 DOS_HdrSize)。这是整个标题使用的段落数(16 字节块)。

在您的示例中,它是 0x0004,因此将其乘以 16,您将获得标头长度为 0x40 字节。重定位表从重定位表偏移量开始,并持续 DOS_ReloCnt 个条目,直到标头结束。

在您的情况下,重定位表偏移量是 0x40 并且标题的末尾也是 0x40 因此重定位表没有空间,这也是因为 DOS_ReloCnt说里面有零个条目。

在这种情况下,重定位表偏移设置为什么值可能无关紧要。