使用单步跟踪_手工脱 ASPack

通常在软件的破解过程中,会遇到代码经过混淆器混淆的程序,此类混淆器可以称之为壳,壳又可分为压缩壳(常见的有UPX、北斗、ASDPack、Npack、PECompact等)和保护壳(如强壳Safengine、VMprotect、winlicense、Themida等),压缩壳作用是把程序进行体积缩小化处理,保护壳主要作用是混淆或加密代码防止他人进行逆向程序、破解程序。我们可以通过一些侦壳程序进行识别,但有些壳会采用伪装技术来混淆侦壳程序。

下面还是使用原来的课件,只不过我们本次使用单步法,进行脱壳,使用本方法需要注意call指令,如果call指令步过后程序被运行起来则说明跑飞了,需要重新加载程序,下次运行程序后在跑飞的位置使用F7进入call中,继续执行,循环往复,直到找到OEP位置,沉住气慢慢来。

本次我们使用ESP定律来脱一个ASPack的壳,先来准备课前工具,以后将使用这几个工具。

DIE查壳工具:https://files.cnblogs.com/files/LyShark/DiE_0.64.zip
课件内容:https://files.cnblogs.com/files/LyShark/ASPack.zip

1.话不多说,直接开搞,OD载入这个练习程序,默认停在了壳的入口处。

2.接下来我们就一直使用F8键,单步执行就好。F8到第一个call的位置,程序跑飞了,重新载入程序,到这个call的时候,直接F7进入Call内部。

扫描二维码关注公众号,回复: 6757652 查看本文章

3.然后一直F8单步,遇到下面的这个Call的时候程序再一次被运行起来了,那我们记下这个位置,重新载入程序,到这里的时候直接F7跟进。

4.在F8的时候,有时会遇到一些循环,我们没有必要跟着它执行,可以直接运行到jmp 指令的下方。

5.继续F8单步执行,遇到循环就直接F4到下一行,只要程序不跑飞,就一直F8单步。

6.最后,如果一切顺利的话,你就可以看到程序的OEP啦,直接脱壳就好了。

7.直接脱掉!

你一定会有个疑问,为啥你会知道这是OEP?

每个编译器生成的代码OEP都不一样,这也是为什么我们在脱壳的之前,要确定它使用的编程语言以及版本的原因啦。具体的OEP样子,我这里收集了一些,如下:

猜你喜欢

转载自www.cnblogs.com/LyShark/p/11140058.html