首页
社区
课程
招聘
[求助]一个变态壳对API调用进行VM
发表于: 2010-2-17 01:33 5688

[求助]一个变态壳对API调用进行VM

2010-2-17 01:33
5688
这个壳很BT,里面带了VM,不仅VM程序本身的部分代码,还VM WIN32 API的代码。。。。。
我现在只找到了OEP,但是还搞不定IAT,因为它是直接把调用给VM掉了。。。。所以只能把
007C6990    8138 E8000000         cmp     dword ptr [eax], 0E8
007C6996    0F85 2C000000         jnz     007C69C8
007C699C    8078 04 00            cmp     byte ptr [eax+4], 0
007C69A0    0F85 22000000         jnz     007C69C8

这两处jnz nop掉,这样在最后DUMP下来的程序是这样的
004071B8    53                    push    ebx //OEP
004071B9    8BD8                  mov     ebx, eax
004071BB    33C0                  xor     eax, eax
004071BD    A3 A4F05700           mov     dword ptr [57F0A4], eax
004071C2    6A 00                 push    0
004071C4    E8 2BFFFFFF           call    004070F4//对GetModuleHandle的调用
004071C9    A3 68665800           mov     dword ptr [586668], eax

004070F4  - E9 2990DB03           jmp     041C0122//跳转到VM后的代码

041C0122  - E9 1AB66478           jmp     kernel32.GetModuleHandleA// 把那两处NOP掉以后这里才是这个样子
041C0127  - E9 8F79BE73           jmp     ADVAPI32.RegQueryValueExA
041C012C  - E9 2177BE73           jmp     ADVAPI32.RegOpenKeyExA

如果不NOP掉,就会是这个样子
004071B8    53              push    ebx                              ; Game2.007C71F9//oep
004071B9    8BD8            mov     ebx, eax
004071BB    33C0            xor     eax, eax
004071BD    A3 A4F05700     mov     dword ptr [57F0A4], eax
004071C2    6A 00           push    0
004071C4    E8 2BFFFFFF     call    004070F4//调用GetModuleHandleA
004071C9    A3 68665800     mov     dword ptr [586668], eax

004070F4  - E9 ED9CFC03     jmp     043D0DE6

043D0DE6    8BFF            mov     edi, edi//被无耻掉了
043D0DE8    E9 12000000     jmp     043D0DFF
043D0DED    F2:             prefix repne:
043D0DEE    43              inc     ebx
043D0DEF    C0F9 3E         sar     cl, 3E
043D0DF2    9F              lahf
043D0DF3    EC              in      al, dx
043D0DF4    B5 4A           mov     ch, 4A
043D0DF6    BB D8311697     mov     ebx, 971631D8
043D0DFB    846D A2         test    byte ptr [ebp-5E], ch
043D0DFE    3395 609CE90F   xor     edx, dword ptr [ebp+FE99C60]

附件是这个程序。。。。。
这个OOXX壳弄了半天了,还是弄不出来,求教高手

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
因为那个JMP的跟踪太复杂了,实在没跟出来,,,,,不然我可以直接弄成call [jmp API]的形式。。。。。大神们求教啊。。。。。
2010-2-17 01:39
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
现在我把007C6990处的代码改成
007C6990    56              push    esi                              ; 

kernel32.7C802854
007C6991    8BB5 9DEC040A   mov     esi, dword ptr [ebp+A04EC9D]
007C6997    C706 90909068   mov     dword ptr [esi], 68909090
007C699D    8946 04         mov     dword ptr [esi+4], eax
007C69A0    C746 08 C390909>mov     dword ptr [esi+8], 909090C3
//也就是把VM的代码弄成
//nop
//nop
//nop
//push addr
//retn
//nop
//nop
//nop
//这样恰好对其4字节
007C69A7    EB 0E           jmp     short 007C69B7
007C69A9    90              nop
007C69AA    90              nop
007C69AB    90              nop
007C69AC    90              nop
007C69AD    C606 E9         mov     byte ptr [esi], 0E9
007C69B0    2BF0            sub     esi, eax
007C69B2    83C6 05         add     esi, 5
007C69B5    F7DE            neg     esi
007C69B7    8B85 9DEC040A   mov     eax, dword ptr [ebp+A04EC9D]
007C69BD    90              nop
007C69BE    90              nop
007C69BF    90              nop
007C69C0    8385 9DEC040A 0>add     dword ptr [ebp+A04EC9D], 0C

然后在Import REC中手动要它加载41c0000处的XX信息,然后剪切掉垃圾信息,就成了图中那样的全部有效了.
但是在FIX DUMP的时候出现了这个对话框(见图),这个是怎么回事啊?
import rec明明能读出来,怎么还说和DUMP的不一致啊?
上传的附件:
2010-2-17 22:23
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
懂了,41c0000是程序运行后申请的空间,壳把代码放这里,但是在DUMP的时候并不会被DUMP下来。。。。所以就XXXX了。。。。。。。。求教,怎么把这些内存也给DUMP下来啊?
2010-2-17 22:28
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
想到办法了,在007C6990那里把ebp+A04EC9D改到指向一个有效的地址!!!太晚了,明天再做。。。。
2010-2-17 22:47
0
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
不用那么麻烦
LoadPE的区域dump应该可以
2010-2-17 23:59
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
可以是可以,但是要修改VA,修改VA后就无效PE文件,用LORDPE 也修复不来
2010-2-18 14:05
0
游客
登录 | 注册 方可回帖
返回
//