【文章标题】: 脱ExeCryptor2.2.50
【文章作者】: wynney
【软件名称】: UnPackMe ExeCryptor2.2.50.j
【软件大小】: 481K
【下载地址】: 自己搜索下载
【加壳方式】: ExeCryptor2.2.50
【保护方式】: All Protection Enabled + 100% Virtualization
【编写语言】: VC++
【操作平台】: XP SP2
【软件介绍】: Compressed Resources/Code/Data/Maximum ComPression
【作者声明】: 闲得无聊。凑热闹~^_^
--------------------------------------------------------------------------------
【详细过程】
一、序言
昨天找大家测试了一翻,初步结果是部分输入表没有修复的文件只能在我的同平台上运行,修复了输入表的找朋友把SP1、
SP2、2000、2003 上都测试了个遍,没发现问题。至于如果在你那有问题,还望能够提供点实质性的帮助信息给我:)
至于为什么放个部分输入表没修复的上来,是为了证实我的某些想法:)
关于ExeCryptor的反OD能力的确是厉害,至于有多厉害,前人已有述说,我就不在这里累述。当然,也有不少破解之道,
有兴趣的倒可以去好好拜读下loveboom的“穿透eXeCryptor 2.2x 保护体系(年终篇)”,的确经典,我也不多说。我这
里介绍另外一种法子。使用NtGlobalFlag(OD插件)可以让它停在EP处,另外需要HideOD,IsDebug,Hidedbg插件。
二、代码解压,找OEP
1、打开OD
2、忽略所有异常
3、插件--NtGlobalFlag选下Set TempBreak on Tls Callback,SET LDR_SHOW_SNAPS
4、隐藏OD
5、打开需要脱壳的文件
如果OD插件配置得好,隐藏得好,此时,一载入OD呈程序运行状态,不一会而就停在了Tls Callback处
Alt+B,会发现有2个断点
都删掉吧
接下来,Alt+M,在00401000段F2,Shift+F9中断下来
Ctr+F:CMP ECX,2
这里呢,当ECX=2的时候解码。Shift+F9运行,中断10次(注意观察ECX的值变化,第10次ECX=2,第11次程序运行)
OK,取消断点(可以在此处Dump了,但是,为了后面的Stolen Code还是到后面Dump吧)
Alt+M,在00401000段F2,Shift+F9,如果一切顺利会中断下来
三、找Stolen Code
大致一看,就知道是VC++的程序了
现在需要还原Stolen Code了
注意看堆栈
再结合VC入口特征(封装)即可得到Stolen Code
另外还有种方法,可以Enter进
004271B0 - E9 6CD10500 JMP UnPackMe.00484321
004271B9 - E9 424E0400 JMP UnPackMe.0046C000
再根据VC入口特征找到Stolen Code
好了,恢复Stolen Code之后,在OEP=004271B0处右键新建EIP,至此可以Dump了!
四、修复IAT
小插曲:我发现用OllyDump.dll插件,以Method1,勾选Rebulid Import之后的脱壳文件竟然可以在本机同样平台上运行,
在其他平台上就跑不起来了,这个已经得到各位帮忙测试的朋友的证实。
关于IAT的修复,前面有大侠介绍脚本、补代码等修复方法,只是本人比较懒了。
可以使用以下懒方法修复
单独运行加壳程序,OEP既然知道了,IAT Start&IAT End就很容易知道了,填入OEP RVA Size,直接点获取输入表
法1、等级3修复
法2、使用ImportREC的ExeCryptor插件
注意:我找了几个ExeCryptor2.2.50加壳的程序(包括loveboom的“穿透eXeCryptor 2.2x 保护体系(年终篇)”中的例子),
使用这2个方法屡试不爽。但是,值得注意的是用等级3修复会有个别kernel32范围内的指针无法修复,或者是修复不准确,
根据经验判断此指针应该(不是一定)是GetModuleHandleA。
五、纠正Tls
获取了全部IAT之后,Fix Dump!
运行程序,既然出现了两个同样的窗口,偶尔几次运行会出现提示文件冲突!
这就是Tls Callback的原因了
使用LoadPE修正以下3个值为:
Base Of Code=1000
Tls Directory RVA=00000000
Tls Directory SIZE=00000000
再次运行程序发现一切正常
Alt+M
双击0046B000区段,发现
这些函数都有了,不需要我们手工添加了,手工!
使用此法,可以很快搞定loveboom的“穿透eXeCryptor 2.2x 保护体系(年终篇)”中的例子,
关于哪个例子,南蛮妈妈已经写有文章,只是OEP这个地方纠正得不太妥当,他是在程序中找空闲写Stolen Code的
完全可以遵照VB入口情况在原OEP处修复!
--------------------------------------------------------------------------------
【经验总结】
1、大家也可以使用loveboom的“穿透eXeCryptor 2.2x 保护体系(年终篇)”中介绍的方法来防止反OD
2、脱这个完全是稀里糊涂的oοО
3、
再此请教下关于DarkBull在他的文章之中提到的修复已初始数据的原理
4、以上需要的插件什么的。。大家自行搜索下载吧
5、感觉这一个Stolen Code不强,大家自行练习其他软件的时候,自行解决遇到的问题
6、此发适合2.2.50至于其他版本在下不知,2.2.50以下的版本还要简单
7、文中有何错误望大家指出,谢谢
8、
经过测试此法基本适用于2.2.60,当然具体问题得具体分析了
9、
Thanks All
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2006年08月09日 11:04:52