首页
社区
课程
招聘
[原创]Crack Me等级自测 分析一个2级的CM(顺便庆祝本人今天转正啦~~)
发表于: 2012-3-8 21:55 8491

[原创]Crack Me等级自测 分析一个2级的CM(顺便庆祝本人今天转正啦~~)

2012-3-8 21:55
8491
004012F3  /$  90            nop                                      ;  关键的注册函数
004012F4  |.  8B0D 89234000 mov     ecx, dword ptr [402389]          ;  402389存放name串的长度
004012FA  |.  85C9          test    ecx, ecx
004012FC  |.  74 71         je      short 0040136F                   ;  长度是0,失败!
004012FE  |.  49            dec     ecx
004012FF  |.  8BF1          mov     esi, ecx                         ;  length-1送入esi,esi是最后一个字符的下标
00401301  |.  BF 53234000   mov     edi, 00402353
00401306  |.  BB 4E4D4144   mov     ebx, 44414D4E                    ;  初始化ebx为44414D4E
0040130B  |.  33D2          xor     edx, edx
0040130D  |.  8BCA          mov     ecx, edx                         ;  这两步清零ecx,edx
0040130F  |>  33C0          /xor     eax, eax                        ;  这里开始遍历name串,先清零eax
00401311  |.  8A040F        |mov     al, byte ptr [edi+ecx]          ;  当前字符送入al
00401314  |.  03D0          |add     edx, eax                        ;  累加到edx(从这里可以看出edx是计算所有字符的ASIC码之和)
00401316  |.  D1CB          |ror     ebx, 1
00401318  |.  D3CB          |ror     ebx, cl                         ;  ebx循环右移,再右移
0040131A  |.  33DA          |xor     ebx, edx                        ;  然后,与edx异或
0040131C  |.  3BCE          |cmp     ecx, esi                        ;  是否是最后一个字符?
0040131E  |.  74 03         |je      short 00401323                  ;  是,遍历结束
00401320  |.  41            |inc     ecx                             ;  不是,下一个字符
00401321  |.^ EB EC         \jmp     short 0040130F
00401323  |>  81CB 10101010 or      ebx, 10101010                    ;  遍历结束后,ebx与10101010或运算
00401329  |.  87DA          xchg    edx, ebx                         ;  交换ebx,edx。edx存着一个关键的值用于校验Key
0040132B  |.  BF 21234000   mov     edi, 00402321
00401330  |.  8B0D 8D234000 mov     ecx, dword ptr [40238D]          ;  Key串长度送入ecx
00401336  |.  83F9 08       cmp     ecx, 8
00401339  |.  75 34         jnz     short 0040136F                   ;  这两步可以看出Key长度必须是8,否则失败!
0040133B  |.  33C9          xor     ecx, ecx                         ;  清零ecx
0040133D  |>  33C0          /xor     eax, eax                        ;  又是一个循环,校验Key值
0040133F  |.  C1C2 08       |rol     edx, 8                          ;  edx循环右移8位(为什么是8位?这样edx的高8位到了低8位,即dl中)
00401342  |.  8AC2          |mov     al, dl
00401344  |.  8AD8          |mov     bl, al                          ;  dl值存入al,bl
00401346  |.  24 0F         |and     al, 0F                          ;  这一步al保存dl的低4位
00401348  |.  C0EB 04       |shr     bl, 4
0040134B  |.  80E3 0F       |and     bl, 0F                          ;  这两步,bl保存dl的高4位
0040134E  |.  3C 0A         |cmp     al, 0A
00401350  |.  1C 69         |sbb     al, 69
00401352  |.  2F            |das                                     ;  这三步就是把数值转换为字符,说白了就是01h=>'1',0Ah=>'A'
00401353  |.  38444F 01     |cmp     byte ptr [edi+ecx*2+1], al      ;  Key[1,3,5]必须等于al转换后的字符,也就是原来edx的每隔8位的后4位
00401357  |.  75 16         |jnz     short 0040136F                  ;  不等则完蛋!
00401359  |.  8AC3          |mov     al, bl
0040135B  |.  3C 0A         |cmp     al, 0A
0040135D  |.  1C 69         |sbb     al, 69
0040135F  |.  2F            |das                                     ;  同样的,数值转换为字符。
00401360  |.  38044F        |cmp     byte ptr [edi+ecx*2], al        ;  Key[0,2,4,6]必须等于bl转换后的字符,也就是edx的每隔8位的前4位
00401363  |.  75 0A         |jnz     short 0040136F                  ;  不等则完蛋!
00401365  |.  41            |inc     ecx                             ;  ecx自增
00401366  |.  83F9 04       |cmp     ecx, 4
00401369  |.^ 75 D2         \jnz     short 0040133D                  ;  ecx等于4结束循环,一次比较两个,正好4次
0040136B  |.  33C0          xor     eax, eax                         ;  总结一下,校验的过程其实就是把原来edx的值转成十六进制的字符串,也就是说如果edx=7653ED5A,Key串就是“7653ED5A”
0040136D  |.  40            inc     eax                              ;  返回1,用于EnableWindow(TRUE)
0040136E  |.  C3            retn
0040136F  |>  33C0          xor     eax, eax
00401371  \.  C3            retn
 

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

上传的附件:
收藏
免费 6
支持
分享
最新回复 (8)
雪    币: 94
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
格式好难调啊,见谅~~
2012-3-8 22:09
0
雪    币: 31
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
谢谢大侠分享,共冕之。
2012-3-8 22:56
0
雪    币: 94
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
沉了啊。。。
2012-3-9 14:08
0
雪    币: 1596
活跃值: (25)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
5
为什么我的第二级是控制台?第四级有人玩咩,我正在WIN98+softice
2012-3-12 09:29
0
雪    币: 221
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好 学习一下
2012-3-26 22:55
0
雪    币: 378
活跃值: (702)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
哈,随机的,楼主的这文章分析得不错......
2012-3-27 09:59
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
恭喜楼主了  还好我09年就注册了个  后来没用过
2012-4-6 23:28
0
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
请问是否可以爆破?
2012-4-11 22:34
0
游客
登录 | 注册 方可回帖
返回
//