从可执行文件中删除.reloc节区
从可执行文件中删除.reloc节区
.reloc节区
- EXE形式的PE文件中“.reloc”项对运行没什么影响
- 对DLL和SYS而言“.reloc”项则是必须的
- .reloc一般位于所有节区的最后
reloc.exe
删除.reloc节区的步骤:
- 删除.reloc节区头
- 删除.reloc节区
- 修改IMAGE_FILE_HEADER
- 修改IMAGE_OPTIONAL_HEADER
删除.reloc节区头
通过PEView查看:
通过HEX Editor将其用0填充:
删除.reloc节区
文件中.reloc 节区的起始偏移地址为C000,将其全部删除:
修改IMAGE_FILE_HEADER
需要修改的项包括:
- NumberOfSections:删除一个节区所以应该减1
修改IMAGE_OPTIONAL_HEADER
需要修改的项包括:
- SizeOfImage:删除.reloc节区后,映射大小随之改变
.reloc的大小为E40,根据SectionAlignment将其扩展为1000,所以需要减去1000:
参考文献
《****核心原理》