今天主要是深入的了解汇编语言,要想反编译没这个可是不行的啊。当然,这也不是一天两天可以成功的,继续努力。

 

一.如何分辨加密壳:

壳分为加密壳和压缩壳,压缩壳目的是减少软件的体积便于在网上传播,

而加密壳目的是防止软件被脱壳和破解,所以加密壳全部有反跟踪代码

,会有许多SEH陷阱使OD调试时产生异常.也就是说在跟踪过程中很容易

导致程序运行,使你无法跟踪分析.而压缩壳相对比较容易,脱壳也比较

简单,一般没异常出现.

 

二.脱加密壳的相关知识要点:

在加密壳中,变形CALL比较多,遇到变形call要F7代过,区别是否是变形Jmp的一个简单方法是比较call的目标地址和当前地址,如果两者离的很近,一般就是变形Jmp了,用F7走。对于Call的距离很远,可以放心用F8步过.加密壳中F7用的比较多,压缩壳中一般用F8单步跟踪就可以搞定.

脱加密壳,用OD载入,钩掉所有异常(不忽略任何异常,除了忽略在KERNEL32 中的内存访问异常打勾.数着用了多少次Shift+F9程序运行,显然最后一次异常后,程序会从壳跳到OEP开始执行,这就是我们寻找OEP的一个关键,如果程序 Shift+F9后直接退出,很明显加密壳检测调试器,最简单的应付方法就是用OD插件隐藏OD.

单步异常是防止我们一步步跟踪程序,这一系列的异常虽然干扰我们调试,但也给我们指明了一条通路,就是Shift+F9略过所有异常,然后找到最后一处异常,再它的恢复异常处下断点,跟踪到脱壳入口点.

 

 

三.加密壳的一般脱壳步骤:

介绍:这种方法一般用于加密壳,这是脱加密壳的一种通用方法.

第一步:用OD打开程序,点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序.

第二步:接着我们按SHIFT+F9,直到程序运行,记下从开始按SHIFT+F9到程序运行的次数n.

第三步:重载程序,再按SHIFT+F9,这次按的次数为上次让程序运行时的次数的n-1次.

第四步:此时观察OD的右下角有一个”SE 句柄”,这时我们按CTRL+G,输入SE 句柄前的地址!来到这个地址.

第五步:在这里,按F2下断点!然后按SHIFT+F9来到断点处!

第六步:这时候我们已经跳过了所有异常,然后去掉断点,按F8慢慢向下跟踪很快就到达OEP了.

修复—-用LORDPE重建PE

版权声明:本文为falcon-fei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/falcon-fei/archive/2009/03/04/2379914.html