常用的脱壳方法

Eddy 发布于2010-1-20 16:50:20 分类: 加密解密 已浏览loading 网友评论0条 我要评论

1、单步法
   顾名思义:就是一直单步F8、F7走

2、ESP定律法
在关键句的下一行、下ESP断点、
例如: push ebp
       Mov ebp,esp   (注意此时的Esp值变化、转存中跟随到数据窗口、下硬件访问断点-DeWord(双字节))

3、两次内存断点法
   打开内存镜像(Alt+M)、在data段、下内存访问断点。F9运行、再次打开内存镜像、在code(text)段、下内存访问断点、F9运行。此时即可到达OEP

4、自解压法
    自解压文件由提取程序和压缩的原程序两部分组成。当遇到自解压文件(SFX)文件时,我们通常希望跳过解压部分,而直接跳到原始程序的入口(真正的入口)。OllyDbg 包含了几个便于完成这一任务的功能。

通常提取程序的加载地址都在执行代码之外。在这种情况下,OllyDbg 将这类文件均视作为自解压文件(SFX)。

当自解压选项[SFX options]要求跟踪真正入口时,OllyDbg 在整个代码节[Code section]设置内存断点,最初这里是空的,或者只包含压缩数据。当程序试图执行某个在这个保护区域的命令,而这些命令不是 RET 和 JMP 时,OllyDbg 会报告真正的入口。这就是提取工作的原理。

上面的方法非常慢。有另外一种比较快的方法。每次读取数据发生异常时,OllyDbg 使这个4K内存区域变为可读,而使原先可读的区域变为无效。而每次发生写数据异常时,OllyDbg 使这个区域变为可写,而使原先可写的区域变为无效。当程序执行在保留的保护区域中的指令时,OllyDbg 报告真正的入口。但是,当真正的入口点在可读或可写区域内部时,报告的地址就可能有误。

您可以纠正入口位置,选择新的入口,从反汇编窗口的快捷菜单中选择“断点[Breakpoint]|设置真正的自解压入口[Set real SFX entry here]”。如果相应的SFX选项是开启的,OllyDbg下次可以迅速而可靠的跳过自提取程序。

注意:OllyDbg 在跟踪采取了保护或者反调试技术的解压程序时通常会失败。

5、Trace(命令跟踪法)
Tc   Eip<(后面的地址跟上你在内存镜像中看到的、包含SFX的区段对应的地址)

6、最后一次异常法
  前提条件:Shift+F9运行、程序一下就运行起来的话、是不能用这个方法的
  不要忽略所有异常、就是把异常选项去掉、接着就是Shift+F9一直运行、直到程序运行跑起来、此时记住从开始到程序运行起来的Shift+F9的次数(假如是N次)

那么下次运行就是N-1次、此时在堆栈窗口、看下有SE句柄、Ctrl+G 来到那个地址、F2断点、Shift+F9运行。取消断点、此时单步、即可到达OEP

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/decryption/347.html     欢迎订阅Eddy Blog

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言