從可執行文件中刪除.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:
參考文獻
《逆向工程核心原理》