首页
社区
课程
招聘
彩虹3.x狗壳脱壳后IAT修复方法
2007-5-8 16:33 5082

彩虹3.x狗壳脱壳后IAT修复方法

2007-5-8 16:33
5082
刚破一个彩虹3.x狗壳,摸索出一个修复IAT的方法与大家分享。
    用kangaroo的脚本很容易找到解压密码和OEP,怎样脱壳请找kangaroo的文章。
    原文件中的CALL [API地址]这种形式的API引用已被壳偷取替换掉,但call 寄存器这种形式的API引用没有被偷取掉,例如:
00458CF2    8B1D C4A04700   mov     ebx, dword ptr [47A0C4]    ; GDI32.GetDeviceCaps
00458CF8    8BF8            mov     edi, eax
00458CFA    6A 58           push    58
00458CFC    57              push    edi
00458CFD    FFD3            call    ebx                       ; GDI32.GetDeviceCaps
    壳代码中处理被偷取代码的部分也是引用一个结构和IAT一样的地址表,我们可以直接用工具修复。因此我们要修复2个IAT,才能保证脱壳后跨机器和平台,一个是stolen code中用的IAT,一个是原文件的原来的IAT。
    找stolen code中用的IAT方法:见kangaroo的文章中,例如找到
004BD229    FF15 DC234D00   call    dword ptr [4D23DC]               ; kernel32.GetExitCodeThread
004BD22F    817D F4 0301000>cmp     dword ptr [ebp-C], 103
004BD236   /74 0D           je      short 004BD245
004BD238    A1 A0DA4C00     mov     eax, [4CDAA0]
004BD23D    8945 FC         mov     [ebp-4], eax

4D23DC就是在IAT中,CTRL+G到4D23DC,上下观察分析,例如得到IAT 4D212C-4D291B  长度7F0
    找原文件的原来的IAT的方法:在stolen code中用的IAT中选一个4字节项,CTRL+B整块查找二进制项,CTRL+L查找下一个,分析找到的内容,例如得到IAT 47A000-47A7B3  长度7B3
    好了,2部分IAT都找到了,用ImportREC 1.6分别get Imports 2下就行了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
打赏
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wangkaiep 2007-5-8 16:43
2
0
脱壳的方法是否也能提供下。。谢谢..
游客
登录 | 注册 方可回帖
返回