飘云 发表于 2005-12-15 07:00:38

算法再探:CrackMe002--献给算法初学者(考验你的耐性)

算法再探:CrackMe002--献给算法初学者(考验你的耐性)

简介:算法简单,但是比较长,用到了最常用的指令,非常适合初学者练习
      希望你能够有耐心(不要暴力),把算法分析出来,并写出完美注册机~~

BTW: 高手们(成员级别)请略过,不要那么快贴分析过程出来,让大伙练
      练手~~~    不过高手们可以把它当做KeyGenMe来玩~ 嘿嘿

Nisy 发表于 2005-12-15 09:02:40

呵呵 辛苦了 看来这个东西不好弄 就不先玩这个了 ~

hyd009 发表于 2005-12-16 21:19:19

飘云兄对学员太好了,做这个练习对算法的学习很有帮助

秋秋 发表于 2005-12-21 17:35:06

UPX壳脱后,运行不了?????

秋秋 发表于 2006-1-2 17:23:23

破不了壳,就将就了。

夜之魂 发表于 2006-1-4 21:02:35

UPX脱壳后运行不了,也只好带壳修行了,明码比较,算法不写了,嘿嘿!

xianju110 发表于 2006-1-6 09:13:34

飘云 发表于 2006-1-6 11:23:08

兄弟们:既然是算法分析 就简单的贴个过程吧~ 嘿嘿~~

busheler 发表于 2006-1-7 22:07:54

这个破文是用“破文圣手”做的,呵呵!!


【破文标题】CrackMe002算法分析
【破文作者】Busheler
【作者邮箱】[email protected]
【作者主页】
【破解工具】odbg110,win32dasm,PEiD v0.94,LordPE Deluxe V1.4,Import REConstructor V1.6
【破解平台】Windows2000
【软件名称】CrackMe002 By PiaoYun
【软件大小】87.0KB
【原版下载】https://www.chinapyg.com/attachment.php?aid=541
【保护方式】
【软件简介】算法简单,但是比较长,用到了最常用的指令,非常适合初学者练习希望你能够有耐心(不要暴力),把算法分析出来,并写出完美注册机~~
------------------------------------------------------------------------
一、脱壳:
   PEiD v0.94查壳无发现,但可以找到OEP,试用LordPE Deluxe V1.4+Import REConstructor V1.6脱之,成功运行。

二、找资源:
   win32dasm载入找到如下信息:

:0040172A 8B4664                  mov eax, dword ptr
:0040172D 50                      push eax
:0040172E FF15C4214000            call dword ptr
:00401734 83C438                  add esp, 00000038
:00401737 85C0                  test eax, eax
:00401739 7512                  jne 0040174D
:0040173B 50                      push eax

* Possible StringData Ref from Data Obj ->"恭喜"
                                  |
:0040173C 682C304000            push 0040302C

* Possible StringData Ref from Data Obj ->"注册成功!"
                                  |
:00401741 6820304000            push 00403020
:00401746 8BCE                  mov ecx, esi
:00401748 E8BD020000            call 00401A0A

三、踏上破解之路:

odbg110载入:


很容易找到关键点,因为是明码比较注册码很容易交出了!

用户名:busheler

注册码:817547681632518459232612948

004015A0   . 81EC FC010000SUB ESP,1FC
004015A6   . 53             PUSH EBX
004015A7   . 55             PUSH EBP
004015A8   . 56             PUSH ESI
004015A9   . 57             PUSH EDI
004015AA   . 8BD9         MOV EBX,ECX
004015AC   . 6A 01          PUSH 1
004015AE   . 895C24 18      MOV DWORD PTR SS:,EBX
004015B2   . E8 59040000    CALL <JMP.&mfc42.#6334>
004015B7   . 8B53 60      MOV EDX,DWORD PTR DS:
004015BA   . 83C9 FF      OR ECX,FFFFFFFF
004015BD   . 8BFA         MOV EDI,EDX
004015BF   . 33C0         XOR EAX,EAX
004015C1   . F2:AE          REPNE SCAS BYTE PTR ES:
004015C3   . F7D1         NOT ECX
004015C5   . 2BF9         SUB EDI,ECX
004015C7   . 8DAC24 4401000>LEA EBP,DWORD PTR SS:
004015CE   . 8BC1         MOV EAX,ECX
004015D0   . 8BF7         MOV ESI,EDI
004015D2   . 8BFD         MOV EDI,EBP
004015D4   . 8B52 F8      MOV EDX,DWORD PTR DS:
004015D7   . C1E9 02      SHR ECX,2
004015DA   . F3:A5          REP MOVS DWORD PTR ES:,DWORD PTR DS:
004015DC   . 8BC8         MOV ECX,EAX
004015DE   . 83E1 03      AND ECX,3
004015E1   . F3:A4          REP MOVS BYTE PTR ES:,BYTE PTR DS:
004015E3   . 0FBEB424 44010>MOVSX ESI,BYTE PTR SS:
004015EB   . 85D2         TEST EDX,EDX
004015ED   . 75 1D          JNZ SHORT dumped_.0040160C
004015EF   . 52             PUSH EDX
004015F0   . 68 44304000    PUSH dumped_.00403044
004015F5   . 68 34304000    PUSH dumped_.00403034
004015FA   . 8BCB         MOV ECX,EBX
004015FC   . E8 09040000    CALL <JMP.&mfc42.#4224>
00401601   . 5F             POP EDI
00401602   . 5E             POP ESI
00401603   . 5D             POP EBP
00401604   . 5B             POP EBX
00401605   . 81C4 FC010000ADD ESP,1FC
0040160B   . C3             RET
0040160C   > 8BC2         MOV EAX,EDX                                          ;第三组算码开始!
0040160E   . 6A 0A          PUSH 0A                                              ; /radix = A (10.)
00401610   . 0FAFC6         IMUL EAX,ESI                                       ; |
00401613   . 8BC8         MOV ECX,EAX                                          ; |
00401615   . 8B3D D0214000MOV EDI,DWORD PTR DS:[<&msvcrt._itoa>]               ; |MSVCRT._itoa
0040161B   . C1E1 04      SHL ECX,4                                          ; |
0040161E   . 03C8         ADD ECX,EAX                                          ; |
00401620   . 8D0C88         LEA ECX,DWORD PTR DS:                     ; |
00401623   . C1E1 03      SHL ECX,3                                          ; |
00401626   . 2BC8         SUB ECX,EAX                                          ; |
00401628   . 8D0C49         LEA ECX,DWORD PTR DS:                     ; |
0040162B   . 8D1C88         LEA EBX,DWORD PTR DS:                     ; |
0040162E   . 8D8424 AC01000>LEA EAX,DWORD PTR SS:                     ; |第三组算码结束!
00401635   . 50             PUSH EAX                                             ; |string
00401636   . 8D0492         LEA EAX,DWORD PTR DS:                     ; |第一组算码开始!
00401639   . C1E0 04      SHL EAX,4                                          ; |
0040163C   . 2BC2         SUB EAX,EDX                                          ; |
0040163E   . 8D0C46         LEA ECX,DWORD PTR DS:                     ; |
00401641   . 03C1         ADD EAX,ECX                                          ; |
00401643   . 8D1480         LEA EDX,DWORD PTR DS:                     ; |
00401646   . 8D04D0         LEA EAX,DWORD PTR DS:                     ; |第一组算码结束!
00401649   . 50             PUSH EAX                                             ; |value
0040164A   . FFD7         CALL EDI                                             ; \_itoa
0040164C   . 8D04B6         LEA EAX,DWORD PTR DS:                     ;第二组码开始!
0040164F   . 8D8C24 EC00000>LEA ECX,DWORD PTR SS:
00401656   . 6A 0A          PUSH 0A
00401658   . 51             PUSH ECX
00401659   . 8D1480         LEA EDX,DWORD PTR DS:
0040165C   . 8D0456         LEA EAX,DWORD PTR DS:
0040165F   . C1E0 05      SHL EAX,5
00401662   . 03C6         ADD EAX,ESI
00401664   . 8D0440         LEA EAX,DWORD PTR DS:
00401667   . C1E0 04      SHL EAX,4                                          ;第二组码结束!
0040166A   . 50             PUSH EAX
0040166B   . FFD7         CALL EDI
0040166D   . 8D8C24 9400000>LEA ECX,DWORD PTR SS:
00401674   . 6A 0A          PUSH 0A
00401676   . 51             PUSH ECX
00401677   . 53             PUSH EBX
00401678   . FFD7         CALL EDI
0040167A   . 81C3 20170000ADD EBX,1720                                       ;第四组开始!
00401680   . 8D5424 3C      LEA EDX,DWORD PTR SS:
00401684   . 895C24 34      MOV DWORD PTR SS:,EBX
00401688   . 6A 0A          PUSH 0A
0040168A   . DB4424 38      FILD DWORD PTR SS:
0040168E   . 52             PUSH EDX
0040168F   . DC0D 38254000FMUL QWORD PTR DS:                           ;第四组结束!
00401695   . E8 D6030000    CALL <JMP.&msvcrt._ftol>
0040169A   . 50             PUSH EAX
0040169B   . FFD7         CALL EDI
0040169D   . 8D7C24 48      LEA EDI,DWORD PTR SS:
004016A1   . 83C9 FF      OR ECX,FFFFFFFF
004016A4   . 33C0         XOR EAX,EAX
004016A6   . 8D9424 AC00000>LEA EDX,DWORD PTR SS:
004016AD   . F2:AE          REPNE SCAS BYTE PTR ES:
004016AF   . F7D1         NOT ECX
004016B1   . 2BF9         SUB EDI,ECX
004016B3   . 8BF7         MOV ESI,EDI
004016B5   . 8BD9         MOV EBX,ECX
004016B7   . 8BFA         MOV EDI,EDX
004016B9   . 83C9 FF      OR ECX,FFFFFFFF
004016BC   . F2:AE          REPNE SCAS BYTE PTR ES:
004016BE   . 8BCB         MOV ECX,EBX
004016C0   . 4F             DEC EDI
004016C1   . C1E9 02      SHR ECX,2
004016C4   . F3:A5          REP MOVS DWORD PTR ES:,DWORD PTR DS:
004016C6   . 8BCB         MOV ECX,EBX
004016C8   . 8D9C24 D801000>LEA EBX,DWORD PTR SS:
004016CF   . 83E1 03      AND ECX,3
004016D2   . F3:A4          REP MOVS BYTE PTR ES:,BYTE PTR DS:
004016D4   . 8DBC24 1001000>LEA EDI,DWORD PTR SS:
004016DB   . 83C9 FF      OR ECX,FFFFFFFF
004016DE   . F2:AE          REPNE SCAS BYTE PTR ES:
004016E0   . F7D1         NOT ECX
004016E2   . 2BF9         SUB EDI,ECX
004016E4   . 8BF7         MOV ESI,EDI
004016E6   . 8BE9         MOV EBP,ECX
004016E8   . 8BFB         MOV EDI,EBX
004016EA   . 83C9 FF      OR ECX,FFFFFFFF
004016ED   . F2:AE          REPNE SCAS BYTE PTR ES:
004016EF   . 4F             DEC EDI
004016F0   . 8BCD         MOV ECX,EBP
004016F2   . C1E9 02      SHR ECX,2
004016F5   . F3:A5          REP MOVS DWORD PTR ES:,DWORD PTR DS:
004016F7   . 8BCD         MOV ECX,EBP
004016F9   . 83E1 03      AND ECX,3
004016FC   . F3:A4          REP MOVS BYTE PTR ES:,BYTE PTR DS:
004016FE   . 8BFA         MOV EDI,EDX
00401700   . 83C9 FF      OR ECX,FFFFFFFF
00401703   . F2:AE          REPNE SCAS BYTE PTR ES:
00401705   . F7D1         NOT ECX
00401707   . 2BF9         SUB EDI,ECX
00401709   . 8BF7         MOV ESI,EDI
0040170B   . 8BFB         MOV EDI,EBX
0040170D   . 8BE9         MOV EBP,ECX
0040170F   . 8BD7         MOV EDX,EDI
00401711   . 83C9 FF      OR ECX,FFFFFFFF
00401714   . 52             PUSH EDX                                             ; /s2
00401715   . F2:AE          REPNE SCAS BYTE PTR ES:                         ; |
00401717   . 8BCD         MOV ECX,EBP                                          ; |
00401719   . 4F             DEC EDI                                              ; |
0040171A   . C1E9 02      SHR ECX,2                                          ; |
0040171D   . F3:A5          REP MOVS DWORD PTR ES:,DWORD PTR DS:       ; |
0040171F   . 8BCD         MOV ECX,EBP                                          ; |
00401721   . 83E1 03      AND ECX,3                                          ; |
00401724   . F3:A4          REP MOVS BYTE PTR ES:,BYTE PTR DS:         ; |
00401726   . 8B7424 48      MOV ESI,DWORD PTR SS:                        ; |
0040172A   . 8B46 64      MOV EAX,DWORD PTR DS:                        ; |
0040172D   . 50             PUSH EAX                                             ; |s1
0040172E   . FF15 C4214000CALL DWORD PTR DS:[<&msvcrt._mbscmp>]                ; \注册码比较,这里下断可直接看到注册码!

四、算法分析

a:用户名长度;
b:用户名第一个字符ASCII码十进制值。

x1 = ((a × 5 × 16 - a) × 3 + b) × 41

x2 = (((b + b × 4) × 5 × 2 + b) × 32 + b) × 3 × 16

x3 = (((a × b × 16 + a × b) × 4 + a × b) × 8 - a × b) × 3 × 4 + a × b

x4 = fix ((x3 + 5920) × 6.2831852)

算法虽然不复杂,还是有点繁琐,算啊。。。。算啊。。。。算啊。。。。算啊。。。。晕!

[ 本帖最后由 busheler 于 2006-1-8 14:31 编辑 ]

WildCatIII 发表于 2006-3-10 23:01:00

原帖由 busheler 于 2006-1-7 14:07 发表
这个破文是用“破文圣手”做的,呵呵!!


【破文标题】CrackMe002算法分析
【破文作者】Busheler
【作者邮箱】[email protected]
【作者主页】
【破解工具】odbg110,win32dasm,PEiD v0.94,LordPE Del ...

我看最好是把算法分析先放起来...

咱看了都没什么意思...

(算法文章都有了,咱们兄弟玩不一定有劲!)
页: [1] 2
查看完整版本: 算法再探:CrackMe002--献给算法初学者(考验你的耐性)