脱壳八法


第一个esp定律会写得详细一些。

1. ESP定律

有pushad,寄存器只改变esp,基本上就能用。

硬件断点只要从这个地址开始就行,选多少个字节都行。

注意观察大的跳转,ctrl+a或删除分析。

用完后记着删除,不然可能影响后面分析。

如果不知道是否重建输入表,那就两个都试一下。打不开的删除就好了。

2. 单步跟踪

如果有pushad,要注意popad。

注意peid查语言,了解入口特征!!!!!!!!!!!!!!!!

3. 两次断点

调试设置-异常-全部打勾,即忽略全部异常。

  1. 在M窗口的程序领空段下cc断点,shift+f9(忽略异常运行);
  2. 再在壳的段下cc断点,shift+f9.

4. 最后一次异常

与两次断点法相反,调试设置-异常-全部不打勾,捕获所有异常。

按shift+f9,数着按多少次,程序能正常开启。视频里按了两次,所以有一次异常。

重启,按一次shift+f9,在堆栈里可以看到SE处理程序。在这里右键-反汇编窗口跟随,下cc断点,shift+f9,中断在这里,然后单步跟踪。

发现popad后遇到jmp,没有向上或向下的箭头,而是“-”,说明是很大的跳转。跳过去就是OEP了。

5. SFX

这个方法很简单。

调试选项,异常全部打勾, SFX选择“字节方式跟踪真正入口处(非常慢)”。

SFX: Self File Extracting.

然后重载,状态栏会显示跟踪中,找到后会自动停下来。

这种方法用完后记着把SFX勾回“停在自解压的入口处”

6. 模拟跟踪

查看M窗口壳在当前区段xxxxx000,command输入tc eip < 起始地址,就会开始跟踪。非常非常慢。所以模拟跟踪也不是一开始就这样用的。

借用两次断点法,现在rsrc区块下cc断点,shift+f9,再在text下cc断点,shift+f9。

现在,可以用命令tc eip<xxxxx000了。

网课的几个案例text否是01xxxxxx区块,而不是00401000。要判断一个程序的基址,可以查看E窗口。

7. 出口标志

回忆一下,之前说过popad很关键。所以可以ctrl+f搜索popad。

注意不要搜索整个块,而且像ASpack这样的壳会有多个popad,要注意popad之后的命令,判断应该在哪里f4。一般一个个试,跑飞了就寻找下一个ctrl+l

8. 秒到OEP

直接运行,堆栈窗口从高地址往低找返回到程序名.地址,其中就有OEP,反汇编跟随。

在OEP处数据窗口跟随,下硬件执行断点,重载运行。

有些强壳(视频中的案例是zp壳),找到某个程序名.地址删除分析后,堆栈才会显示一个个栈帧,然后才会显示返回到...

确定OEP脱壳后,特征明显不对,程序也没法执行,这时就需要LordPE,对该文件右键-修正镜像大小,右键-完全脱壳, 最后用impREC修复OEP,并自动查找IAT,获取输入表,查看无效函数,删除(没有dll的)指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值