课件下载地址

链接:http://pan.baidu.com/s/1qYAfHeO 密码:l5ku

脱壳的教程涉及到 DIE、PEID、OD、ImpREC FINAL、LORDPE这几个软件的使用,在我之前的破解工具包中 有所有软件,大家可以下下来~ 

工具包下载地址 http://www.dbgpro.com/archives/333.html

我们先把课件下下来,用PEID查壳 PEID在我们的软件破解包中的 编译侦测这一栏~

如果你们的PEID这里显示 什么都没找到,那么 ,你点一下选项,在弹出的窗口 选中核心扫描

然后我们再拿 DIE看看是什么语言写的 好找OEP 

上面两个步骤不是必须的~只是我个人脱壳的习惯,喜欢先看看什么壳,然后有个思路

看看什么语言写的 是为了找到方便找他的OEP。。免得过了都不知道 如果你还不知道各类语言的OEP长什么样子 请移步 http://www.dbgpro.com/archives/347.html

好了 进入今天的正题

今天我打算用单步跟踪法和ESP定律脱UPX壳,我们先来看看单步跟踪法

OD载入

这里我们随便点是 点 否 都行,我点否,这样不用分析代码 加载比较快 还有个就是 有时候点是 分析代码的话 因为代码没解压 分析出来的是错误的 到达OEP以后是乱码~得删除分析

进入到这里以后不管他,我们只要单步F8就行,一直到OEP,注意,我们单步跟踪的时候有个原则,向上的跳转 我们在他的下一行 选中 按F4 ,如果下一行是跳转或者call就再下面一行F4,不管向上还是向下的跳转,我们都不能改寄存器标志或者代码让他不实现,我们所谓的F4 是指运行到这一行,而不是执行向上的跳转,实际他已经跳过去 并执行完了!


这段话看起来可能不好理解,待会碰到这种代码我们来解释就好理解了~

好了 我们F8开始单步跟踪 

这就是我们说的 向下的跳转,我们不管他,继续单步

单步几次后 我们来到一个向上的跳转,

我们说了 如果有向上的跳转实现了,我们就要在他下一行选中,按F4

我们不跟这个跳转,在他的下面一行F4,然后继续F8

F8走了几步 又到了一个向上的跳转,大家应该知道怎么干了吧!我们F4后 继续F8



这里又是一个实现了的向上的跳转,而且他下面还是个跳转,我们就要在他下面的跳转的下一行F4 0057912d是实现的向上的跳转 本来我们要在005712F F4的 但是他是一个跳转,我们就在00579131处F4

F4后 我们继续F8 跟了几步后 到了一个循环,我们也不跟这个循环跑,我们再循环的下一行 F4

走了几步 发现有个jmp跳转  jmp的下一步是call suoyi women zai popad处下F4断点

再单步F8 发现是个很大的跳转,从004791ef跳到0047738c处 可以看到地址跨度非常大,一般脱壳的时候 看到 POPAD或者大跳转 或者 retn就要注意了 看看下一步是不是到达OEP了~

我们再JMP出 F8跟过去,发现 已经到了OEP

OEP已经到了 接下来的事 就是脱壳了~ 我们先记住我们的OEP地址 是47738c rva(相对虚拟地址)就是 7738c

脱壳有3种常见的方法,我们今天都介绍下,前两种都是用OD插件脱壳

我们到达OEP后,在OD的反汇编窗口中 单击右键 选择 用OllyDump脱壳调试进程

在弹出的窗口的下方 有方式1 方式2,

这里我们选择方式1 大家待会自己试试方式2!

选择方式1后 把我们的RVA填入 修正为 后面的框框 然后点击 脱壳 他会弹出一个保存文件框 输入文件名 点保存即可 我的文件名是1

运行看看~

方式2大家参考方式1来做,我就不演示了

接下来演示下用LORDPE脱壳,我们打开破解工具包 找到LORDPE 然后找到我们要脱壳的进程

点右键选择修正镜像大小

修正完了以后 我们点右键 选择完整转存

他会给我们保存一个文件 默认是dumped.exe

这个文件是打不开的 必须要用 IREC修复一下才行,我们从破解工具包打开 Import REConstructor 

在下拉框找到我们要修复的进程

选择他,然后右下角 OEP那个文本框 输入我们的RVA 然后点击自动查找IAT 然后再点击获取输入表(今天这个例子没有无效函数 无效函数的操作 下一次演示),然后再点击转储到文件

选择刚才lordpe给我们保存的文件

点击保存,生成了一个叫DUMPED_.exe的文件 我们运行看看 是不是OK了~

现在我们来看看ESP定律脱壳

重新载入

载入OD以后我们看到 第一句话是PUSHAD 这句话是关键语句 一般来讲 有PUSHAD的都可以采用ESP定律脱壳,我们F8单步走,注意看寄存器窗口

我们单步以后,发现寄存器窗口只有ESP寄存器发生了变化(红色表示有改变),我们在ESP这个寄存器上的点右键 选择数据窗口中跟随 如下图

然后我们看数据窗口,已经跳转到这一个内存地址了,

我们在数据窗口,选择这一行,然后点右键,选择断点->硬件断点->硬件访问 随便选哪个都行~

下好断点后,我们F9运行起来,

然后发现程序断下来了~ F8继续单步,

F8一次以后 我们发现 已经到达OEP~

今天的教程就更新这么多了,脱壳教程大概每周更新1–2篇文章左右

打赏