本章介绍脱壳的后 2 个步骤,转存可执行文件和重建导入函数表。
按照上一章内容转到 OEP 解密出原始代码并且操作 IDA 重新分析程序,准备执行转存操作。
也可以不用断点,因为程序并没有运行后再加密回去。
使用脚本来进行dump:
import idaapi
def main():
start_ea = 0x400000
end_ea = 0x40b200
byte_array = bytearray()
for ea in range(start_ea, end_ea):
byte_array.append(idaapi.get_byte(ea))
with open("C:/xxxx/dump.exe", "wb") as fp:
fp.write(byte_array)
if __name__ == "__main__":
main()
在上面的脚本当中,我们dump的地址范围是 0x400000 到 0x40b200。
这个地址范围是HEADER段到OVERLAY段的地址。
保存脚本文件,例如 DUMPER.py,之后打开菜单 FILE-SCRIPT FILE 运行,生成文件。
IAT (Import Address Table,导入地址表) 是 PE 程序中用于管理外部函数调用的重要数据结构。
IAT 的作用:
IAT 的工作原理:
SO系列文章里面也有重定位的内容,是差不多的。