从上面我们可以看到重定位表条目的计数是0
(没有重定位项),但是第一个重定位项的偏移量表明重定位项确实存在。
DOS EXE Header 的定义在这里。
怎么理解?
这个是正常的。对于像 PE 这样的现代格式,重定位表的偏移量始终为 0040H,即使有零个重定位项。
您必须查看 EXE 标头大小(如DOS_HdrSize
屏幕截图所示)。这是整个标题使用的段落数(16 字节块)。
在您的示例中0x0004
,将其乘以 16,您将得到标头长度为0x40
字节。重定位表从重定位表偏移量开始,一直持续到DOS_ReloCnt
条目的末尾。
在您的情况下,重定位表偏移量是0x40
,并且标题的末尾也是0x40
因此没有空间用于重定位表,这也很好,因为DOS_ReloCnt
它说其中有零条目。
在这种情况下,重定位表偏移设置为什么值可能并不重要。