首页
社区
课程
招聘
[原创]腾讯技术竞赛第二阶段第一题虚拟机分析
发表于: 2010-11-1 12:05 7976

[原创]腾讯技术竞赛第二阶段第一题虚拟机分析

2010-11-1 12:05
7976

『深圳腾讯2010安全技术竞赛』第二阶段第一题是一道虚拟机相关的题目。由于自己之前只接触过一些概念相关的知识,最多看过VMP虚拟化单句代码的效果,再复杂就搞不来了,所以想借此机会加深下对虚拟机的理解。在此把自己的分析过程整理出来,望高手指教。

废话结束,下面进入正题。

刚看了题目要求之后,并不知道程序中有虚拟机。挂上OD断到程序映射文件完毕,开始分析。

004010FE   .  837D D0 00    cmp     dword ptr [ebp-30], 0
00401102   .  0F84 B3000000 je      004011BB
00401108   .  8B4D E4       mov     ecx, dword ptr [ebp-1C]
0040110B   .  8139 54455354 cmp     dword ptr [ecx], 54534554
00401111   .  0F85 A4000000 jnz     004011BB
00401F44  |.  B8 10134000   mov     eax, 00401310                 
00401F49  |.  870424        xchg    dword ptr [esp], eax
00401F4C  \.  C3            retn
00401310      60            pushad
00401311      9C            pushfd
00401312      8B5424 24     mov     edx, dword ptr [esp+24]
00401316      8BC2          mov     eax, edx
00401318      05 94000000   add     eax, 94
0040131D      8038 01       cmp     byte ptr [eax], 1
00401320      74 21         je      short 00401343
00401322      8B5424 24     mov     edx, dword ptr [esp+24]
00401326      8BC2          mov     eax, edx
00401328      05 A4000000   add     eax, 0A4
0040132D      50            push    eax
0040132E      83E8 0C       sub     eax, 0C
00401331      8B00          mov     eax, dword ptr [eax]
00401333      FFD0          call    eax
00401335      8B5424 24     mov     edx, dword ptr [esp+24]
00401339      8BC2          mov     eax, edx
0040133B      05 94000000   add     eax, 94
00401340      C600 01       mov     byte ptr [eax], 1
00401343      8B5424 24     mov     edx, dword ptr [esp+24]
00401347      8BC2          mov     eax, edx
00401349      05 A4000000   add     eax, 0A4
0040134E      50            push    eax
0040134F      83E8 08       sub     eax, 8
00401352      8B00          mov     eax, dword ptr [eax]
00401354      FFD0          call    eax
00401356      8BF4          mov     esi, esp
00401358      B9 09000000   mov     ecx, 9
0040135D      8B7C24 24     mov     edi, dword ptr [esp+24]
00401361      F3:A5         rep     movs dword ptr es:[edi], dword p>
00401363      9D            popfd
00401364      61            popad
00401365      58            pop     eax
00401366      8BC8          mov     ecx, eax
00401368      05 C4000000   add     eax, 0C4
0040136D      8B00          mov     eax, dword ptr [eax]
0040136F      8BE0          mov     esp, eax
00401371      51            push    ecx
00401372      E8 E9FEFFFF   call    00401260
004012E0  |>  8B46 68       /mov     eax, dword ptr [esi+68]
004012E3  |. |0FB608        |movzx   ecx, byte ptr [eax]
004012E6  |. |8B148D D0D840>|mov     edx, dword ptr [ecx*4+40D8D0]
004012ED  |. |56            |push    esi
004012EE  |. |FFD2          |call    edx
004012F0  |. |8346 68 10    |add     dword ptr [esi+68], 10
004012F4  |. |397E 68       |cmp     dword ptr [esi+68], edi
004012F7  |.^\72 E7         \jb      short 004012E0
0040D8D0  80 13 40 00 C0 13 40 00 D0 13 40 00 E0 13 40 00  €@.?@.?@.?@.
0040D8E0  30 14 40 00 80 14 40 00 D0 14 40 00 20 15 40 00  0@.€@.?@. @.
0040D8F0  80 15 40 00 E0 15 40 00 F0 15 40 00 00 16 40 00  €@.?@.?@..@.
0040D900  40 16 40 00 90 16 40 00 20 17 40 00 80 17 40 00  @@.?@. @.€@.
0040D910  F0 17 40 00 60 18 40 00 20 19 40 00 E0 19 40 00  ?@.`@. @.?@.
0040D920  40 1A 40 00 F0 1A 40 00 A0 1B 40 00 50 1C 40 00  @@.?@.?@.P@.
0040D930  F0 1C 40 00 A0 1D 40 00 50 1E 40 00 50 1E 40 00  ?@.?@.P@.P@.
0040D940  00 1F 40 00 00 1F 40 00                          .@..@.

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

收藏
免费 7
支持
分享
最新回复 (7)
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
人家延长时间 你就发了答案 太给力了
2010-11-1 12:08
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
3
呵呵……笑而不语……
2010-11-1 12:10
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
4
1号函数      取出标志寄存器,相当于pushad
2号函数      存入标志寄存器,相当于popad
对照着纯正的CRC算法一看,这里不是应该是与运算吗?

这几句貌似说的不对
标志寄存器的操作应该pushfd/popfd
纯正的CRC算法那里也不应该是“与运算”吧
2010-11-1 12:57
0
雪    币: 179
活跃值: (26)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
谢谢指点,写错了,那个于运算我再看看,但是我把它改成于就可以了啊
2010-11-1 13:00
0
雪    币: 179
活跃值: (26)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
多谢ccfer指点,是我看走眼了,应该是异或运算。已修正。
2010-11-1 13:16
0
雪    币: 160
活跃值: (375)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看了一下午~好像看明白一点了~
2010-11-1 18:06
0
雪    币: 107
活跃值: (1693)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
8
第2问,没明白出题者的意思,不知道这个要校验字符有多长,4G以内?觉得对于编译好的VM指令,要改也是小改动。
2010-11-1 19:35
0
游客
登录 | 注册 方可回帖
返回
//