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

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

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

 

这就是Table 3它以四个字节为单位,所以你想在Table 3中定位任何一个值,

这样计算:Table 3起始值 + X * 4

 

我们跟踪到这一行,它将位移值移入EDXEDXTable 3中所对应的值将和

INT 3所在的地址值相加

 

005C5EF9     8B95 20F3FFFF MOV EDXDWORD PTR SS:[EBP-CE0]

 

EDX= 2A

 

在下一行 EAX 被赋予Table 3起始值

 

005C5EFF     A1 881A5E00   MOV EAXDWORD PTR DS:[5E1A88]

 

在我的机器里 3E6870就是Table 3的起始值

INT 3的地址值是406218在第三行她被赋给ECX然后在第四行和EIP相加

 

005C5F0A >   030C90        ADD ECXDWORD PTR DS:[EAX+EDX*4]

 

Table 3起始值+位移2A x 4 给出了这个INT 3Table 3中对应的值。

 

新的EIP= 406218+[EAX+EDX*4]=40621C

 

如果我在子进程中写下JMP 40621C 来代替INT3就搞定了

 

 

子进程如图

 

 

这里是我修复第一个INT 3

 

 

右击鼠标选择 NEW ORIGIN HERE 406217 然后运行

 

 

这是子进程中的第二个INT 3 (40622E)

 

如果我们返回父进程,它通过这个API 完成对第一个INT 3的处理

 

005C5F41      FF15 80E05D00 CALL DWORD PTR DS:[<&KERNEL32SetThreadC>; \SetThreadContext

 

这是和GetThreadContext正好相反的API GetThreadContext读取EIP现在通过SetThreadContext写入新的EIP改变子进程EIP40621C然后继续运行

 

这就是父进程的工作方式运行父进程去研究第二个INT 3

 

停在数学运算的开始

 

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

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