哥们 按照你的代码我做了个KEYGEN 不过 如果用户名大于2位时候 注册码就有错误这是怎么搞的?
作者的破文中这样写着你看看哪里有错误?
4)OD重新载入程序,输入注册信息确定后程序中断。
004417C6 |. 55 PUSH EBP 在这里下断
004417C7 |. 68 60184400 PUSH CrackMe0.00441860
004417CC |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004417CF |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004417D2 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
004417D5 |. 8B83 C8020000 MOV EAX,DWORD PTR DS:[EBX+2C8]
004417DB |. E8 C419FEFF CALL CrackMe0.004231A4 ; 取假码位数
004417E0 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004417E3 |. 50 PUSH EAX ; EAX=假码
004417E4 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
004417E7 |. 8B83 C4020000 MOV EAX,DWORD PTR DS:[EBX+2C4]
004417ED |. E8 B219FEFF CALL CrackMe0.004231A4 ; 取注册名位数
004417F2 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; EBP-C=注册名
004417F5 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
004417F8 |. E8 FBFEFFFF CALL CrackMe0.004416F8 ; 算法CALL,跟进
004417FD |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
00441800 |. 58 POP EAX
00441801 |. E8 3E23FCFF CALL CrackMe0.00403B44 真假注册码比较
00441806 |. 75 1A JNZ SHORT CrackMe0.00441822 不相等则跳向失败。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
进入算法CALL
来到这里。。。。。。
004416F8 /$ 53 PUSH EBX
004416F9 |. 56 PUSH ESI
004416FA |. 57 PUSH EDI
004416FB |. 83C4 DC ADD ESP,-24
004416FE |. 891424 MOV DWORD PTR SS:[ESP],EDX
00441701 |. 8BF8 MOV EDI,EAX
00441703 |. BB 05033949 MOV EBX,49390305
00441708 |. BE 20126348 MOV ESI,48631220
0044170D |. 8BC7 MOV EAX,EDI
0044170F |. E8 2023FCFF CALL CrackMe0.00403A34 ; 取注册名位数
00441714 |. 85C0 TEST EAX,EAX ; 有注册名吗?没有则跳向OVER
00441716 |. 7E 2E JLE SHORT CrackMe0.00441746
00441718 |. BA 01000000 MOV EDX,1 ; 令EDX=1
0044171D |> 33C9 /XOR ECX,ECX ; ECX清零
0044171F |. 8A4C17 FF |MOV CL,BYTE PTR DS:[EDI+EDX-1] ; 取注册名的ASCII值
00441723 |. 33D9 |XOR EBX,ECX
00441725 |. 33F3 |XOR ESI,EBX
00441727 |. F6C3 01 |TEST BL,1 判断EBX的后两位转换成十进制数后的奇偶性
0044172A |. 74 0F |JE SHORT CrackMe0.0044173B 偶数就跳,奇数就不跳
0044172C |. D1FB |SAR EBX,1
0044172E |. 79 03 |JNS SHORT CrackMe0.00441733
00441730 |. 83D3 00 |ADC EBX,0
00441733 |> 81F3 11032001 |XOR EBX,1200311
00441739 |. EB 07 |JMP SHORT CrackMe0.00441742
0044173B |> D1FB |SAR EBX,1 ; EBX/2 即EBX除以2的一次方
0044173D |. 79 03 |JNS SHORT CrackMe0.00441742
0044173F |. 83D3 00 |ADC EBX,0
00441742 |> 42 |INC EDX ; EDX+1
00441743 |. 48 |DEC EAX ; EAX-1
00441744 |.^ 75 D7 \JNZ SHORT CrackMe0.0044171D
00441746 |> 8B0424 MOV EAX,DWORD PTR SS:[ESP]
00441749 |. 50 PUSH EAX ;
0044174A |. 8BC3 MOV EAX,EBX ; 将EBX的值赋给EAX
0044174C |. 25 FFFF0000 AND EAX,0FFFF ; 取EAX的后四位
00441751 |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX ; ESP+8=EAX的后四位
00441755 |. C64424 0C 00 MOV BYTE PTR SS:[ESP+C],0 ;
0044175A |. C1EB 10 SHR EBX,10 ; 取EBX的前四位
0044175D |. 895C24 10 MOV DWORD PTR SS:[ESP+10],EBX ; ESP+10=EBX的前四位
00441761 |. C64424 14 00 MOV BYTE PTR SS:[ESP+14],0 ;
00441766 |. 8BC6 MOV EAX,ESI ; 将ESI的值赋给EAX
00441768 |. 25 FFFF0000 AND EAX,0FFFF ; 取ESI的后四位
0044176D |. 894424 18 MOV DWORD PTR SS:[ESP+18],EAX ; ESP+18=ESI的后四位
00441771 |. C64424 1C 00 MOV BYTE PTR SS:[ESP+1C],0 ;
00441776 |. C1EE 10 SHR ESI,10 ; 取ESI的前四位
00441779 |. 897424 20 MOV DWORD PTR SS:[ESP+20],ESI ; ESP+20=ESI的前四位
0044177D |. C64424 24 00 MOV BYTE PTR SS:[ESP+24],0 ;
00441782 |. 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8] ;
00441786 |. B9 03000000 MOV ECX,3 ;
0044178B |. B8 A4174400 MOV EAX,CrackMe0.004417A4 ; |%.4x-%.4x-%.4x-%.4x
00441790 |. E8 6F68FCFF CALL CrackMe0.00408004 ; 合并成注册码。
00441795 |. 83C4 24 ADD ESP,24
00441798 |. 5F POP EDI
00441799 |. 5E POP ESI
0044179A |. 5B POP EBX
0044179B \. C3 RETN
------------------------------------------------------------------------
我感觉没有错误 KEYGEN也对啊
不过就是不知道 哪里 有问题了....郁闷了好久 哥们你 能帮 看看不
还有 能把 QQ留下不?