飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6288|回复: 24

再OCN做的一个初级算法的练习

[复制链接]

该用户从未签到

发表于 2006-1-16 21:57:16 | 显示全部楼层 |阅读模式
【文章名称】:算法练习2!
【文章作者】:夜之魂
【作者邮件】:yezhihun_chen@126.com
破解工具】:OD PEID
【保护方式】:MASM32 / TASM32
【软件限制】:
【破解难度】:简单
============================================================
【软件介绍】
主要是学习最基本的算法,学习基本的汇编语言!
============================================================
【破解分析过程】
填入用户名 yezhihuin   注册码 123456789 下断BP GetDlgItemTextA,断下后来到
0040150C   |.  FF75 08         push dword ptr ss:[ebp+8]       ; |hWnd
0040150F   |.  E8 4A010000     call <jmp.&user32.GetDlgItemTex>; \GetDlgItemTextA
00401514   |.  8D0D 20304000   lea ecx,dword ptr ds:[403020]   ;  获得用户名的位数,这里我用的是yezhihun 8位
0040151A   |.  890D A0304000   mov dword ptr ds:[4030A0],ecx
00401520   |.  A3 A4304000     mov dword ptr ds:[4030A4],eax
00401525   |.  833D A4304000 0>cmp dword ptr ds:[4030A4],4     ;  比较用户名是否大于四位
0040152C   |.  73 04           jnb short CrackMe.00401532      ;  大于或等于转移
0040152E   |.  C9              leave
0040152F   |.  C2 1000         retn 10
00401532   |>  68 00010000     push 100                        ; /Count = 100 (256.)
00401537   |.  68 AC304000     push CrackMe.004030AC           ; |Buffer = CrackMe.004030AC
0040153C   |.  68 ED030000     push 3ED                        ; |ControlID = 3ED (1005.)
00401541   |.  FF75 08         push dword ptr ss:[ebp+8]       ; |hWnd
00401544   |.  E8 15010000     call <jmp.&user32.GetDlgItemTex>; \GetDlgItemTextA
00401549   |.  A3 A8304000     mov dword ptr ds:[4030A8],eax   ;  注册码的位数进  mov dword ptr ds:[4030A8]
0040154E   |.  83F8 10         cmp eax,10                      ;  比较是否等于16位
00401551       74 04           je short CrackMe.00401557       ;  相等则跳
00401553   |.  C9              leave
00401554   |.  C2 1000         retn 10
00401557   |>  8D0D AC304000   lea ecx,dword ptr ds:[4030AC]   ;  载入注册码
0040155D   |.  890D AC314000   mov dword ptr ds:[4031AC],ecx
00401563   |.  E8 00FBFFFF     call CrackMe.00401068           ;  比较第一位注册码是否为H
00401568   |.  33C0            xor eax,eax                     ;  eax 清零
0040156A   |.  E8 2EFBFFFF     call CrackMe.0040109D           ;  比较第二位注册码
0040156F   |.  0BC2            or eax,edx                      ;  OR后EAX0014060B
00401571   |.  E8 5CFBFFFF     call CrackMe.004010D2           ;  比较的三位注册码
00401576   |.  85C0            test eax,eax
00401578   |.  E8 8AFBFFFF     call CrackMe.00401107           ;  比较第四位注册码
0040157D   |.  33C8            xor ecx,eax
0040157F   |.  E8 B8FBFFFF     call CrackMe.0040113C           ;  第五位,第七位,第十一位和第十位注册码
00401584   |.  F7D1            not ecx
00401586   |.  FF35 A4304000   push dword ptr ds:[4030A4]
0040158C   |.  FF35 AC314000   push dword ptr ds:[4031AC]
00401592   |.  E8 77FCFFFF     call CrackMe.0040120E           ;  第六位注册码
00401597   |.  030D A4304000   add ecx,dword ptr ds:[4030A4]
0040159D   |.  E8 FFFBFFFF     call CrackMe.004011A1           ;  第八位和第九位注册码
004015A2   |.  91              xchg eax,ecx                    ;  交换
004015A3   |.  D1E0            shl eax,1                       ;  位移
004015A5   |.  8BD0            mov edx,eax
004015A7   |.  E8 A6FCFFFF     call CrackMe.00401252           ;  第十位和第十一位的和能将2整除
004015AC   |.  B8 78563412     mov eax,12345678
004015B1   |.  E8 EDFCFFFF     call CrackMe.004012A3           ;  第十二位,好像是任意数
004015B6   |.  03C1            add eax,ecx
004015B8   |.  E8 32FDFFFF     call CrackMe.004012EF           ;  第十三位的值加上第六位的值后和是奇数
004015BD   |.  33C9            xor ecx,ecx
004015BF   |.  FF35 A0304000   push dword ptr ds:[4030A0]
004015C5   |.  E8 63FAFFFF     call CrackMe.0040102D           ;  取用户名的和
004015CA   |.  E8 71FDFFFF     call CrackMe.00401340           ;  第十四,十五的值
004015CF   |.  03CB            add ecx,ebx
004015D1   |.  68 00010000     push 100                        ; /Count = 100 (256.)
004015D6   |.  68 AC304000     push CrackMe.004030AC           ; |Buffer = CrackMe.004030AC
004015DB   |.  68 ED030000     push 3ED                        ; |ControlID = 3ED (1005.)
004015E0   |.  FF75 08         push dword ptr ss:[ebp+8]       ; |hWnd
004015E3   |.  E8 76000000     call <jmp.&user32.GetDlgItemTex>; \GetDlgItemTextA
004015E8   |.  8BC8            mov ecx,eax
004015EA   |.  C1C1 05         rol ecx,5
004015ED   |.  8BC1            mov eax,ecx
004015EF   |.  E8 ACFDFFFF     call CrackMe.004013A0           ;  这里是用户名的第十六位,和用户名的第六位相同
004015F4   |.  2BC1            sub eax,ecx
004015F6   |.  813D B0314000 F>cmp dword ptr ds:[4031B0],0FFF
00401600       75 14           jnz short CrackMe.00401616      ;  爆破点
00401602   |.  6A 40           push 40                         ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00401604   |.  68 D0204000     push CrackMe.004020D0           ; |Title = "Congratulations"
00401609   |.  68 C1204000     push CrackMe.004020C1           ; |Text = "GOOD JOB, MAN!"  成功标志
0040160E   |.  FF75 08         push dword ptr ss:[ebp+8]       ; |hOwner
00401611   |.  E8 5A000000     call <jmp.&user32.MessageBoxA>  ; \MessageBoxA
00401616   |>  C705 B0314000 0>mov dword ptr ds:[4031B0],0

一下是各个CALL的内容
--------------------------------------------------------------------------------------------------------------------
00401068    $  53              push ebx
00401069       56              db 56                           ;  CHAR 'V'
0040106A       57              db 57                           ;  CHAR 'W'
0040106B       6A              db 6A                           ;  CHAR 'j'
0040106C       00              db 00
0040106D    .  FF35 AC314000   push dword ptr ds:[4031AC]
00401073    .  E8 D8FFFFFF     call CrackMe.00401050           ;  这里提取假注册码的第一个字节
00401078    .  83F8 48         cmp eax,48                      ;  与48比较(48的ASC为H)
0040107B    .  74 0F           je short CrackMe.0040108C
0040107D    .  6A 00           push 0
0040107F    .  FF35 B0314000   push dword ptr ds:[4031B0]
00401085    .  E8 76FFFFFF     call CrackMe.00401000
0040108A    .  EB 0D           jmp short CrackMe.00401099
0040108C    >  6A 01           push 1
0040108E    .  FF35 B0314000   push dword ptr ds:[4031B0]
00401094    .  E8 67FFFFFF     call CrackMe.00401000
00401099    >  5F              pop edi
0040109A    .  5E              pop esi
0040109B    .  5B              pop ebx
0040109C    .  C3              retn
--------------------------------------------------------------------------------------------------------------------

0040109D   /$  53              push ebx
0040109E   |.  56              push esi
0040109F   |.  57              push edi
004010A0   |.  6A 01           push 1
004010A2   |.  FF35 AC314000   push dword ptr ds:[4031AC]
004010A8   |.  E8 A3FFFFFF     call CrackMe.00401050           ;  提取第二位注册码
004010AD   |.  83F8 54         cmp eax,54                      ;  与54比较(54的ASC码为T)
004010B0       74 0F           je short CrackMe.004010C1
004010B2   |.  6A 00           push 0
004010B4   |.  FF35 B0314000   push dword ptr ds:[4031B0]
004010BA   |.  E8 41FFFFFF     call CrackMe.00401000
004010BF   |.  EB 0D           jmp short CrackMe.004010CE
004010C1   |>  6A 02           push 2
004010C3   |.  FF35 B0314000   push dword ptr ds:[4031B0]
004010C9   |.  E8 32FFFFFF     call CrackMe.00401000
004010CE   |>  5F              pop edi
004010CF   |.  5E              pop esi
004010D0   |.  5B              pop ebx
004010D1   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------

004010D2   /$  53              push ebx
004010D3   |.  56              push esi
004010D4   |.  57              push edi
004010D5   |.  6A 02           push 2
004010D7   |.  FF35 AC314000   push dword ptr ds:[4031AC]
004010DD   |.  E8 6EFFFFFF     call CrackMe.00401050           ;  获得的三位注册码
004010E2   |.  83F8 2D         cmp eax,2D                      ;  比较
004010E5   |.  74 0F           je short CrackMe.004010F6
004010E7   |.  6A 00           push 0
004010E9   |.  FF35 B0314000   push dword ptr ds:[4031B0]
004010EF   |.  E8 0CFFFFFF     call CrackMe.00401000
004010F4   |.  EB 0D           jmp short CrackMe.00401103
004010F6   |>  6A 04           push 4
004010F8   |.  FF35 B0314000   push dword ptr ds:[4031B0]
004010FE   |.  E8 FDFEFFFF     call CrackMe.00401000
00401103   |>  5F              pop edi
00401104   |.  5E              pop esi
00401105   |.  5B              pop ebx
00401106   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------

00401107   /$  53              push ebx
00401108   |.  56              push esi
00401109   |.  57              push edi
0040110A   |.  6A 03           push 3
0040110C   |.  FF35 AC314000   push dword ptr ds:[4031AC]
00401112   |.  E8 39FFFFFF     call CrackMe.00401050           ;  提取第四位注册码
00401117   |.  83F8 37         cmp eax,37                      ;  比较是否是:“7”
0040111A       74 0F           je short CrackMe.0040112B
0040111C   |.  6A 00           push 0
0040111E   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401124   |.  E8 D7FEFFFF     call CrackMe.00401000
00401129   |.  EB 0D           jmp short CrackMe.00401138
0040112B   |>  6A 08           push 8
0040112D   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401133   |.  E8 C8FEFFFF     call CrackMe.00401000
00401138   |>  5F              pop edi
00401139   |.  5E              pop esi
0040113A   |.  5B              pop ebx
0040113B   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------

0040113C   /$  53              push ebx
0040113D   |.  56              push esi
0040113E   |.  57              push edi
0040113F   |.  6A 04           push 4
00401141   |.  FF35 AC314000   push dword ptr ds:[4031AC]
00401147   |.  E8 04FFFFFF     call CrackMe.00401050           ;  提取第五位注册码
0040114C   |.  8BD8            mov ebx,eax                     ;  注册码的值进EBX
0040114E   |.  6A 06           push 6
00401150   |.  FF35 AC314000   push dword ptr ds:[4031AC]
00401156   |.  E8 F5FEFFFF     call CrackMe.00401050           ;  提取第七位注册码
0040115B   |.  03D8            add ebx,eax                     ;  第五位的ASC码和第七位的相加进EBX
0040115D   |.  6A 09           push 9
0040115F   |.  FF35 AC314000   push dword ptr ds:[4031AC]
00401165   |.  E8 E6FEFFFF     call CrackMe.00401050           ;  提取第十位注册码
0040116A   |.  8BD0            mov edx,eax                     ;  注册码的值进EDX
0040116C   |.  6A 0A           push 0A
0040116E   |.  FF35 AC314000   push dword ptr ds:[4031AC]
00401174   |.  E8 D7FEFFFF     call CrackMe.00401050           ;  第十一位注册码
00401179   |.  03D0            add edx,eax                     ;  第十一位的ASC码和第十位的相加进EDX
0040117B   |.  33DA            xor ebx,edx                     ;  异或运算的值进EBX,主要看是否为零
0040117D   |.  0BDB            or ebx,ebx                      ;  或运算,如果是零就跳转
0040117F   |.  74 0F           je short CrackMe.00401190
00401181   |.  6A 00           push 0
00401183   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401189   |.  E8 72FEFFFF     call CrackMe.00401000
0040118E   |.  EB 0D           jmp short CrackMe.0040119D
00401190   |>  6A 10           push 10
00401192   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401198   |.  E8 63FEFFFF     call CrackMe.00401000
0040119D   |>  5F              pop edi
0040119E   |.  5E              pop esi
0040119F   |.  5B              pop ebx
004011A0   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------

004011A1   /$  53              push ebx
004011A2   |.  56              push esi
004011A3   |.  57              push edi
004011A4   |.  6A 07           push 7
004011A6   |.  FF35 AC314000   push dword ptr ds:[4031AC]
004011AC   |.  E8 9FFEFFFF     call CrackMe.00401050           ;  取第八位注册码
004011B1   |.  8BD8            mov ebx,eax
004011B3   |.  6A 08           push 8
004011B5   |.  FF35 AC314000   push dword ptr ds:[4031AC]
004011BB   |.  E8 90FEFFFF     call CrackMe.00401050           ;  取第九位注册码
004011C0   |.  03D8            add ebx,eax
004011C2   |.  6A 01           push 1
004011C4   |.  FF35 A0304000   push dword ptr ds:[4030A0]
004011CA   |.  E8 81FEFFFF     call CrackMe.00401050           ;  取用户名第二位
004011CF   |.  8BD0            mov edx,eax
004011D1   |.  8B0D A4304000   mov ecx,dword ptr ds:[4030A4]
004011D7   |.  83E9 02         sub ecx,2
004011DA   |.  51              push ecx
004011DB   |.  FF35 A0304000   push dword ptr ds:[4030A0]
004011E1   |.  E8 6AFEFFFF     call CrackMe.00401050           ;  取用户名七位
004011E6   |.  03D0            add edx,eax                     ;  取的用户名的两位ASC码之和
004011E8   |.  33DA            xor ebx,edx                     ;  看是否相等
004011EA   |.  0BDB            or ebx,ebx
004011EC       74 0F           je short CrackMe.004011FD       ;  相等则跳
004011EE   |.  6A 00           push 0
004011F0   |.  FF35 B0314000   push dword ptr ds:[4031B0]
004011F6   |.  E8 05FEFFFF     call CrackMe.00401000
004011FB   |.  EB 0D           jmp short CrackMe.0040120A
004011FD   |>  6A 40           push 40
004011FF   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401205   |.  E8 F6FDFFFF     call CrackMe.00401000
0040120A   |>  5F              pop edi
0040120B   |.  5E              pop esi
0040120C   |.  5B              pop ebx
0040120D   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------

0040120E   /$  55              push ebp
0040120F   |.  8BEC            mov ebp,esp
00401211   |.  53              push ebx
00401212   |.  56              push esi
00401213   |.  57              push edi
00401214   |.  68 20304000     push CrackMe.00403020           ;  ASCII "3424r"
00401219   |.  E8 0FFEFFFF     call CrackMe.0040102D           ;  取注册码的ASC码之和
0040121E   |.  F77D 0C         idiv dword ptr ss:[ebp+C]       ;  注册码之和除以位数
00401221   |.  8B0D AC314000   mov ecx,dword ptr ds:[4031AC]
00401227   |.  0FB649 05       movzx ecx,byte ptr ds:[ecx+5]   ;  这里取注册码的第六位
0040122B   |.  3BC1            cmp eax,ecx                     ;  从这里来看,这第六位注册码就是用户名的ASC的值与位数的商
0040122D       74 0F           je short CrackMe.0040123E
0040122F   |.  6A 00           push 0
00401231   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401237   |.  E8 C4FDFFFF     call CrackMe.00401000
0040123C   |.  EB 0D           jmp short CrackMe.0040124B
0040123E   |>  6A 20           push 20
00401240   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401246   |.  E8 B5FDFFFF     call CrackMe.00401000
0040124B   |>  5F              pop edi
0040124C   |.  5E              pop esi
0040124D   |.  5B              pop ebx
0040124E   |.  C9              leave
0040124F   \.  C2 0800         retn 8
--------------------------------------------------------------------------------------------------------------------

00401252   /$  53              push ebx
00401253   |.  56              push esi
00401254   |.  57              push edi
00401255   |.  6A 09           push 9
00401257   |.  FF35 AC314000   push dword ptr ds:[4031AC]
0040125D   |.  E8 EEFDFFFF     call CrackMe.00401050           ;  取第十位注册码
00401262   |.  8BD8            mov ebx,eax
00401264   |.  6A 0A           push 0A
00401266   |.  FF35 AC314000   push dword ptr ds:[4031AC]
0040126C   |.  E8 DFFDFFFF     call CrackMe.00401050           ;  取第十一位注册码
00401271   |.  03C3            add eax,ebx                     ;  第十位和第十一位的和
00401273   |.  B9 02000000     mov ecx,2
00401278   |.  33D2            xor edx,edx
0040127A   |.  F7F9            idiv ecx                        ;  看是否有余数
0040127C   |.  0BD2            or edx,edx
0040127E   |.  74 0F           je short CrackMe.0040128F
00401280   |.  6A 00           push 0
00401282   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401288   |.  E8 73FDFFFF     call CrackMe.00401000
0040128D   |.  EB 10           jmp short CrackMe.0040129F
0040128F   |>  68 80000000     push 80
00401294   |.  FF35 B0314000   push dword ptr ds:[4031B0]
0040129A   |.  E8 61FDFFFF     call CrackMe.00401000
0040129F   |>  5F              pop edi
004012A0   |.  5E              pop esi
004012A1   |.  5B              pop ebx
004012A2   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------

004012A3   /$  53              push ebx
004012A4   |.  56              push esi
004012A5   |.  57              push edi
004012A6   |.  33D2            xor edx,edx                     ;  EDX清零
004012A8   |.  A1 A4304000     mov eax,dword ptr ds:[4030A4]   ;  注册码位数进EAX
004012AD   |.  B9 03000000     mov ecx,3
004012B2   |.  F7F9            idiv ecx
004012B4   |.  8BF2            mov esi,edx                     ;  余数进ESI
004012B6   |.  6A 0B           push 0B
004012B8   |.  FF35 AC314000   push dword ptr ds:[4031AC]
004012BE   |.  E8 8DFDFFFF     call CrackMe.00401050
004012C3   |.  83E8 30         sub eax,30                      ;  第十二位的值减去30】,没发现什么作用
004012C6   |.  33D6            xor edx,esi
004012C8   |.  0BD2            or edx,edx
004012CA   |.  74 0F           je short CrackMe.004012DB
004012CC   |.  6A 00           push 0
004012CE   |.  FF35 B0314000   push dword ptr ds:[4031B0]
004012D4   |.  E8 27FDFFFF     call CrackMe.00401000
004012D9   |.  EB 10           jmp short CrackMe.004012EB
004012DB   |>  68 00010000     push 100
004012E0   |.  FF35 B0314000   push dword ptr ds:[4031B0]
004012E6   |.  E8 15FDFFFF     call CrackMe.00401000
004012EB   |>  5F              pop edi
004012EC   |.  5E              pop esi
004012ED   |.  5B              pop ebx
004012EE   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------

004012EF   /$  53              push ebx
004012F0   |.  56              push esi
004012F1   |.  57              push edi
004012F2   |.  6A 0C           push 0C
004012F4   |.  FF35 AC314000   push dword ptr ds:[4031AC]
004012FA   |.  E8 51FDFFFF     call CrackMe.00401050           ;  取第十三位
004012FF   |.  8BD8            mov ebx,eax                     ;  取得字符进EBX
00401301   |.  6A 05           push 5
00401303   |.  FF35 AC314000   push dword ptr ds:[4031AC]
00401309   |.  E8 42FDFFFF     call CrackMe.00401050           ;  取第六位注册码
0040130E   |.  03C3            add eax,ebx                     ;  第十三位和第六位的和
00401310   |.  B9 02000000     mov ecx,2
00401315   |.  33D2            xor edx,edx                     ;  清零,位余数腾空,嘿嘿
00401317   |.  F7F9            idiv ecx
00401319   |.  0BD2            or edx,edx                      ;  看是否能够整除
0040131B   |.  75 0F           jnz short CrackMe.0040132C      ;  不能整除则跳
0040131D   |.  6A 00           push 0
0040131F   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401325   |.  E8 D6FCFFFF     call CrackMe.00401000
0040132A   |.  EB 10           jmp short CrackMe.0040133C
0040132C   |>  68 00020000     push 200
00401331   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401337   |.  E8 C4FCFFFF     call CrackMe.00401000
0040133C   |>  5F              pop edi
0040133D   |.  5E              pop esi
0040133E   |.  5B              pop ebx
0040133F   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------

00401340   /$  53              push ebx
00401341   |.  56              push esi
00401342   |.  57              push edi
00401343   |.  6A 0C           push 0C
00401345   |.  FF35 AC314000   push dword ptr ds:[4031AC]
0040134B   |.  E8 00FDFFFF     call CrackMe.00401050           ;  取第十三位
00401350   |.  8BD8            mov ebx,eax
00401352   |.  6A 0D           push 0D
00401354   |.  FF35 AC314000   push dword ptr ds:[4031AC]
0040135A   |.  E8 F1FCFFFF     call CrackMe.00401050           ;  取第十四位
0040135F   |.  03D8            add ebx,eax                     ;  第十三位和第十四位的和
00401361   |.  6A 0E           push 0E
00401363   |.  FF35 AC314000   push dword ptr ds:[4031AC]
00401369   |.  E8 E2FCFFFF     call CrackMe.00401050           ;  取第十五位
0040136E   |.  03C3            add eax,ebx                     ;  到这里是将十三,十四,十五的和进EAX
00401370   |.  0305 A4304000   add eax,dword ptr ds:[4030A4]   ;  十三,十四,十五的和再加上用户名的位数
00401376   |.  3D 0A010000     cmp eax,10A                     ;  是否等于10A
0040137B       74 0F           je short CrackMe.0040138C
0040137D   |.  6A 00           push 0
0040137F   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401385   |.  E8 76FCFFFF     call CrackMe.00401000
0040138A   |.  EB 10           jmp short CrackMe.0040139C
0040138C   |>  68 00040000     push 400
00401391   |.  FF35 B0314000   push dword ptr ds:[4031B0]
00401397   |.  E8 64FCFFFF     call CrackMe.00401000
0040139C   |>  5F              pop edi
0040139D   |.  5E              pop esi
0040139E   |.  5B              pop ebx
0040139F   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------

004013A0   /$  53              push ebx
004013A1   |.  56              push esi
004013A2   |.  57              push edi
004013A3   |.  6A 0F           push 0F
004013A5   |.  FF35 AC314000   push dword ptr ds:[4031AC]
004013AB   |.  E8 A0FCFFFF     call CrackMe.00401050           ;  取第十六位
004013B0   |.  8BD8            mov ebx,eax
004013B2   |.  8B0D A4304000   mov ecx,dword ptr ds:[4030A4]
004013B8   |.  49              dec ecx
004013B9   |.  49              dec ecx
004013BA   |.  51              push ecx
004013BB   |.  FF35 A0304000   push dword ptr ds:[4030A0]
004013C1   |.  E8 8AFCFFFF     call CrackMe.00401050           ;  取用户名第六位
004013C6   |.  33C3            xor eax,ebx                     ;  注册码的第十六位与用户名的第六位比较
004013C8   |.  0BC0            or eax,eax
004013CA       74 0F           je short CrackMe.004013DB
004013CC   |.  6A 00           push 0
004013CE   |.  FF35 B0314000   push dword ptr ds:[4031B0]
004013D4   |.  E8 27FCFFFF     call CrackMe.00401000
004013D9   |.  EB 10           jmp short CrackMe.004013EB
004013DB   |>  68 00080000     push 800
004013E0   |.  FF35 B0314000   push dword ptr ds:[4031B0]
004013E6   |.  E8 15FCFFFF     call CrackMe.00401000
004013EB   |>  5F              pop edi
004013EC   |.  5E              pop esi
004013ED   |.  5B              pop ebx
004013EE   \.  C3              retn
--------------------------------------------------------------------------------------------------------------------


============================================================
【破解分析过程总结】
z这个软件不难,断到后立刻来到关键算法,非常适合象我这种菜鸟!嘿嘿!
主要算法:
前四位是固定的HT-7
第五位的ASC码+第七位=第十位+第十一位
第六位注册码就是用户名的ASC的值与位数的商
第八位+第九位的注册码的ASC值=用户名的第二位ASC值+用户名第七位的值
第十位和第十一位的和能将2整除   注意:这里限制了第五位和第七位
第十二位是任意数
注册码第十三位和注册码第六位的和不是偶数,即和不能整除2
第十三,十四,十五的和再加上用户名的位数等于10A
第十六位为用户名的第六位

我的注册码
yezhihun
HT-71n3ln3101Yxu

我是一只菜鸟,我要努力学习,再学习!
============================================================
      *************本文章版权归: 【夜之魂】 所有*************
          *****本文章由博思(BoS)文章生成器生成!*****
                 *****作者QQ:171090098*****

[ 本帖最后由 风飘雪 于 2006-2-8 10:57 编辑 ]

CrackMe.rar

10.23 KB, 下载次数: 59, 下载积分: 飘云币 -2 枚

PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2006-1-16 22:07:14 | 显示全部楼层
    很不错的说,支持一下,继续努力!

    离成员不远了!!呵呵!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-17 21:11:06 | 显示全部楼层
    能解释一下push dword ptr ss:[ebp+8] 这句的意思是什么吗?
    push 在汇编里是压栈吧,后面的呢?找资料找了半天...看不懂是什么意思....高手能站出来帮助一下新人吗?
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-18 10:43:22 | 显示全部楼层
    dword 强制将后面的数变为双字 double word
    〔〕指针 地址
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-2-3 21:53:49 | 显示全部楼层
    学习

    先强化脱壳,然后再好好学算法。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2006-2-4 01:09:21 | 显示全部楼层
    学习!分析得仔细,适合我们菜鸟。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2006-2-4 22:07:39 | 显示全部楼层
    有一点不太明白:“填入用户名 yezhihuin ”是9位,是不是笔误,多了一个i。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-6-20 07:54
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2006-5-11 05:12:21 | 显示全部楼层
    请问大大为什么我下BP GetDlgItemTextA断点后
    按运行却停在77D6AC06 >  8BFF   mov edi,edi
    与大大的0040150C   |.  FF75 08   push dword ptr ss:[ebp+8]
    的代码不同大大是如何来到0040150C 处
    可否请大大详细说明一下0040150C 处
    因为我断下的点根大大截然不同,菜鸟对这最基本的如果无法聊解
    使宗无法进入破解的领域,期盼大大的帮助 感激不尽
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-6-20 07:54
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2006-5-11 05:23:51 | 显示全部楼层
    0040154E   |.  83F8 10         cmp eax,10     ;  比较是否等于16位
    00401557   |>  8D0D AC304000   lea ecx,dword ptr ds:[4030AC]   ;  载入注册码
    0040155D   |.  890D AC314000   mov dword ptr ds:[4031AC],ecx
    00401563   |.  E8 00FBFFFF     call CrackMe.00401068           ;  比较第一位注册码是否为H
    00401568   |.  33C0            xor eax,eax                     ;  eax 清零
    0040156A   |.  E8 2EFBFFFF     call CrackMe.0040109D           ;  比较第二位注册码
    0040156F   |.  0BC2            or eax,edx                      ;  OR后EAX0014060B
    00401571   |.  E8 5CFBFFFF     call CrackMe.004010D2           ;  比较的三位注册码
    00401576   |.  85C0            test eax,eax
    00401578   |.  E8 8AFBFFFF     call CrackMe.00401107           ;  比较第四位注册码
    0040157D   |.  33C8            xor ecx,eax
    0040157F   |.  E8 B8FBFFFF     call CrackMe.0040113C           ;  第五位,第七位,第十一位和第十位注册码
    00401584   |.  F7D1            not ecx
    00401586   |.  FF35 A4304000   push dword ptr ds:[4030A4]
    0040158C   |.  FF35 AC314000   push dword ptr ds:[4031AC]
    00401592   |.  E8 77FCFFFF     call CrackMe.0040120E           ;  第六位注册码
    00401597   |.  030D A4304000   add ecx,dword ptr ds:[4030A4]
    0040159D   |.  E8 FFFBFFFF     call CrackMe.004011A1           ;  第八位和第九位注册码
    004015A2   |.  91              xchg eax,ecx                    ;  交换
    004015A3   |.  D1E0            shl eax,1                       ;  位移
    004015A5   |.  8BD0            mov edx,eax
    004015A7   |.  E8 A6FCFFFF     call CrackMe.00401252           ;  第十位和第十一位的和能将2整除
    004015AC   |.  B8 78563412     mov eax,12345678
    004015B1   |.  E8 EDFCFFFF     call CrackMe.004012A3           ;  第十二位,好像是任意数
    004015B6   |.  03C1            add eax,ecx
    004015B8   |.  E8 32FDFFFF     call CrackMe.004012EF           ;  第十三位的值加上第六位的值后和是

    大大 比较是否等于16位  cmp eax,10  10不是代表10位吗
    为何是   比较是否等于16位
    大大如何判断如00401563   |.  E8 00FBFFFF     call CrackMe.00401068     ;  比较第一位注册码是否为H
    大大如何判断比较第一位注册码是否为H等这些批注
    大大以上批注在OD上根本看不到批注 大大是如何判断
    请大大不要笑我 菜鸟真的不懂
    希望能藉由大大及先进们的指导让我有一天也有能力写一篇破文与大家分享

    [ 本帖最后由 chuan0326 于 2006-5-11 05:43 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-11 09:43:18 | 显示全部楼层
    cmp eax,10 这个10是16进制,换成10进制就是16
    下面比较第1位是否是h 要进call 判断
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表