比较常用的脱壳方法

OllyDBG常用快捷键
F2:设置断点,只要在光标定位的位置按F2键即可,再按一次F2键则会删除断点。

F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码。

F7:单步步入。功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。

F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停。

F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。

CTR+F9:执行到返回。此命令在执行到一个 ret (返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。

ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空。

Shift+F9 忽略异常运行

比较常用的脱壳方法:

 

方法1:单步跟踪法
(1)用OD载入,点“不分析代码”

(2).单步跟踪原则是向下的跳转继续运行,向上的跳转不让它实现,直到找到程序OEP。向下跟踪用F8单步执行,遇到程序往上跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选 择断点——>运行到所选),绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现

(3)如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑  飞,这样很快就能到程序的OEP

(4)在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入

(5)一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN  的一般很快就会到程序的OEP


注:在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。一般情况下可以轻松到达OEP
 

方法2:ESP定律法
    ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)

(1)开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)(这只是一 般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)

(2)在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX)按回车,或者右击ESP红色处-->数据窗口中跟随 ,

(3)选中数据窗口中要下断点的地址,断点--->硬件访问--->WORD或DWORD断点

(4)按一下F9运行程序,此时注意不论下一步做什么都及时删除刚才的断点,然后直接来到了跳转处,按下F8,到达程序OEP
 

方法3:二次内存镜像法
(1)用OD打开软件

(2)点击选项——调试选项——异常,把里面的忽略全部√上。CTRL+F2重载下程序

(3)按ALT+M,打开内存镜象,找到程序段的的第一个.rsrc.按F2下断点,然后按SHIFT+F9运行到断点(注意观察是否运行了,有时不运行需要再按一遍)。第二次接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的.CODE(也  就是00401000处),按F2下断点。有异常的话按SHIFT+F9(或者是在没异常情况下按F9),再单步F8,很快便 直接到达程序OEP


方法4:一步到达OEP
(1)开始按Ctrl+F,输入:popad(只适合少数壳,包括UPX,ASPACK壳),然后按下F2,  F9运行到此处

(2)来到大跳转处,点下F8,到达OEP

 

方法5: 最后一次异常法
(1)用OD打开软件

(2)点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序

(3)按SHIFT+F9,直到程序运行,记下按SHIFT+F9的次数m

(4)CTRL+F2重载程序,按SHIFT+F9(这次按的次数为程序运行的次数m-1次)

(5)在OD的右下角我们看见有一个"SE 句柄",这时我们在编译区右击转到-->表达式(或按CTRL+G),输入SE 句柄左边的地址

(6)按F2下断点,然后按SHIFT+F9来到断点处

(7)去掉断点,按F8慢慢向下走

(8)到达程序的OEP


方法6: 模拟跟踪法
(1)先试运行,跟踪一下程序,看有没有SEH暗桩之类

(2)ALT+M打开内存镜像,找到(包含那一列中出现SFX,imports,relocations或者SFX,输  入表,重定位)

(3)若地址为00xxxxxx在命令行下输入tc eip<00xxxxxx,回车,提示正在跟踪


方法7: SFX法
(1)设置OD,忽略所有异常,也就是说异常选项卡里面都打上勾

(2)切换到SFX选项卡,选择“字节模式跟踪实际入口(速度非常慢)”,确定

(3)重载程序(如果跳出是否“压缩代码?”选择“否”,OD直接到达OEP)
--------------------- 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值