【文章标题】: ASPr 1.31.04.27 另一种思路脱壳(Import Recovery)
【文章作者】: wynney
【软件名称】: 某UnpackMe
【下载地址】: 附件下载
【作者声明】: 这个目标程序似乎只需处理2个分支,寻找个处理IAT的思路,最后的IAT修复也有点不一样
--------------------------------------------------------------------------------
【详细过程】
一、前言
ASPr 1.31用volx大狭的脚本脱不了,刚好碰到了这么个东西,试了下,没深研,关于1.31版本的教程以前不少大狭都有写,虽看似很复杂
但是很详细,本人只是希望本人能起到抛砖之用,目标程序PEID-Ver 0.15查得:Version: ASProtect 1.31 build 04.27 Beta [Extract]
大家看教程的过程中注意看着色的地方。以免你们的操作会出现错误。
二、处理IAT
忽略所有异常
he GetModuleHandleA,Shift+F9,中断2次,Alt+F9
找到段尾
Ctrl+B:8A 00 FF 43 08
Ctrl+B:8B 54 24 0C 89 02 8B 44 24 0C 89 06 0F B7 44 24 04 01 43 08
Ctrl+B:8B 54 24 0C 89 02 8D 4C 24 0C 8A 54 24 07 8B C3
做了上述4次修改后,设置忽略除了内存访问和指定异常之外的所有异常
Shift+f9,中断异常,此时IAT处理完毕,撤消上述4处修改,以免后面出现内存保护错误
继续Shift+f9到达最后一次异常
三、到达OEP
Alt+M,在Code段下断,Shift+f9来到OEP
上述2处二进制编辑后,真实的IAT面貌出现了:)
四、修复
大家看到了,IAT所在的区段是在D70000,我们打开ImportREC,OEP输入1000,点自动查找IAT,竟然提示
“在此OEP处未找到可用的信息”
于是,我们需要特殊处理下了:(
按照下图示操作后,修复脱壳文件,运行看看,脱壳成功
(


用FixRes和Resource Binder优化下吧
--------------------------------------------------------------------------------
【经验总结】
1、引申到某些壳,如果IAT被加密了,请先确定一个IAT的地址,对这个地址进行下断,可以找到IAT处理的点
2、ASPr 1.31的有几个分支处理,本目标程序似乎只需处理2个分支,而且使用的是很懒的法子,并非某些大狭使用的Patch
代码的法子,如果有兴趣大家可以看看fly原先写的教程
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年04月11日 wynney