首页
社区
课程
招聘
[原创]本师童鞋发表的CRACKME的第二种注册码分析(菜鸟级)
发表于: 2011-7-2 12:48 3478

[原创]本师童鞋发表的CRACKME的第二种注册码分析(菜鸟级)

2011-7-2 12:48
3478
本师童鞋原帖地址
http://bbs.pediy.com/showthread.php?t=133693
各位大牛cracktv已经给出了答案,不过只有答案而已,新人比较难理解,所以自己动手试一下,发一个详细点的过程。
OK,开始吧。
先简单测试一下,了解信息,输入456789,弹出Try Again!!.两个感叹号哦,记住了,一会有用的。
OD(看雪的ollyICE)载入,还是用字符串查找的方式,代码窗口右键——查找——所有参考文本字串,在打开的新窗口查找Try 就可以了。你会发现有很多Try Again,还记得前面说过,两个感叹号吗?这里有用了,一个感叹号的是第一种注册方式失败时的提示。找到有两个感叹号的文本。

文本字串参考位于 Acid_bur:CODE, 条目 1224
地址=0042F4F8
反汇编=mov     edx, 0042F58C
文本字串=ASCII "Try Again!!"

在地址0042F4F8上右键——反汇编窗口中跟随,回到代码窗口。

0042F4AF  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
0042F4B2  |.  BA 03000000   mov     edx, 3
0042F4B7  |.  E8 F044FDFF   call    004039AC
0042F4BC  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
0042F4BF  |.  8B83 E0010000 mov     eax, dword ptr [ebx+1E0]
0042F4C5  |.  E8 8EB5FEFF   call    0041AA58
0042F4CA  |.  8B45 F0       mov     eax, dword ptr [ebp-10];保存输入的信息
0042F4CD  |.  8B55 F4       mov     edx, dword ptr [ebp-C];ASCII "Hello Dude"
0042F4D0  |.  E8 2745FDFF   call    004039FC;比较输入信息跟"Hello Dude"是否相等
0042F4D5  |.  75 1A         jnz     short 0042F4F1  ;    关键跳转,暴力破解的童鞋直接改这里,JNZ,改为JZ就OK了。或者干脆NOP掉。
0042F4D7  |.  6A 00         push    0
0042F4D9  |.  B9 64F54200   mov     ecx, 0042F564                 ;  ASCII "Congratz!"
0042F4DE  |.  BA 70F54200   mov     edx, 0042F570         ;  ASCII "God Job dude !! =)"
0042F4E3  |.  A1 480A4300   mov     eax, dword ptr [430A48]
0042F4E8  |.  8B00          mov     eax, dword ptr [eax]
0042F4EA  |.  E8 81ACFFFF   call    0042A170
0042F4EF  |.  EB 18         jmp     short 0042F509
0042F4F1  |>  6A 00         push    0
0042F4F3  |.  B9 84F54200   mov     ecx, 0042F584                  ;  ASCII "Failed!"
0042F4F8  |.  BA 8CF54200   mov     edx, 0042F58C                 ;  ASCII "Try Again!!"   就是这里了。
0042F4FD  |.  A1 480A4300   mov     eax, dword ptr [430A48]
0042F502  |.  8B00          mov     eax, dword ptr [eax]
0042F504  |.  E8 67ACFFFF   call    0042A170
0042F509  |>  33C0          xor     eax, eax

看到上面的Congratz!吗?肯定是成功后的提示啦。往上看那个关键跳,暴力破解的童鞋可以收工了。想知道注册码的我们接着分析。找到关键跳,我们就看看上面的call    004039FC到底在干些什么。
0042F4CA 这个地址右键——断点——硬件执行。OK,让程序跑起来,F9运行,打开第二种注册窗口,输入456789,确定,程序停在0042F4CA,F7单步,OD可以看见此时EAX中保存正是我们输入的456789,接着F7单步,此时,EDX中保存的是Hello Dude,看到这里,一般大大们都知道注册码跟着Hello Dude肯定有关系了。接着F7单步,跟进call    004039FC里面。
004039FC  /$  53            push    ebx  ;跟进后停在这里。
004039FD  |.  56            push    esi
004039FE  |.  57            push    edi
004039FF  |.  89C6          mov     esi, eax  
00403A01  |.  89D7          mov     edi, edx
00403A03  |.  39D0          cmp     eax, edx  ;比较EAX和EDX是否相等
00403A05  |.  0F84 8F000000 je      00403A9A;相等则直接跳到函数尾部,跳出函数
00403A0B  |.  85F6          test    esi, esi ;测试输入的信息是否为空
00403A0D  |.  74 68         je      short 00403A77 ;为空则跳
00403A0F  |.  85FF          test    edi, edi ;测试EDX是否为空,EDX中的"Hello Dude"从哪来的呢??有时间再去上面找找,这里不用管它。
00403A11  |.  74 6B         je      short 00403A7E ;为空则跳
00403A13  |.  8B46 FC       mov     eax, dword ptr [esi-4] ;输入信息的长度,这里是6
00403A16  |.  8B57 FC       mov     edx, dword ptr [edi-4] ;EDX中数据的长度,11
00403A19  |.  29D0          sub     eax, edx ;相减
00403A1B  |.  77 02         ja      short 00403A1F ;eax大于edx则跳,这里不跳
00403A1D  |.  01C2          add     edx, eax;eax加到edx中,结果为6
00403A1F  |>  52            push    edx ;保存输入信息的长度。
00403A20  |.  C1EA 02       shr     edx, 2 ;右移两位,相当于除以4
00403A23  |.  74 26         je      short 00403A4B;这里不跳
00403A25  |>  8B0E          /mov     ecx, dword ptr [esi];输入的信息"456789"
00403A27  |.  8B1F          |mov     ebx, dword ptr [edi];"Hello Dude"
00403A29  |.  39D9          |cmp     ecx, ebx ;比较(为什么还要比较?有时间再看看)
00403A2B  |.  75 58         |jnz     short 00403A85 ;不等则跳,这里跳走了,00403A85
00403A2D  |.  4A            |dec     edx
00403A2E  |.  74 15         |je      short 00403A45
00403A30  |.  8B4E 04       |mov     ecx, dword ptr [esi+4]
00403A33  |.  8B5F 04       |mov     ebx, dword ptr [edi+4]
00403A36  |.  39D9          |cmp     ecx, ebx
00403A38  |.  75 4B         |jnz     short 00403A85
00403A3A  |.  83C6 08       |add     esi, 8
00403A3D  |.  83C7 08       |add     edi, 8
00403A40  |.  4A            |dec     edx
00403A41  |.^ 75 E2         \jnz     short 00403A25
00403A43  |.  EB 06         jmp     short 00403A4B
00403A45  |>  83C6 04       add     esi, 4
00403A48  |.  83C7 04       add     edi, 4
00403A4B  |>  5A            pop     edx
00403A4C  |.  83E2 03       and     edx, 3
00403A4F  |.  74 22         je      short 00403A73
00403A51  |.  8B0E          mov     ecx, dword ptr [esi]
00403A53  |.  8B1F          mov     ebx, dword ptr [edi]
00403A55  |.  38D9          cmp     cl, bl
00403A57  |.  75 41         jnz     short 00403A9A
00403A59  |.  4A            dec     edx
00403A5A  |.  74 17         je      short 00403A73
00403A5C  |.  38FD          cmp     ch, bh
00403A5E  |.  75 3A         jnz     short 00403A9A
00403A60  |.  4A            dec     edx
00403A61  |.  74 10         je      short 00403A73
00403A63  |.  81E3 0000FF00 and     ebx, 0FF0000
00403A69  |.  81E1 0000FF00 and     ecx, 0FF0000
00403A6F  |.  39D9          cmp     ecx, ebx
00403A71  |.  75 27         jnz     short 00403A9A
00403A73  |>  01C0          add     eax, eax
00403A75  |.  EB 23         jmp     short 00403A9A
00403A77  |>  8B57 FC       mov     edx, dword ptr [edi-4]
00403A7A  |.  29D0          sub     eax, edx
00403A7C  |.  EB 1C         jmp     short 00403A9A
00403A7E  |>  8B46 FC       mov     eax, dword ptr [esi-4]
00403A81  |.  29D0          sub     eax, edx
00403A83  |.  EB 15         jmp     short 00403A9A
00403A85  |>  5A            pop     edx ;跳到这里,取出输入信息的长度,6
00403A86  |.  38D9          cmp     cl, bl;不知何意(比较低8位,什么逻辑,有时间再看看)
00403A88  |.  75 10         jnz     short 00403A9A;跳走00403A9A
00403A8A  |.  38FD          cmp     ch, bh
00403A8C  |.  75 0C         jnz     short 00403A9A
00403A8E  |.  C1E9 10       shr     ecx, 10
00403A91  |.  C1EB 10       shr     ebx, 10
00403A94  |.  38D9          cmp     cl, bl
00403A96  |.  75 02         jnz     short 00403A9A
00403A98  |.  38FD          cmp     ch, bh
00403A9A  |>  5F            pop     edi;函数出口
00403A9B  |.  5E            pop     esi
00403A9C  |.  5B            pop     ebx
00403A9D  \.  C3            retn

到这里基本可以知道,第二种注册方式的注册码为Hello Dude,至少Hello Dude是注册码之一。貌似还有别的可能,有时间再看看。

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//