码迷,mamicode.com
首页 > 其他好文 > 详细

手动脱PeCompact 2.20壳实战-吾爱破解培训第一课选修作业四

时间:2015-07-15 11:25:48      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:   脱壳   pecompact 2.20壳   pecompact   手动脱壳   

作者:Fly2015

PeCompact壳又是一个没有听说过的壳,需要脱壳的程序是吾爱破解培训的第一课的选修作业四。最近对脱壳有点上瘾了,当然也遭受了脱壳受挫的无奈,但是比较幸运还是把这个壳给搞了。

 

对加壳程序进行查壳。

工具DIE显示程序加的是PeCompact壳,并且原来没加壳的程序使用Microsoft Visual C/C++(2008)编写的,这一点对于查找原程序的真实OEP非常有帮助。

技术分享

技术分享

OD载入加壳的程序进行分析,加壳程序的入口点的汇编代码。

技术分享

F8走了几步,坑啊,写壳的作者在代码中设置了异常,例如上图中标识的指令就会导致F8单步的时候触发向地址0赋值的异常,即使将这两条指令Nop掉,后面的指令中F8单步跟踪也会触发异常。

技术分享

要对这个加壳程序进行脱壳,就必须规避触发指令中异常的问题。是不是不能处理呢?还是有办法规避异常问题的,还好加壳的作者比较善良。

既然F8单步的方法不能处理,那就想另外的办法对加壳程序进行脱壳。Ctrl+F2再次载入该加壳程序进行调试分析,并在函数VirtualProtectAVirtualProtectExA上设置断点(直接使用OD提供的API设置断点插件在API函数的上设置断点),如图。

技术分享

F9运行4次,此时OD中的程序的状态如图。坑啊,这个壳的IAT表在不经意中就被暴漏了,IAT表的起始地址VA432000

技术分享

Alt+F9让程序从系统临空回到用户程序的临空,停在用户程序的指令代码中如图。

技术分享

Ctrl+F9执行完所在的函数到Retn指令处,F8单步回到上一层的调用方函数中如图。

技术分享

Ctrl+F9再次执行完所在的函数到Retn指令处,F8单步回到上一层的调用方函数中如图。

离脱壳已经很近了,直觉告诉地址00455D8E  jmp eaxEAX保存的值就是原程序真实OEP的地址。 

技术分享

在地址00455D8EF2断点,F4/F9运行到此处,得到EAX=0041DDAC即为原程序真实的OEPVA地址。

技术分享

F7单步跟进到地址0041DDAC处,选中部分内存数据,Ctrl+A分析内存数据,终于见到了光明。

技术分享

OK,原程序的OEP找到了,使用Load PERECImport 工具或者Scylla工具进行程序的完美脱壳,IAT表的修复也比较顺利。

技术分享

运行一下脱壳后的程序,证明脱壳成功。

技术分享

手动脱PeCompact 2.20壳的文档分析和脱壳后程序的下载地址:http://download.csdn.net/detail/qq1084283172/8900459


版权声明:本文为博主原创文章,未经博主允许不得转载。

手动脱PeCompact 2.20壳实战-吾爱破解培训第一课选修作业四

标签:   脱壳   pecompact 2.20壳   pecompact   手动脱壳   

原文地址:http://blog.csdn.net/qq1084283172/article/details/46888213

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!