首页
社区
课程
招聘
[原创]bugCrackMe.vm-简单分析
发表于: 2008-8-26 22:10 9038

[原创]bugCrackMe.vm-简单分析

2008-8-26 22:10
9038

bugCrackMe.vm-简单分析

炒个冷饭,看到"太虚伪了"2个小时就搞定这个crackme,忍不住试一下,没想到竟然花了两天时间,才追到码。简单记录一下。一些弯路就不写了。只写有用的。

原crackme的帖子地址:http://bbs.pediy.com/showthread.php?t=46308

1、反调试
运行提示发现调试器。使用bp MessageBoxA找到按钮事件函数。简单跟踪后,发现关键函数,内部为vm。
004019C5   .  E8 D6F8FFFF   call    <vm_engine>
004019CA   .  85C0          test    eax, eax                         ;  Switch (cases 0..FFFFFFFF)

根据发现调试器程序分支条件(eax=0xfffffffe)反追vm中的代码。
由于vm,不好处理,只好进入vm.找到vm指令读取代码。

跟踪vm指令,发现入口处有两个api调用,一个memset,一个GetStartupInfo。(我是硬跟的,可用apihooker)
怀疑getstartupinfo为反调试.使用attach方法重新运行,发现已绕过反调试。说明是确实是FD_GetStartupInfo().

2、vm(此crackme可不用太多分析vm)
0041141D    FF2485 00104100 jmp     dword ptr [eax*4+<vcode_table>]
指令不多,简单分析,发现一些vadd,vsub,vjmp,vjnz,vcmp,vret,vtest等重要指令,指令操作数多数靠真实stack传递。每类都有几条。
下面列出几条
vpushad

00411497 >  8B85 00000000   mov     eax, dword ptr [ebp]             ; rflag
0041149D    8987 10000000   mov     dword ptr [edi+10], eax          ; rflag
004114A3    81C5 04000000   add     ebp, 4
004114A9    8B85 00000000   mov     eax, dword ptr [ebp]
004114AF    8987 34000000   mov     dword ptr [edi+34], eax          ; r?
004114B5    81C5 04000000   add     ebp, 4
004114BB    8B85 00000000   mov     eax, dword ptr [ebp]
004114C1    8987 28000000   mov     dword ptr [edi+28], eax          ; redi
004114C7    81C5 04000000   add     ebp, 4
004114CD    8B85 00000000   mov     eax, dword ptr [ebp]
004114D3    8987 08000000   mov     dword ptr [edi+8], eax           ; resi
004114D9    81C5 04000000   add     ebp, 4
004114DF    8B85 00000000   mov     eax, dword ptr [ebp]
004114E5    8987 0C000000   mov     dword ptr [edi+C], eax           ; redx
004114EB    81C5 04000000   add     ebp, 4
004114F1    8B85 00000000   mov     eax, dword ptr [ebp]
004114F7    8987 30000000   mov     dword ptr [edi+30], eax          ; recx
004114FD    81C5 04000000   add     ebp, 4
00411503    8B85 00000000   mov     eax, dword ptr [ebp]
00411509    8987 1C000000   mov     dword ptr [edi+1C], eax          ; rebx
0041150F    81C5 04000000   add     ebp, 4
00411515    8B85 00000000   mov     eax, dword ptr [ebp]
0041151B    8987 14000000   mov     dword ptr [edi+14], eax          ; reax
00411521    81C5 04000000   add     ebp, 4
00411527    81C5 04000000   add     ebp, 4
0041152D    89AF 2C000000   mov     dword ptr [edi+2C], ebp
00411533  ^ E9 ECFEFFFF     jmp     <vm_ep>
00411642 >  8B0424          mov     eax, dword ptr [esp]
00411645    8B8C24 04000000 mov     ecx, dword ptr [esp+4]
0041164C    FFB7 10000000   push    dword ptr [edi+10]	//flag
00411652    9D              popfd                
00411653    2BC1            sub     eax, ecx   //关键指令
00411655    9C              pushfd
00411656    8F87 10000000   pop     dword ptr [edi+10]  //flag
0041165C    890424          mov     dword ptr [esp], eax
0041165F    898C24 04000000 mov     dword ptr [esp+4], ecx
00411666  ^ E9 B9FDFFFF     jmp     <vm_ep>
.bug:004119E4                 mov     eax, [esp+0]
.bug:004119E7                 mov     ecx, [esp+arg_0]
.bug:004119EE                 push    dword ptr [edi+10h]
.bug:004119F4                 popf
.bug:004119F5                 test    ecx, eax//关键指令
.bug:004119F7                 pushf
.bug:004119F8                 pop     dword ptr [edi+10h]
.bug:004119FE                 mov     [esp+0], eax
.bug:00411A01                 mov     [esp+arg_0], ecx
.bug:00411A08                 jmp     vm_ep
vxor
.bug:0041169F                 mov     eax, [esp+0]
.bug:004116A2                 mov     ecx, [esp+arg_0]
.bug:004116A9                 push    dword ptr [edi+10h]
.bug:004116AF                 popf
.bug:004116B0                 xor     eax, ecx//关键指令
.bug:004116B2                 pushf
.bug:004116B3                 pop     dword ptr [edi+10h]
.bug:004116B9                 mov     [esp+0], eax
.bug:004116BC                 mov     [esp+arg_0], ecx
.bug:004116C3                 jmp     vm_ep
00411865 >  8B0424          mov     eax, dword ptr [esp]
00411868    8B16            mov     edx, dword ptr [esi]
0041186A    81ED 04000000   sub     ebp, 4
00411870    8995 00000000   mov     dword ptr [ebp], edx
00411876    81ED 04000000   sub     ebp, 4
0041187C    8B00            mov     eax, dword ptr [eax]
0041187E    8985 00000000   mov     dword ptr [ebp], eax
00411884    89AF 2C000000   mov     dword ptr [edi+2C], ebp
0041188A    FFB7 2C000000   push    dword ptr [edi+2C];vesp
00411890    FFB7 10000000   push    dword ptr [edi+10];vflag
00411896    FFB7 34000000   push    dword ptr [edi+34];vebp
0041189C    FFB7 28000000   push    dword ptr [edi+28];vedi
004118A2    FFB7 08000000   push    dword ptr [edi+8];vesi
004118A8    FFB7 0C000000   push    dword ptr [edi+C];vedx
004118AE    FFB7 30000000   push    dword ptr [edi+30];vecx
004118B4    FFB7 1C000000   push    dword ptr [edi+1C];vebx
004118BA    FFB7 14000000   push    dword ptr [edi+14];veax
004118C0    58              pop     eax
004118C1    5B              pop     ebx
004118C2    59              pop     ecx
004118C3    5A              pop     edx
004118C4    5E              pop     esi
004118C5    5F              pop     edi
004118C6    5D              pop     ebp
004118C7    9D              popfd
004118C8    5C              pop     esp
004118C9    C3              retn                                     ; ret1

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 29235
活跃值: (7759)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
2
学习!!
2008-8-26 22:50
0
雪    币: 474
活跃值: (96)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
向楼主学习!!
2008-8-27 09:33
0
雪    币: 97697
活跃值: (200829)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
support.
2008-8-27 09:53
0
雪    币: 263
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
炒冷饭也能置顶啊
2008-8-27 10:02
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
6
很强大,学习
2008-8-27 17:59
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
7
我以为被删除了,没想到是跑顶上来了。

向你学习。
我的方法很笨,还要请大家指点。
2008-8-27 21:56
0
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
8
楼下的无聊了?
2008-9-2 22:12
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
9
*************************
2008-9-5 19:07
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
10
柯西没看到。
我也因为无聊,所以炒冷饭。。。
郁闷,怎么分析水平无法提高了。
2008-9-8 00:41
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
11
无聊+郁闷。灌个水
[00000400]:vcall 0771
[00000771]:vpush 00000005
[00000775]:vpush 00000009
[00000779]:vpush 00000000
[0000077d]:vpush 00bfbfbf
[00000782]:vpush 00000aa2
[00000789]:vretn 0403
[00000403]:vcall 09d5
[000009d5]:vpop  reg_1120080
[000009d7]:vpop  reg_1120070
[000009d9]:vpop  reg_1120074
[000009db]:vpop  reg_1120078
[000009dd]:vpop  reg_112007c
[000009df]:vset wbank4
[000009e0]:vmov  [01120084],656d614e;=>656d614e
2008-9-8 00:46
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
12
你的过去我来不及参与
2008-9-10 13:11
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢谢 狼老大 我先收藏 等以后 基础有了 慢慢学习。。
2008-9-23 14:10
0
游客
登录 | 注册 方可回帖
返回
//