安全中国首页 > 文章中心 > 脱壳技术
 

牛壳ARMADILLO和 NANOMITES (第一部分)(图)

更新时间:2008-5-14 0:18:51
责任编辑:果果龙
热 点:

FTBirthday的Armadillo全程教程--第二章copy-mem II加壳方式

第二章.copy-mem II加壳方式

 

[实例解析四][翻译]牛壳ARMADILLO NANOMITES (第一部分)

 

现在我们又开始了我们将要去击败Armadillo的最后一道防线。我们知道这将是一场硬仗但值得去打 所以这回我们要专门解释一下nanomites 保护和unpack的方法那将会比我们在其它教程中见到的稍微难一点。所有nanomites copymemII配合使用所以为了成功地dump,你需要遵照我在其它两篇教程中写的步骤。

这次我们选了一个比较容易dump的目标软件这样做仅是为了避免重复我在上次教程中所写的步骤无论如何我们只有在dump之后才能对付 nanomites 所以如果存在nanomites 保护,那么在dump之后作为一项附加任务,我们必须击败nanomites 保护

 

NANOMITES到底是什么样的地狱般的阴险招数?

 

NanomitesArmadillo嵌入子进程INT 3中断虽然在GETRIGHT FINAL版本里没有使用nanomites 保护,但是却在CRUSADER写的教程里的beta版本里用了。 可能有 50 100甚至 200INT 3它们被放入了子进程的第一个section ,以阻止子进程脱离父进程运行INT 3中断替代了原始文件的条件跳转所以每当父进程接收到INT 3中断它就到存放跳转类型的report中去看一下标志以决定是否跳转然后测算出新的EIP改变到子进程中去然后继续运行直到下一个 INT 3

问题是我们不知道每个跳转和INT 3的对应关系所以我们将要在本篇教程中学习如何patch 首先我们要学如何手动patch它,然后(在第二篇教程中) 我们将要学习如何让计算机自动逐行patch

 

我们将要用 eSTOP SE 321做实验

下面是连接:

http://wwwnwpswcom/estopmainhtml

在我的FTP里有一份拷贝

我们dump这个程序的方法和以前的方法稍微有所不同如果我们想尝试用一般的方法去dump它不会在 WriteProcessMemory断点停下我第一次遇到这种情况时,我怀疑这个程序是否用了CopyMemII保护但是当我停下来去看attach window时我看到了父进程子进程的进程 那么它是如何做的呢?

这个程序只是用了nanomites保护所以在这种情况下 父进程unpack过程中没有做任何事情。子进程自己 unpack自己修改它自己的IAT自己unpack第一个section然后最终跳向它的OEP

父进程仅在子进程开始运行时出现了一次然后INT 3出现了这回你要是想 dump eSTOP你就必须得遵照GETRIGHT重建输入表的第二篇教程找到 magic jump 最后在第一个section设一个BPM ,所以一旦输入表修复完毕它就停在它的OEP上了一旦你到达这里dump这个进程然后用Import Reconstructor 来修复这一进程的输入表。

在这里如果我们运行dump下来的程序,它将在这里崩溃

正如你看到的在406217出现了第一个INT 3让我们欢迎丛林男孩! 我想Rambo(丛林男孩)可以帮助我解决这个问题所以我打电话给他但是他不在家,所以我读了CRUSADER’s 的教程,这可帮了大忙了读完后我知道了在 INT3 所在之处我们需要插入一些跳转所以现在我们需要知道要插入何种类型的跳转

OLLYDBG中重新启动程序 (原始程序不是 dump下来的程序) 现在我们去找在哪儿父进程开始和NANOMITES合作在入口处停下右击鼠标选择SEARCH FOR BINARY STRING 然后看这个十六进制的字符串03 00 00 80

 

 

在我的机器里它停在了 5C5BAF

 

 

不用管内存地址因为在其它Armadillo保护的软件中这个地址会变的真正关键的是找到那些代码第一次停下来时来到这一行:

 

005C5BAF   817A 0C 03000  CMP DWORD PTR DS:[EDX+C]80000003

 

最重要的是80000003可以说那是开始子进程的地址, 因为这正是父进程WaitForDebugEvent report中得到的如果是其它任何值那就不是nanomite保护BPX 5C5BBC然后把antidebuger byte0或者bp IsDebuggerPresent 然后把 eax中的值改为 0运行程序跳过第一次异常,继续运行

 

 

试用版提示对话框将会弹出,按OK然后通过shift+F9 组合键跳过一切异常 现在它将会停在我们下的断点 BPX

你可以看到EDX指向WaitForDebugEvent report 所以右击鼠标选择 FOLLOW IN DUMP我们可以看到下面的report

 

 

1 2 3 4 5 6 下一页

 
相关文章
48小时热门文章
 
48小时热门软件
48小时热门动画