安全中国首页 > 文章中心 > 脱壳技术
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

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

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

 

在图中我们可以看到 API report 80000003 也在其中我们同样也可以看到report 的产生出406217(第一个INT 3的地址)

看起来我们已经进入正轨了当父进程第一次接收到来自子进程的一个INT 3解码了一张report,这张report存储了所有INT 3需要的信息。这些信息可以被另存于任何一个安全的地方,以方便我们需要时直接查阅而不必重新启动父进程

接下来的条件跳转第二次来到这里时要留心我们没有进入到decrypt routine

 

 

 

我并不关心Armadillo解码report的方法 我只是想知道解码后的值 所以我将要喘口气然后直接解释如何做

 

 

 

这是最有趣的一个section 它需要 API GetThreadContext 去读取子进程 EIP和标志寄存器的状态在那儿BPX 然后继续直到你来到API

F8跟踪运行API然后你将会看到下一行存有关于此API的信息

 

005C5E4F      8B95 E0F3FFFF MOV EDXDWORD PTR SS:[EBP-C20]          

 

在这一行右击鼠标选择 FOLLOW IN DUMP-MEMORY ADDRESS 你将会看到这个API数据信息

 

 

如果我们看一下dump下来的程序在第一个INT 3发生时我们可以看到EIP的值是406218标志寄存器EFL的值是00000202

 

下面这张图片来自子进程,停在了第一个INT 3

 

 

正如你看到的接下来几行代码就在处理这些值,在Table 1中查看这个INT 3 现在我们来看 Table 1

 

 

运行到ECX 获得Table 1的起始值的那一行停下,Table 1包含了每一个INT 3的内存地址

如果我到了这一行,再运行一下 ECX 会获得 table 1的起始值在我的机器里如图:

 

 

ECX上右击鼠标选择FOLLOW IN DUMP 到窗口去看Table 1

 

TABLE 1

 

 

这张表将会非常有用稍稍向下翻页我们将会看到我们当前所处的INT 3的地址值但是在表中这个值是紧接着INT 3的下一个地址值这对于我们通过patch 或者使用工具修复nanomites 非常有用

 

 

这儿你可以看到我所说的这就是INT3的下一条指令地址当父进程接收到INT 3时它就把子进程EIP和这张表进行比较,以此获得子进程当前的地址以及从section开始的INT 3数量

 

这就是Table 1的一切现在步进到指向 Table 2的地方

 

 

EAX 包含了Table 2的起始值当我们运行到这一行时同样在EAX上右击鼠标并选择FOLLOW IN DUMP ,我们将会看到Table 2

 

TABLE 2

 

上一页 1 2 3 4 5 6 下一页

 
相关文章
一日一文章
 
一日一软件
一日一动画