开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情
什么是IAT(输入函数地址表 简称输入表)
如果脱壳后没有修复IAT那也只能在你的电脑上运行,无法在别人电脑上运行,因为IAT是为了提升软件的兼容性,软件启动后每次运行都会获取当前电脑的API函数地址,脱壳后就会损坏IAT也就无法获取机器的API函数地址。
可以通过od 右键 查看所有模块调用 来查询目前程序所调用的API函数地址
脱壳修复IAT
这次案例用的是UPX壳,把UPXdump下来进行修复。因为脱壳下来后壳把IAT给破坏了,脱下来后是无法运行的。
到OEP入口点后使用DUMP工具
找到我们进程的图标,然后先修正镜像大小。
然后右键完全脱壳保存到桌面
修复IAT,通过工具在保留iat地址的情况下保留下来。
回到刚刚od脱壳的文件,找到他的dll地址回车进去找到IAT头尾。
这里填写OEP的入口地址,还有IAT的长度和起始位置。
找到dll的CALL回车进去看看
右键内存地址跟随,这个就是第一个dll
修整转储到脱壳文件,发现可以运行了。