通过查看堆栈_手工脱壳

通常在软件的破解过程中,会遇到代码经过混淆器混淆的程序,此类混淆器可以称之为壳,壳又可分为压缩壳(常见的有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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java 中,当程序运行时发生异常,JVM 会自动打印出异常堆栈信息。异常堆栈信息包括异常类型、异常发生的位置、调用栈信息等,可以帮助我们快速定位问题并进行调试。 下面是一个简单的 Java 程序,其中会抛出一个 NullPointerException 异常: ```java public class ExceptionDemo { public static void main(String[] args) { String str = null; System.out.println(str.length()); } } ``` 当我们运行这个程序时,会得到如下的异常堆栈信息: ``` Exception in thread "main" java.lang.NullPointerException at ExceptionDemo.main(ExceptionDemo.java:4) ``` 可以看到,这里抛出了一个 NullPointerException 异常,并且异常发生在程序的第 4 行。通过这个异常堆栈信息,我们就可以快速定位问题所在。 关于即时编译优化和异常堆栈丢失的问题,它们之间的关系可以简单描述为:即时编译优化可能会导致异常堆栈信息丢失。这是因为,为了提高程序的执行效率,JVM 可能会对代码进行一些优化,包括方法内联、循环展开、消除冗余操作等。这些优化可能会使得程序的执行过程变得复杂,从而导致异常堆栈信息丢失。 为了解决这个问题,我们可以通过关闭即时编译优化来保留完整的异常堆栈信息。在 Java 中,可以通过设置系统属性 `-XX:-OmitStackTraceInFastThrow` 来关闭即时编译优化。这样,即使程序发生异常,也能够保留完整的异常堆栈信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值