win7下脱壳后的修复
例子使用恒大的图文教程例子:S01E07】Shark恒 零基础逆向教程之图文!【ESP定律】,原贴地址:https://www.52hb.com/thread-672-1-1.html.原贴中,恒大使用的是winxp虚拟机,脱壳直接可以使用了。有朋友提到win7下脱壳出现不能运行的情况,下面黑马来谈谈解决此类问题。新手刚学不久,有遗漏的地方请见谅。0x0
由于电脑用的是win7系统,载入od的时候,找到的OEP地址与恒大有所不同,我的电脑上使用ESP找OEP结果如下图:
这里有个关键点,恒大在xp里面是使用Ollydump脱壳的,如果在win7下操作,建议使用另外一种方法,使用LordPE先转存效果会更好一些,使用Ollydump在win7下脱壳会有一些bug导致后面运行失败。
使用LoadPE直接右键完整转存,默认生成exe名字为dumped.exe:
win7系统采用的ASLR技术,随机化了地址。我电脑的地址是0044E81D。脱壳后先peid查壳,结果为upx壳状态:
0x1
尝试打开程式结果报错,无法定位程式输入点,这是我们没有修复的结果:
重点来了,先不要关闭该报错信息,打开ImportREC进行修复入口地址。在附加进程里选择我们的程式(那个报错确定不要点,点了不能附加),然后点击IAT自动搜索,在点击获取导入表,在“找到的导入表函数”栏目下面可以看到我们找到的函数,有效的参数都是“是”,即修复ok的意思,截图如下:
(PS:OEP地址如果获取错误,需要手动修复,修复地址=od里面OEP地址-起始地址,即0004E81D=0044E81D-00400000)
然后我们选择修正转储,选择我们程式即可:
0x2
修正转储后打开成功。这里注意一下,有时候会提示程式已经停止运行:
我们只要选择兼容模式打开即可:
至此,程序成功在win7上脱壳并运行。使用ImportREC修复后 再进行查壳,发现没有壳了:
末尾有个小问题,为何ImportREC修复之前是有壳状态,我仅仅是修复了一下而已,壳怎么不见了呢,是由于upx是压缩壳的原因吗? 恒大如果有时间帮忙看下 @Shark恒
本帖最后由 过林黑马 于 2018-2-3 12:28 编辑
补充说明另外一种情况,在win7下使用Ollydump的时候,一般是出现2种情况,一种是重建表的情况,运行会出现如下截图:
第二种是不勾选重建表的时候,运行如下:
根本原因都是重建表不完全,我们的处理方法都跟我上面的一样,直接不要关闭这个对话框,使用LoadPE选择对应的程序,然后完整转存就好了。
既然如此,所以建议大家直接使用LoadPE加载OD里面的程序完整转存,剩下了一个步骤。{:5_116:}
楼主辛苦了,感谢分享 感谢分享。~楼主辛苦了~ 收藏学习一下
收藏学习一下 学习了!!! chihuo 发表于 2018-7-13 08:00
我的ImportREC上显示,是否有效:否,这个要怎么修复呀?
之前遇到过,我多刷几次,或者换个版本就好了 感谢分享,学习一下