本帖最后由 zhang054 于 2011-7-17 15:19 编辑
晕死~~昨晚就想发这帖子了,结果打到一半时候猫被爸爸妈妈拔了悲剧...
下面正文:
首先说明下.我本人也是个新手.发帖是跟大家互相交流,提升自己,大家发现有什么不对的地方请指出,我改正。 此次脱壳我只用到两个软件:peid 和 OD ,其实,我认为,新手更应该熟练使用这两个软件,尤其是OD,里面的诸多插件是非常强大的,堪比神器! 记住单步跟踪的要点:逢CALL就F7,向下跳转就F8,向上就在下一行F4。 废话不多说,下面开始:
1.PEID查壳:
2.OD载入:
3.向下的跳转.F8
4.向上的跳转,在下一行F4
5.遇到CALL子程序,F7步入
6.特殊的向上跳转,在下一行F4之后程序就终止了:(这个非常关键,因为一不注意程序就挂了.这考验我们的分析能力)
7.经过仔细分析.我发现了这个特殊的跳转上面有一个跳转跳过了这个死CALL:
8.解决这个问题之后,很快到达了一个很长的跳转:
9.到达OEP:
10.脱壳后PEID查壳:
最后.运行脱壳后的文件,发现载入速度比脱壳前快了许多。
总结:大家看第6点,这个跳转下面有个CALL,我一点F4程序就终止了,仔细分析,是上面有个跳转跳过了这个CALL,实际运行中,是不会调用这个CALL的。所以
我们在脱壳破解中一定要仔细分析,多动脑,不要生搬硬套,知其然不知其所以然。
单步跟踪法的话这里还有一个帖子,讲得很详细:http://www.52pojie.cn/thread-23316-1-1.html
下面简单讲讲ESP定律找OEP:
1.OD载入:
2.点ESP,右键-在数据窗口跟随:
3.设置硬件访问断点:
4.F9运行,下面再走几步就到OEP了,我就不多说了。
其实,还可以用命令直接设置硬件访问断点,如图:
完毕。。。
下面讲一步到位法,这个方法是根据语言的特征(入栈与出栈相对应),来找到OEP:
1.OD载入就出现了PUSHAD,直接查找命令:
2.查找POPAD,记住不要勾选“整个块”,不然就不知道会飞去哪了- -||
3.跳到出栈位置,下面再走几步就到OEP了,我就不多说了。
完毕。。。
|