记一次手动脱壳

来源:互联网 发布:lol美服加速器免费mac 编辑:程序博客网 时间:2024/06/11 00:41

以前一直都是用脱壳工具直接脱壳,最近学了手动脱壳的一些知识,就尝试了一次简单的手动脱壳。
我使用吾爱破解版的OD来脱壳,因为上面自带了插件OllyDump。不得不说这个功能十分强大,原以为脱壳出来还要重建修复表的,结果发现居然不用,完成了以后一脸懵逼,完全不敢相信成功了。
首先,遇到了这个的话,都选否。
这里写图片描述
原来的OD似乎是要先执行一段代码,再开始执行壳的(从pushad那里开始)如下图:
这里写图片描述
执行那个call函数以后,才开始执行壳:
这里写图片描述
而吾爱破解版的有所不同,上来就是壳的代码:
这里写图片描述
这里采用PUSHAD—POPAD法:壳开始是PUSHAD,那么结尾一定在POPAD附近。
直接Ctrl+F,搜索popad,去掉“整个块”上的钩
这里写图片描述
在那里f2设上断点,f9运行到,或者直接在那条指令上按F4(运行到此处停止)
这里写图片描述
接下来的3条语句循环应该是平衡栈,直接设断点f9跳过,然后到了那个jump那里,执行跳转,到的就是OEP(程序原入口点)。
这里写图片描述
这里普及一下OEP的判断,关于调用main前被调用的函数:
这里写图片描述
关于起始的汇编语句:
这里写图片描述
可以对比一下,基本一致。
各语言的OEP开始几行代码参考:
http://blog.csdn.net/pxm2525/article/details/39968381
调试运行到了OEP后,插件-OllyDump-脱壳在当前调试的进程。
这里写图片描述
点击脱壳就行了。可以看到起始地址由0x40f8d0改为了0x40131e。
脱壳后程序可以用IDA分析了(不过分析时还是会有提示说有壳)。
这里写图片描述
关于手动脱壳的其他方法,可以参考
http://www.docin.com/p-1602586172.html

0 0
原创粉丝点击