- UID
- 7440
注册时间2006-1-25
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
目标软件: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
|