通过查看堆栈_手工脱壳

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

 

下面还是使用原来的课件,本次我们通过查看堆栈进行脱壳,先来下载以下这个课件把。

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

 

1.直接开搞,将课件拖入OD,直接诶运行OD让程序跑起来。

 

2.观察堆栈窗口,找到下面的部分,SE处理程序。

 

3.堆栈窗口,向上找,到达这个段的断首位置。我们会看到几个标红的位置,全部记录下来。

 

4.逐个排除,这里有个小技巧,我们不要选择kernel32.xxx,user32.xxx 这种的,然后尽量选择地址靠后的。

0012FF14 |0047400A 返回到 ASPack.0047400A
0012FF24 |0046BBD1 返回到 ASPack.0046BBD1 来自 ASPack.00473FC3
0012FF38 |0045DCC5 返回到 ASPack.0045DCC5 来自 ASPack.0046BBBC
0012FF78 |76309B35 返回到 IMM32.76309B35 来自 kernel32.InterlockedDecrement
0012FF88 |76302B56 返回到 IMM32.76302B56 来自 IMM32.ImmUnlockClientImc

 

5.先看第一个,右键-> 反汇编窗口跟随。

 

6.然后在反汇编窗口中向上托,到断首,看是不是OEP,很明显这个不是。

 

7.这里直接看第三个把,节约篇幅跳过第二个了,第二个不是。

 

8.反汇编窗口,向上推,推到断首,看到了SE处理程序字样,没错,就是OEP。

 

9.下一步是,让其下次运行程序后,停在这个入口地指处,直接点击右键,数据窗口中跟随。

 

10.直接在数据窗口的开头出,下一个硬件执行断点。

 

11.重新载入程序,直接点击运行按钮,让程序跑起来,默认程序会断下,断在OEP的位置。

 

12.直接脱掉就好。

转载于:https://www.cnblogs.com/LyShark/p/11141508.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值