基址重定位表对于DLL和SYS文件来说是必须得,但在EXE格式的PE文件中,基址重定位表并无作用,将其删除后程序仍然能够正常运行。
VC++中生成的PE文件的重定位节区名为.reloc,删除该节区后文件可正常运行,并且缩减了文件大小。
.reloc节区一般位于所有节区的最后,可以使用PEView和Win Hex Editor来手动删除。这里对reloc.exe程序进行演示。
1、删除.reloc节区头:
先用PEView打开查看.reloc节区头信息:
可以看到.reloc节区头从文件偏移270开始,大小为28(270~297)。
用Win Hex打开找到该区域,然后全部用0覆盖(Ctrl+L):
2、删除.reloc节区:
文件中.reloc节区的起始偏移为C000,因此从C000开始一直使用Win Hex删除到文件末端所有数据即可(Del):