首页
社区
课程
招聘
纪念被K掉的 (第12队)CrackMe by jackeyqiu 之注册算法及过程的简单分析
发表于: 2007-6-24 14:41 10264

纪念被K掉的 (第12队)CrackMe by jackeyqiu 之注册算法及过程的简单分析

2007-6-24 14:41
10264

纪念被K掉的 (第12队)CrackMe by jackeyqiu 之注册算法及过程的简单分析

目标来源地:http://bbs.pediy.com/showthread.php?t=46894
下载来源的:http://bbs.pediy.com/attachment.php?attachmentid=6418&d=1182658427

先看激活按钮的界面事件:

》》》》》》
0045AAB4  /.  55               push    ebp                                    ;  方格点击
0045AAB5  |.  8BEC             mov     ebp, esp
0045AAB7  |.  6A 00            push    0
0045AAB9  |.  6A 00            push    0
0045AABB  |.  53               push    ebx
0045AABC  |.  56               push    esi
0045AABD  |.  57               push    edi
0045AABE  |.  8BD8             mov     ebx, eax
0045AAC0  |.  8B7D 08          mov     edi, dword ptr [ebp+8]
0045AAC3  |.  8B75 0C          mov     esi, dword ptr [ebp+C]
0045AAC6  |.  33C0             xor     eax, eax
0045AAC8  |.  55               push    ebp
0045AAC9  |.  68 99AC4500      push    CrackMe.0045AC99
0045AACE  |.  64:FF30          push    dword ptr fs:[eax]
0045AAD1  |.  64:8920          mov     dword ptr fs:[eax], esp
0045AAD4  |.  8BCF             mov     ecx, edi
0045AAD6  |.  8BD6             mov     edx, esi
0045AAD8  |.  8BC3             mov     eax, ebx
0045AADA  |.  E8 35020000      call    CrackMe.0045AD14                       ;  得到点击位置
0045AADF  |.  8D55 F8          lea     edx, dword ptr [ebp-8]
0045AAE2  |.  E8 01D2FAFF      call    CrackMe.00407CE8
0045AAE7  |.  8B4D F8          mov     ecx, dword ptr [ebp-8]
0045AAEA  |.  8D45 FC          lea     eax, dword ptr [ebp-4]
0045AAED  |.  BA B4AC4500      mov     edx, CrackMe.0045ACB4                  ;  ASCII "Region:"
0045AAF2  |.  E8 6196FAFF      call    CrackMe.00404158
0045AAF7  |.  8B45 FC          mov     eax, dword ptr [ebp-4]
0045AAFA  |.  50               push    eax
0045AAFB  |.  8B83 38030000    mov     eax, dword ptr [ebx+338]
0045AB01  |.  8B80 08020000    mov     eax, dword ptr [eax+208]
0045AB07  |.  BA 01000000      mov     edx, 1
0045AB0C  |.  E8 8333FDFF      call    CrackMe.0042DE94
0045AB11  |.  5A               pop     edx
0045AB12  |.  E8 D932FDFF      call    CrackMe.0042DDF0
0045AB17  |.  83BB 90030000 09 cmp     dword ptr [ebx+390], 9                 ;  点击次数与9比较
0045AB1E  |.  7F 20            jg      short CrackMe.0045AB40                 ;  大于跳
0045AB20  |.  8BCF             mov     ecx, edi
0045AB22  |.  8BD6             mov     edx, esi
0045AB24  |.  8BC3             mov     eax, ebx
0045AB26  |.  E8 E9010000      call    CrackMe.0045AD14
0045AB2B  |.  8B93 90030000    mov     edx, dword ptr [ebx+390]
0045AB31  |.  898493 4C030000  mov     dword ptr [ebx+edx*4+34C], eax
0045AB38  |.  FF83 90030000    inc     dword ptr [ebx+390]
0045AB3E  |.  EB 3E            jmp     short CrackMe.0045AB7E
0045AB40  |>  C783 90030000 01>mov     dword ptr [ebx+390], 1
0045AB4A  |.  B8 01000000      mov     eax, 1
0045AB4F  |>  33D2             /xor     edx, edx
0045AB51  |.  899483 4C030000  |mov     dword ptr [ebx+eax*4+34C], edx
0045AB58  |.  40               |inc     eax
0045AB59  |.  83F8 0A          |cmp     eax, 0A
0045AB5C  |.^ 75 F1            \jnz     short CrackMe.0045AB4F
0045AB5E  |.  8B83 38030000    mov     eax, dword ptr [ebx+338]
0045AB64  |.  8B80 08020000    mov     eax, dword ptr [eax+208]
0045AB6A  |.  BA 02000000      mov     edx, 2
0045AB6F  |.  E8 2033FDFF      call    CrackMe.0042DE94
0045AB74  |.  BA C4AC4500      mov     edx, CrackMe.0045ACC4                  ;  ASCII "Wrong, Click again"
0045AB79  |.  E8 7232FDFF      call    CrackMe.0042DDF0
0045AB7E  |>  8B83 50030000    mov     eax, dword ptr [ebx+350]               ;  第1次点击位置数
0045AB84  |.  0383 54030000    add     eax, dword ptr [ebx+354]               ;  第1次点击位置数 + 第2次点击位置数
0045AB8A  |.  83F8 09          cmp     eax, 9                                 ;  =9
0045AB8D      0F85 EB000000    jnz     CrackMe.0045AC7E                       ;  便OK了!!!!!!!
0045AB93  |.  8B83 58030000    mov     eax, dword ptr [ebx+358]               ;  第3次点击位置数
0045AB99  |.  0383 5C030000    add     eax, dword ptr [ebx+35C]               ;  第3次点击位置数 + 第4次点击位置数
0045AB9F  |.  83F8 09          cmp     eax, 9                                 ;  =9
0045ABA2      0F85 D6000000    jnz     CrackMe.0045AC7E                       ;  便OK了!!!!!!!
0045ABA8  |.  8B83 60030000    mov     eax, dword ptr [ebx+360]               ;  第5次点击位置数
0045ABAE  |.  0383 64030000    add     eax, dword ptr [ebx+364]               ;  第5次点击位置数 + 第6次点击位置数
0045ABB4  |.  83F8 09          cmp     eax, 9                                 ;  =9
0045ABB7      0F85 C1000000    jnz     CrackMe.0045AC7E                       ;  便OK了!!!!!!!
0045ABBD  |.  8B83 68030000    mov     eax, dword ptr [ebx+368]               ;  第7次点击位置数
0045ABC3  |.  0383 6C030000    add     eax, dword ptr [ebx+36C]               ;  第7次点击位置数 + 第8次点击位置数
0045ABC9  |.  83F8 09          cmp     eax, 9                                 ;  =9
0045ABCC      0F85 AC000000    jnz     CrackMe.0045AC7E                       ;  便OK了!!!!!!!
0045ABD2  |.  83BB 70030000 09 cmp     dword ptr [ebx+370], 9                 ;  第9次点击位置数 = 9
0045ABD9      0F85 9F000000    jnz     CrackMe.0045AC7E                       ;  便OK了!!!!!!!
0045ABDF  |.  B2 01            mov     dl, 1
0045ABE1  |.  8B83 10030000    mov     eax, dword ptr [ebx+310]
0045ABE7  |.  8B08             mov     ecx, dword ptr [eax]
0045ABE9  |.  FF51 64          call    dword ptr [ecx+64]
0045ABEC  |.  B2 01            mov     dl, 1
0045ABEE  |.  8B83 14030000    mov     eax, dword ptr [ebx+314]
0045ABF4  |.  E8 DFE2FDFF      call    CrackMe.00438ED8
0045ABF9  |.  B2 01            mov     dl, 1
0045ABFB  |.  8B83 18030000    mov     eax, dword ptr [ebx+318]
0045AC01  |.  E8 D2E2FDFF      call    CrackMe.00438ED8
0045AC06  |.  B2 01            mov     dl, 1
0045AC08  |.  8B83 1C030000    mov     eax, dword ptr [ebx+31C]
0045AC0E  |.  E8 C5E2FDFF      call    CrackMe.00438ED8
0045AC13  |.  B2 01            mov     dl, 1
0045AC15  |.  8B83 20030000    mov     eax, dword ptr [ebx+320]
0045AC1B  |.  E8 B8E2FDFF      call    CrackMe.00438ED8
0045AC20  |.  B2 01            mov     dl, 1
0045AC22  |.  8B83 24030000    mov     eax, dword ptr [ebx+324]
0045AC28  |.  E8 ABE2FDFF      call    CrackMe.00438ED8
0045AC2D  |.  B2 01            mov     dl, 1
0045AC2F  |.  8B83 28030000    mov     eax, dword ptr [ebx+328]
0045AC35  |.  E8 9EE2FDFF      call    CrackMe.00438ED8
0045AC3A  |.  B2 01            mov     dl, 1
0045AC3C  |.  8B83 2C030000    mov     eax, dword ptr [ebx+32C]
0045AC42  |.  E8 91E2FDFF      call    CrackMe.00438ED8
0045AC47  |.  B2 01            mov     dl, 1
0045AC49  |.  8B83 30030000    mov     eax, dword ptr [ebx+330]
0045AC4F  |.  E8 84E2FDFF      call    CrackMe.00438ED8
0045AC54  |.  B2 01            mov     dl, 1
0045AC56  |.  8B83 34030000    mov     eax, dword ptr [ebx+334]
0045AC5C  |.  E8 77E2FDFF      call    CrackMe.00438ED8
0045AC61  |.  8B83 38030000    mov     eax, dword ptr [ebx+338]
0045AC67  |.  8B80 08020000    mov     eax, dword ptr [eax+208]
0045AC6D  |.  33D2             xor     edx, edx
0045AC6F  |.  E8 2032FDFF      call    CrackMe.0042DE94
0045AC74  |.  BA E0AC4500      mov     edx, CrackMe.0045ACE0                  ;  ASCII "Hint: Enter the PassWord by clicking

these buttons."
0045AC79  |.  E8 7231FDFF      call    CrackMe.0042DDF0
0045AC7E  |>  33C0             xor     eax, eax
0045AC80  |.  5A               pop     edx
0045AC81  |.  59               pop     ecx
0045AC82  |.  59               pop     ecx
0045AC83  |.  64:8910          mov     dword ptr fs:[eax], edx
0045AC86  |.  68 A0AC4500      push    CrackMe.0045ACA0
0045AC8B  |>  8D45 F8          lea     eax, dword ptr [ebp-8]
0045AC8E  |.  BA 02000000      mov     edx, 2
0045AC93  |.  E8 D891FAFF      call    CrackMe.00403E70
0045AC98  \.  C3               retn
》》》》》》

通过上面的分析,知道了要满足下面的过程:

1。第一次点击的框数加上第二次点击的框数之和必须等于9;
1。第三次点击的框数加上第四次点击的框数之和必须等于9;
1。第五次点击的框数加上第六次点击的框数之和必须等于9;
1。第七次点击的框数加上第八次点击的框数之和必须等于9;
1。第九次点击的框数必须是第9个(界面最右下角的)框的区域。

再看,激活显示按钮后,点击CrackMe按钮的算法事件:

》》》》》》
0045BAD4  /.  55               push    ebp                                    ;  crackme.click
0045BAD5  |.  8BEC             mov     ebp, esp
0045BAD7  |.  83C4 AC          add     esp, -54
0045BADA  |.  53               push    ebx
0045BADB  |.  56               push    esi
0045BADC  |.  57               push    edi
0045BADD  |.  33C9             xor     ecx, ecx
0045BADF  |.  894D B0          mov     dword ptr [ebp-50], ecx
0045BAE2  |.  894D AC          mov     dword ptr [ebp-54], ecx
0045BAE5  |.  894D B8          mov     dword ptr [ebp-48], ecx
0045BAE8  |.  894D B4          mov     dword ptr [ebp-4C], ecx
0045BAEB  |.  894D C0          mov     dword ptr [ebp-40], ecx
0045BAEE  |.  894D BC          mov     dword ptr [ebp-44], ecx
0045BAF1  |.  894D C4          mov     dword ptr [ebp-3C], ecx
0045BAF4  |.  8945 FC          mov     dword ptr [ebp-4], eax
0045BAF7  |.  33C0             xor     eax, eax
0045BAF9  |.  55               push    ebp
0045BAFA  |.  68 BFBC4500      push    CrackMe.0045BCBF
0045BAFF  |.  64:FF30          push    dword ptr fs:[eax]
0045BB02  |.  64:8920          mov     dword ptr fs:[eax], esp
0045BB05  |.  8D55 C4          lea     edx, dword ptr [ebp-3C]
0045BB08  |.  8B45 FC          mov     eax, dword ptr [ebp-4]
0045BB0B  |.  8B80 00030000    mov     eax, dword ptr [eax+300]
0045BB11  |.  E8 A2D4FDFF      call    CrackMe.00438FB8
0045BB16  |.  8B45 C4          mov     eax, dword ptr [ebp-3C]                ;  注册码 -> eax
0045BB19  |.  E8 EE85FAFF      call    CrackMe.0040410C                       ;  取注册码长度
0045BB1E  |.  83F8 09          cmp     eax, 9                                 ;  注册码长度与9比较
0045BB21  |.  0F85 E6000000    jnz     CrackMe.0045BC0D                       ;  相等,不跳
0045BB27  |.  BF 01000000      mov     edi, 1
0045BB2C  |.  8D45 D4          lea     eax, dword ptr [ebp-2C]
0045BB2F  |.  8945 F8          mov     dword ptr [ebp-8], eax
0045BB32  |>  BE 01000000      /mov     esi, 1
0045BB37  |.  8B45 F8          |mov     eax, dword ptr [ebp-8]                ;  eax := $12F634;
0045BB3A  |.  8BD8             |mov     ebx, eax
0045BB3C  |>  8BC7             |/mov     eax, edi                             ;  eax := 1;
0045BB3E  |.  48               ||dec     eax                                  ;  eax := ecx - 1;; Switch (cases 1..3)
0045BB3F  |.  74 0B            ||je      short CrackMe.0045BB4C               ;  为0,跳
0045BB41  |.  48               ||dec     eax                                  ;  eax := eax - 1;
0045BB42  |.  74 38            ||je      short CrackMe.0045BB7C               ;  为0,跳
0045BB44  |.  48               ||dec     eax                                  ;  eax := eax - 1;
0045BB45  |.  74 66            ||je      short CrackMe.0045BBAD               ;  为0,跳
0045BB47  |.  E9 92000000      ||jmp     CrackMe.0045BBDE
0045BB4C  |>  8D45 C0          ||lea     eax, dword ptr [ebp-40]              ;  eax := $12F620;; Case 1 of switch 0045BB3E
0045BB4F  |.  50               ||push    eax
0045BB50  |.  8D55 BC          ||lea     edx, dword ptr [ebp-44]
0045BB53  |.  8B45 FC          ||mov     eax, dword ptr [ebp-4]
0045BB56  |.  8B80 00030000    ||mov     eax, dword ptr [eax+300]
0045BB5C  |.  E8 57D4FDFF      ||call    CrackMe.00438FB8
0045BB61  |.  8B45 BC          ||mov     eax, dword ptr [ebp-44]              ;  注册码 -> eax
0045BB64  |.  B9 01000000      ||mov     ecx, 1
0045BB69  |.  8BD6             ||mov     edx, esi
0045BB6B  |.  E8 FC87FAFF      ||call    CrackMe.0040436C
0045BB70  |.  8B45 C0          ||mov     eax, dword ptr [ebp-40]
0045BB73  |.  E8 ACC2FAFF      ||call    CrackMe.00407E24
0045BB78  |.  8903             ||mov     dword ptr [ebx], eax
0045BB7A  |.  EB 74            ||jmp     short CrackMe.0045BBF0
0045BB7C  |>  8D45 B8          ||lea     eax, dword ptr [ebp-48]              ;  eax := $12F618;; Case 2 of switch 0045BB3E
0045BB7F  |.  50               ||push    eax
0045BB80  |.  8D55 B4          ||lea     edx, dword ptr [ebp-4C]
0045BB83  |.  8B45 FC          ||mov     eax, dword ptr [ebp-4]
0045BB86  |.  8B80 00030000    ||mov     eax, dword ptr [eax+300]
0045BB8C  |.  E8 27D4FDFF      ||call    CrackMe.00438FB8
0045BB91  |.  8B45 B4          ||mov     eax, dword ptr [ebp-4C]              ;  注册码 -> eax
0045BB94  |.  8D56 03          ||lea     edx, dword ptr [esi+3]
0045BB97  |.  B9 01000000      ||mov     ecx, 1
0045BB9C  |.  E8 CB87FAFF      ||call    CrackMe.0040436C
0045BBA1  |.  8B45 B8          ||mov     eax, dword ptr [ebp-48]
0045BBA4  |.  E8 7BC2FAFF      ||call    CrackMe.00407E24
0045BBA9  |.  8903             ||mov     dword ptr [ebx], eax
0045BBAB  |.  EB 43            ||jmp     short CrackMe.0045BBF0
0045BBAD  |>  8D45 B0          ||lea     eax, dword ptr [ebp-50]              ;  eax := $12F610;; Case 3 of switch 0045BB3E
0045BBB0  |.  50               ||push    eax
0045BBB1  |.  8D55 AC          ||lea     edx, dword ptr [ebp-54]
0045BBB4  |.  8B45 FC          ||mov     eax, dword ptr [ebp-4]
0045BBB7  |.  8B80 00030000    ||mov     eax, dword ptr [eax+300]
0045BBBD  |.  E8 F6D3FDFF      ||call    CrackMe.00438FB8
0045BBC2  |.  8B45 AC          ||mov     eax, dword ptr [ebp-54]              ;  注册码 -> eax
0045BBC5  |.  8D56 06          ||lea     edx, dword ptr [esi+6]
0045BBC8  |.  B9 01000000      ||mov     ecx, 1
0045BBCD  |.  E8 9A87FAFF      ||call    CrackMe.0040436C
0045BBD2  |.  8B45 B0          ||mov     eax, dword ptr [ebp-50]
0045BBD5  |.  E8 4AC2FAFF      ||call    CrackMe.00407E24
0045BBDA  |.  8903             ||mov     dword ptr [ebx], eax
0045BBDC  |.  EB 12            ||jmp     short CrackMe.0045BBF0
0045BBDE  |>  B8 D8BC4500      ||mov     eax, CrackMe.0045BCD8                ;  ASCII "Program Error!"; Default case of

switch 0045BB3E
0045BBE3  |.  E8 70C2FCFF      ||call    CrackMe.00427E58
0045BBE8  |.  8B45 FC          ||mov     eax, dword ptr [ebp-4]
0045BBEB  |.  E8 089AFFFF      ||call    CrackMe.004555F8
0045BBF0  |>  46               ||inc     esi                                  ;  esi := esi + 1;
0045BBF1  |.  83C3 04          ||add     ebx, 4
0045BBF4  |.  83FE 04          ||cmp     esi, 4                               ;  = 4 ?
0045BBF7  |.^ 0F85 3FFFFFFF    |\jnz     CrackMe.0045BB3C                     ;  不等于,循环
0045BBFD  |.  47               |inc     edi                                   ;  edi := edi - 1;
0045BBFE  |.  8345 F8 0C       |add     dword ptr [ebp-8], 0C                 ;  [ebp-8] := [ebp-8] + $C;
0045BC02  |.  83FF 04          |cmp     edi, 4
0045BC05  |.^ 0F85 27FFFFFF    \jnz     CrackMe.0045BB32
0045BC0B  |.  EB 13            jmp     short CrackMe.0045BC20
0045BC0D  |>  8B45 FC          mov     eax, dword ptr [ebp-4]
0045BC10  |.  8B80 4C030000    mov     eax, dword ptr [eax+34C]
0045BC16  |.  BA F0BC4500      mov     edx, CrackMe.0045BCF0                  ;  ASCII "Failed!"
0045BC1B  |.  E8 C8D3FDFF      call    CrackMe.00438FE8
0045BC20  |>  6B45 D4 63       imul    eax, dword ptr [ebp-2C], 63            ;  eax := 注册码弟1位 * $63;
0045BC24  |.  8B55 D8          mov     edx, dword ptr [ebp-28]                ;  edx := 注册码弟2位;
0045BC27  |.  8D14D2           lea     edx, dword ptr [edx+edx*8]             ;  edx := [edx + edx * $8];
0045BC2A  |.  03C2             add     eax, edx                               ;  eax := eax + edx;
0045BC2C  |.  8B55 DC          mov     edx, dword ptr [ebp-24]                ;  edx := 注册码弟3位;
0045BC2F  |.  03C2             add     eax, edx                               ;  eax := eax + edx;
0045BC31  |.  8945 C8          mov     dword ptr [ebp-38], eax                ;  //[ebp-38] := eax;
0045BC34  |.  6B45 E0 63       imul    eax, dword ptr [ebp-20], 63            ;  eax := 注册码弟4位 * $63;
0045BC38  |.  8B55 E4          mov     edx, dword ptr [ebp-1C]                ;  edx := 注册码弟5位;
0045BC3B  |.  8D14D2           lea     edx, dword ptr [edx+edx*8]             ;  edx := [edx + edx * $8];
0045BC3E  |.  03C2             add     eax, edx                               ;  eax := eax + edx;
0045BC40  |.  8B55 E8          mov     edx, dword ptr [ebp-18]                ;  edx := 注册码弟6位;
0045BC43  |.  03C2             add     eax, edx                               ;  eax := eax + edx;
0045BC45  |.  8945 CC          mov     dword ptr [ebp-34], eax                ;  //[ebp-34] := eax;
0045BC48  |.  6B45 EC 63       imul    eax, dword ptr [ebp-14], 63            ;  eax := 注册码弟7位 * $63;
0045BC4C  |.  8B55 F0          mov     edx, dword ptr [ebp-10]                ;  edx := 注册码弟8位;
0045BC4F  |.  8D14D2           lea     edx, dword ptr [edx+edx*8]             ;  edx := [edx + edx * $8];
0045BC52  |.  03C2             add     eax, edx                               ;  eax := eax + edx;
0045BC54  |.  8B55 F4          mov     edx, dword ptr [ebp-C]                 ;  edx := 注册码弟9位;
0045BC57  |.  03C2             add     eax, edx                               ;  eax := eax + edx;
0045BC59  |.  8945 D0          mov     dword ptr [ebp-30], eax                ;  //[ebp-30] := eax;
0045BC5C  |.  8B45 C8          mov     eax, dword ptr [ebp-38]                ;  eax := [ebp-38];
0045BC5F  |.  0345 CC          add     eax, dword ptr [ebp-34]                ;  eax := eax + [ebp-34];
0045BC62  |.  0345 D0          add     eax, dword ptr [ebp-30]                ;  eax := eax + [ebp-30];
0045BC65  |.  3D E7030000      cmp     eax, 3E7                               ;  eax = 3E7 ???
0045BC6A      75 15            jnz     short CrackMe.0045BC81                 ;  相等,便OK了!
0045BC6C  |.  8B45 FC          mov     eax, dword ptr [ebp-4]
0045BC6F  |.  8B80 4C030000    mov     eax, dword ptr [eax+34C]
0045BC75  |.  BA 00BD4500      mov     edx, CrackMe.0045BD00                  ;  ASCII "Succeed!"
0045BC7A  |.  E8 69D3FDFF      call    CrackMe.00438FE8
0045BC7F  |.  EB 23            jmp     short CrackMe.0045BCA4
0045BC81  |>  8B45 FC          mov     eax, dword ptr [ebp-4]
0045BC84  |.  8B80 4C030000    mov     eax, dword ptr [eax+34C]
0045BC8A  |.  BA F0BC4500      mov     edx, CrackMe.0045BCF0                  ;  ASCII "Failed!"
0045BC8F  |.  E8 54D3FDFF      call    CrackMe.00438FE8
0045BC94  |.  8B45 FC          mov     eax, dword ptr [ebp-4]
0045BC97  |.  8B80 00030000    mov     eax, dword ptr [eax+300]
0045BC9D  |.  33D2             xor     edx, edx
0045BC9F  |.  E8 44D3FDFF      call    CrackMe.00438FE8
0045BCA4  |>  33C0             xor     eax, eax
0045BCA6  |.  5A               pop     edx
0045BCA7  |.  59               pop     ecx
0045BCA8  |.  59               pop     ecx
0045BCA9  |.  64:8910          mov     dword ptr fs:[eax], edx
0045BCAC  |.  68 C6BC4500      push    CrackMe.0045BCC6
0045BCB1  |>  8D45 AC          lea     eax, dword ptr [ebp-54]
0045BCB4  |.  BA 07000000      mov     edx, 7
0045BCB9  |.  E8 B281FAFF      call    CrackMe.00403E70
0045BCBE  \.  C3               retn
》》》》》》

通过上面分析,知道了算法为三大步:
1。取注册码的的一位数,乘上十六进制数63;取注册码的的二位数,乘上十六进制数9;两者相加的结果,再加上注册码的的三位数;
2。取注册码的的四位数,乘上十六进制数63;取注册码的的五位数,乘上十六进制数9;两者相加的结果,再加上注册码的的六位数;
3。取注册码的的七位数,乘上十六进制数63;取注册码的的八位数,乘上十六进制数9;两者相加的结果,再加上注册码的的九位数;
4。将上面的3个结果在累加后,其结果等于十六进制的3E7,即十进制的999,便注册成功了。

用delphi+KOL表示,为如下代码:

》》》》》》
//穷举
function QJ(cz : integer): integer;
var
  eax, edx, ebp_30, ebp_34, ebp_38 : integer;
  code : string;
begin
code := int2str(cz);

eax := (ord(code[1])-$30) * $63;
edx := (ord(code[2])-$30) + (ord(code[2])-$30) * $8;
eax := eax + edx;
edx := (ord(code[3])-$30);
eax := eax + edx;
ebp_38 := eax;       //showmessage(int2hex(eax,8));

eax := (ord(code[4])-$30) * $63;
edx := (ord(code[5])-$30) + (ord(code[5])-$30) * $8;
eax := eax + edx;
edx := (ord(code[6])-$30);
eax := eax + edx;
ebp_34 := eax;

eax := (ord(code[7])-$30) * $63;
edx := (ord(code[8])-$30) + (ord(code[8])-$30) * $8;
eax := eax + edx;
edx := (ord(code[9])-$30);
eax := eax + edx;
ebp_30 := eax;

result := ebp_30 + ebp_34 + ebp_38;  //=3E7,便OK了!
end;
//****************************************************************************//
procedure TForm1.ButtonRegClick(Sender: PObj);
var
  i, czI : integer;
begin
  for i:= 111111111 to 999999999 do
  begin
    czI := i;
    if QJ(czI) = $3E7
    then Edit2.Text := int2Str(czI)
    else if ProgressBar.Progress < 9
         then ProgressBar.Progress := ProgressBar.Progress + 1
         else ProgressBar.Progress := 0;
  end;
end;
//****************************************************************************//
》》》》》》

2007-06-24 17:53
重新写了一个会让人海扁的keygen,和源代码一起放到了附件中,呵呵~~


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (18)
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
2
这么快啊
比赛的crackme没人写破文,一个比一个谦虚,不参加比赛的crackme破文到是出的快啊
2007-6-24 14:48
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
3
强啊。。。支持一下。。。

PS:这次上的是马甲还是??
2007-6-24 15:16
0
雪    币: 134
活跃值: (84)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
好,顶。
2007-6-24 16:06
0
雪    币: 538
活跃值: (460)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
5
强。。 学习。。。
2007-6-24 16:08
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
6
学习!!!!!
2007-6-24 17:24
0
雪    币: 239
活跃值: (20)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
jackeyqiu 是acafeel的马甲!
2007-6-24 17:51
0
雪    币: 333
活跃值: (116)
能力值: ( LV9,RANK:570 )
在线值:
发帖
回帖
粉丝
8
马甲是什么呀?我不懂的
我将继续下潜,努力的向楼上这些大牛们学习。。。



厉害,这都被你给看出来了呀~
佩服佩服~
2007-6-24 18:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
正在努力学习中......
2007-6-24 18:53
0
雪    币: 297
活跃值: (21)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
10
厉害,只有学习的份~~
2007-6-24 21:25
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
啊,太强了。。。膜拜
2007-6-24 22:40
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
12
又一牛人,我前五分钟刚开始搞,现在看到文章了,````省事了!
顶上去!

ps:这楼主小样和hawking一个样,总爱抢人家滴东东
2007-6-25 08:46
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
13
又一牛人,我前五分钟刚开始搞,现在看到文章了,````省事了!
顶上去!

ps:这楼主小样和hawking一个样,总爱抢人家滴东东

(而且速度还挺快.. )
2007-6-25 08:49
0
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
14
我靠!太牛了!
自家兄弟!支持一下!
2007-6-25 09:13
0
雪    币: 372
活跃值: (31)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
15
%u5B66%u4E60%u3002%u3002%u3002
2007-6-25 11:15
0
雪    币: 372
活跃值: (31)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
16
学习。。。
2007-6-25 11:16
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
17
砍死他...
2007-6-25 11:21
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
18
强悍+佩服+支持+膜拜
2007-6-25 11:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
看了上些,写的好,接下来要试着写下
2007-8-8 09:47
0
游客
登录 | 注册 方可回帖
返回
//