| 
注册时间2006-1-25
阅读权限10
最后登录1970-1-1UID7440 周游历练 
 
 该用户从未签到 | 
 
| 目标软件:crackmeno3_1 破解方式:寻找注册码
 难易等级:初
 相关工具:peid ollydbg dede
 过程:首先查壳无,并且是用Borland Delphi 6.0 - 7.0语言编写,输入用户名:tong  注册码:54321 点验证,无信息。看来只有正确的注册码才会提示。用OD载入,用消息断点无法拦截,DEDE载入,查得验证信息地址,并在OD中拦截成功。如下:
 
 
 00459938  /.  55            PUSH EBP
 00459939  |.  8BEC          MOV EBP,ESP
 0045993B  |.  33C9          XOR ECX,ECX
 0045993D  |.  51            PUSH ECX
 0045993E  |.  51            PUSH ECX
 0045993F  |.  51            PUSH ECX
 00459940  |.  51            PUSH ECX
 00459941  |.  51            PUSH ECX
 00459942  |.  51            PUSH ECX
 00459943  |.  51            PUSH ECX
 00459944  |.  53            PUSH EBX
 00459945  |.  56            PUSH ESI
 00459946  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
 00459949  |.  33C0          XOR EAX,EAX
 0045994B  |.  55            PUSH EBP
 0045994C  |.  68 8E9A4500   PUSH CrackMeN.00459A8E
 00459951  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
 00459954  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
 00459957  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
 0045995A  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
 0045995D  |.  8B80 00030000 MOV EAX,DWORD PTR DS:[EAX+300]
 00459963  |.  E8 FCEFFDFF   CALL CrackMeN.00438964
 00459968  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]            ;  注册名
 0045996B  |.  E8 FCABFAFF   CALL CrackMeN.0040456C                   ;  注册名位数(eax)
 00459970  |.  8BF0          MOV ESI,EAX
 00459972  |.  33DB          XOR EBX,EBX
 00459974  |.  8BC6          MOV EAX,ESI
 00459976  |.  85C0          TEST EAX,EAX
 00459978  |.  7E 21         JLE SHORT CrackMeN.0045999B
 0045997A  |.  BA 01000000   MOV EDX,1                                ;  第一次计算
 0045997F  |>  69CE 8E91C621 /IMUL ECX,ESI,21C6918E                   ;  ecx=esi*21c6918e
 00459985  |.  03D9          |ADD EBX,ECX                             ;  ebx=ebx+ecx(初始ebx=0)
 00459987  |.  8B4D EC       |MOV ECX,DWORD PTR SS:[EBP-14]
 0045998A  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]       ;  依次取用户名
 0045998F  |.  69C9 CE020000 |IMUL ECX,ECX,2CE                        ;  ecx=ecx*2ce
 00459995  |.  03D9          |ADD EBX,ECX                             ;  ebx=ebx+ecx
 00459997  |.  42            |INC EDX                                 ;  edx=edx+1
 00459998  |.  48            |DEC EAX
 00459999  |.^ 75 E4         \JNZ SHORT CrackMeN.0045997F             ;  是否为0
 0045999B  |>  8BC3          MOV EAX,EBX
 0045999D  |.  99            CDQ                                       先扩展判断eax符号位为0,edx=00000000,否则edx =ffffffff
 0045999E  |.  33C2          XOR EAX,EDX                                eax=eax^edx
 004599A0  |.  2BC2          SUB EAX,EDX                                eax=eax-edx
 004599A2  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
 004599A5  |.  E8 9AEBFAFF   CALL CrackMeN.00408544                   ;  计算第一串
 004599AA  |.  8BC6          MOV EAX,ESI
 004599AC  |.  85C0          TEST EAX,EAX
 004599AE  |.  7E 21         JLE SHORT CrackMeN.004599D1
 004599B0  |.  BA 01000000   MOV EDX,1
 004599B5  |>  8B4D EC       /MOV ECX,DWORD PTR SS:[EBP-14]           ;  进行第二次转换
 004599B8  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]       ;  又依次取用户名
 004599BD  |.  69C9 8E91C621 |IMUL ECX,ECX,21C6918E                   ;  ecx=ecx*21c6918e
 004599C3  |.  69C9 BC070000 |IMUL ECX,ECX,7BC                        ;  ecx=ecx*7bc
 004599C9  |.  03D9          |ADD EBX,ECX                             ;  ebx=ebx+ecx
 004599CB  |.  2BDE          |SUB EBX,ESI                             ;  ebx=ebx-esi(esi为用户名位数)
 004599CD  |.  42            |INC EDX                                 ;  循环次数
 004599CE  |.  48            |DEC EAX
 004599CF  |.^ 75 E4         \JNZ SHORT CrackMeN.004599B5             ;  为0跳
 004599D1  |>  8BC3          MOV EAX,EBX
 004599D3  |.  99            CDQ                                        先扩展判断eax符号位为0,edx=00000000,否则edx =ffffffff
 004599D4  |.  33C2          XOR EAX,EDX                              ;  eax=eax^edx
 004599D6  |.  2BC2          SUB EAX,EDX                              ;  eax=eax-edx
 004599D8  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
 004599DB  |.  E8 64EBFAFF   CALL CrackMeN.00408544                      计算第二串
 004599E0  |.  8BC6          MOV EAX,ESI
 004599E2  |.  85C0          TEST EAX,EAX
 004599E4  |.  7E 1E         JLE SHORT CrackMeN.00459A04
 004599E6  |.  BA 01000000   MOV EDX,1                                ;  第三次进行运算
 004599EB  |>  8B4D EC       /MOV ECX,DWORD PTR SS:[EBP-14]
 004599EE  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]
 004599F3  |.  0FAFCE        |IMUL ECX,ESI                            ;  ecx=ecx*esi
 004599F6  |.  69C9 C6040000 |IMUL ECX,ECX,4C6                        ;  ecx=ecx*4c6
 004599FC  |.  03D9          |ADD EBX,ECX                             ;  ebx=ebx+ecx
 004599FE  |.  03DE          |ADD EBX,ESI                             ;  ebx=ebx+esi
 00459A00  |.  42            |INC EDX                                 ;  循环次数
 00459A01  |.  48            |DEC EAX
 00459A02  |.^ 75 E7         \JNZ SHORT CrackMeN.004599EB             ;  为0跳
 00459A04  |>  81C3 8E91C621 ADD EBX,21C6918E                         ;  ebx=ebx+21c6918e
 00459A0A  |.  8BC3          MOV EAX,EBX                              ;  eax=ebx
 00459A0C  |.  99            CDQ                                           先扩展判断eax符号位为0,edx=00000000,否则edx =ffffffff
 00459A0D  |.  33C2          XOR EAX,EDX                              ;  eax=eax^edx
 00459A0F  |.  2BC2          SUB EAX,EDX                                  eax=eax-edx
 00459A11  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
 00459A14  |.  E8 2BEBFAFF   CALL CrackMeN.00408544                      计算第三串
 00459A19  |.  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]
 00459A1C  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
 
 (公用部分)
 00408E92  |$  B9 0A000000   MOV ECX,0A                               ;  ecx=0a
 00408E97  |>  8D75 9F       LEA ESI,DWORD PTR SS:[EBP-61]
 00408E9A  |>  31D2          /XOR EDX,EDX                             ;  以下计算第一字串
 00408E9C  |.  F7F1          |DIV ECX                                 ;  eax=eax/ecx 余数在 edx中
 00408E9E  |.  80C2 30       |ADD DL,30
 00408EA1  |.  80FA 3A       |CMP DL,3A
 00408EA4  |.  72 03         |JB SHORT CrackMeN.00408EA9
 00408EA6  |.  80C2 07       |ADD DL,7
 00408EA9  |>  4E            |DEC ESI
 00408EAA  |.  8816          |MOV BYTE PTR DS:[ESI],DL
 00408EAC  |.  09C0          |OR EAX,EAX
 00408EAE  |.^ 75 EA         \JNZ SHORT CrackMeN.00408E9A             eax为0则结束
 00408EB0  |.  8D4D 9F       LEA ECX,DWORD PTR SS:[EBP-61]
 00408EB3  |.  29F1          SUB ECX,ESI
 00408EB5  |.  8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]
 00408EB8  |.  83FA 10       CMP EDX,10
 00408EBB  |.  76 01         JBE SHORT CrackMeN.00408EBE
 00408EBD  |.  C3            RETN
 
 算法:1、用注册名计算出三个串,(注意:每一串的计算都是以前一串和用户名为基础计算出的)
 
 2、以前三个串为基础,调用(公用部分)计算。所得到的三串数字(每串9位)用“-”连接起来即为注册码。
 
 如:注册名:tong
 注册码:476965616-434456928-134355326
 
 由于有是登录网站特别慢,附件还有大小限制,所以没传上来,这是今天起早传的。
 
 [ 本帖最后由 hongxin2005 于 2006-3-13 21:29 编辑 ]
 | 
 
x本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?加入我们 
  |