【破解作者】 zmw1224[CZG]
【作者邮箱】 zmw1224@yahoo.com.cn
【使用工具】 OD,PEiD,AspackDie
【破解平台】 XP
【软件名称】 客户王 V5.5
【下载地址】 http://www2.skycn.com/soft/10294.html
【软件大小】 4967 KB
【加壳方式】 ASPack 2.12 -> Alexey Solodovnikov
【破解声明】 本笔记只用于学习交流, 初学Crack,只是感兴趣技术,没有其他目的, 如有不妥之处, 希望作者谅解.
--------------------------------------------------------------------------------
【破解内容】
先用PEiD查壳ASPack 2.12 -> Alexey Solodovnikov,用手脱或自动都可解决,我是懒人,所以用AspackDie脱了它
^_^,原来是Borland Delphi 6.0 - 7.0,运行脱壳程序,出现软件启动画面一闪而过,刚还暗自高兴,没想到一下
掉入万丈深渊!即然能运行就说明不是壳的问题,而是有校验!!没办法,软件作者有意不让我们好过,我们只好用OD伺候。
OD载入停在这:
00708020 > $ 55 PUSH EBP
00708021 . 8BEC MOV EBP,ESP
00708023 . 83C4 F0 ADD ESP,-10
00708026 . 53 PUSH EBX
00708027 . 56 PUSH ESI
00708028 . 57 PUSH EDI
00708029 . B8 08727000 MOV EAX,00707208
0070802E . E8 81F7CFFF CALL 004077B4
00708033 . 33D2 XOR EDX,EDX
00708035 . 55 PUSH EBP
00708036 . 68 3B847000 PUSH 0070843B
0070803B . 64:FF32 PUSH DWORD PTR FS:[EDX]
0070803E . 64:8922 MOV DWORD PTR FS:[EDX],ESP
00708041 . A1 ACBF7100 MOV EAX,DWORD PTR DS:[71BFAC]
00708046 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
00708048 . E8 17C9DAFF CALL 004B4964
下断 bp CreateFileA ,10多次F9后,Alt+F9返回领空停在下面:
00423785 |. 8BC8 MOV ECX,EAX
00423787 |. 33D2 XOR EDX,EDX
00423789 |. 8BC3 MOV EAX,EBX
0042378B |. E8 38FEFFFF CALL 004235C8
00423790 837B 04 00 CMP DWORD PTR DS:[EBX+4],0
00423794 7D 48 JGE SHORT 004237DE 就是它搞的鬼了,nop后,保存成新文件Unpacked1
00423796 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
00423799 |. 8BC6 MOV EAX,ESI
0042379B |. E8 DC76FEFF CALL 0040AE7C
运行Unpacked1一切正常,ok!,校验搞定。^_^
OD载入Unpacked1,查找中文字符串,找到“恭喜你,注册成功,谢谢您的支持,请重新打开本系统!”双击停在下面:
00676C06 . B8 7C6D6700 MOV EAX,00676D7C “恭喜你,……………………”
00676C0B . E8 90C30700 CALL 006F2FA0
00676C10 . 8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]
00676C13 . A1 ACBF7100 MOV EAX,DWORD PTR DS:[71BFAC]
00676C18 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
即然要研究算法就要从入口开始,向上看找到入口00676AA8:
00676AA8 . 55 PUSH EBP 在这下断。
00676AA9 . 8BEC MOV EBP,ESP
00676AAB . B9 05000000 MOV ECX,5
00676AB0 > 6A 00 PUSH 0
00676AB2 . 6A 00 PUSH 0
00676AB4 . 49 DEC ECX
00676AB5 .^ 75 F9 JNZ SHORT 00676AB0
00676AB7 . 53 PUSH EBX
00676AB8 . 56 PUSH ESI
00676AB9 . 57 PUSH EDI
运行程序,输入相应数据:
单位名称:CZG ;
用户代码:21938258(根据硬盘序列号算出来的) ;
软件序列号:19821224(随意输入最好和用户代码位数一样8位数,最好不要用12345,abcde,11111,等);
软件注册码:11111-22222-33333(这可任意输入)
好,点"立即注册"后,马上被OD中断,停在入口处:
00676AA8 . 55 PUSH EBP
00676AA9 . 8BEC MOV EBP,ESP
00676AAB . B9 05000000 MOV ECX,5
00676AB0 > 6A 00 PUSH 0
00676AB2 . 6A 00 PUSH 0
00676AB4 . 49 DEC ECX
00676AB5 .^ 75 F9 JNZ SHORT 00676AB0
00676AB7 . 53 PUSH EBX
00676AB8 . 56 PUSH ESI
00676AB9 . 57 PUSH EDI
00676ABA . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00676ABD . 33C0 XOR EAX,EAX
00676ABF . 55 PUSH EBP
00676AC0 . 68 A76C6700 PUSH 00676CA7
00676AC5 . 64:FF30 PUSH DWORD PTR FS:[EAX]
00676AC8 . 64:8920 MOV DWORD PTR FS:[EAX],ESP
00676ACB . 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
00676ACE . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00676AD1 . 8B80 20030000 MOV EAX,DWORD PTR DS:[EAX+320]
00676AD7 . E8 30BAE1FF CALL 0049250C 这个call获取我输入的数"19821224"
00676ADC . 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] 把19821224送到EDX里
00676ADF . B8 C06C6700 MOV EAX,00676CC0 ; ASCII "Softkey"
00676AE4 . E8 D7F30700 CALL 006F5EC0
00676AE9 . 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
00676AEC . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00676AEF . 8B80 18030000 MOV EAX,DWORD PTR DS:[EAX+318]
00676AF5 . E8 12BAE1FF CALL 0049250C 获取用户代码“21938258”
00676AFA . 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] 送到EDX里
00676AFD . B8 D06C6700 MOV EAX,00676CD0 ; ASCII "request"
00676B02 . E8 B9F30700 CALL 006F5EC0
00676B07 . 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
00676B0A . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00676B0D . 8B80 28030000 MOV EAX,DWORD PTR DS:[EAX+328]
00676B13 . E8 F4B9E1FF CALL 0049250C 获取注册码第一部分"11111"
00676B18 . 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
00676B1B . B8 E06C6700 MOV EAX,00676CE0 ; ASCII "Regkey1"
00676B20 . E8 9BF30700 CALL 006F5EC0
00676B25 . 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
00676B28 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00676B2B . 8B80 2C030000 MOV EAX,DWORD PTR DS:[EAX+32C]
00676B31 . E8 D6B9E1FF CALL 0049250C 获取注册码第二部分"22222"
00676B36 . 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14]
00676B39 . B8 F06C6700 MOV EAX,00676CF0 ; ASCII "Regkey2"
00676B3E . E8 7DF30700 CALL 006F5EC0
00676B43 . 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
00676B46 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00676B49 . 8B80 30030000 MOV EAX,DWORD PTR DS:[EAX+330]
00676B4F . E8 B8B9E1FF CALL 0049250C 获取注册码第三部分"33333"
00676B54 . 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
00676B57 . B8 006D6700 MOV EAX,00676D00 ; ASCII "Regkey3"
00676B5C . E8 5FF30700 CALL 006F5EC0
F8走:
00676BCB . /EB 14 JMP SHORT 00676BE1
00676BCD .^|E9 E2D8D8FF JMP 004044B4
00676BD2 . |B8 546D6700 MOV EAX,00676D54
00676BD7 . |E8 C4C30700 CALL 006F2FA0
00676BDC . |E8 FFDCD8FF CALL 004048E0 算法call
00676BE1 > \E8 DE020800 CALL 006F6EC4
00676BE6 . 8BD0 MOV EDX,EAX
00676BE8 . 80F2 01 XOR DL,1
00676BEB . A1 C0BA7100 MOV EAX,DWORD PTR DS:[71BAC0]
00676BF0 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
00676BF2 . 8B80 D0030000 MOV EAX,DWORD PTR DS:[EAX+3D0]
00676BF8 . E8 DFE4E2FF CALL 004A50DC
00676BFD . E8 C2020800 CALL 006F6EC4
00676C02 . 84C0 TEST AL,AL
00676C04 . 74 36 JE SHORT 00676C3C 这是关键跳转,所以算法就在上面call里。
00676C06 . B8 7C6D6700 MOV EAX,00676D7C
00676C0B . E8 90C30700 CALL 006F2FA0
算法call:
006F6EC4 /$ 55 PUSH EBP
006F6EC5 |. 8BEC MOV EBP,ESP
006F6EC7 |. B9 05000000 MOV ECX,5
006F6ECC |> 6A 00 /PUSH 0
006F6ECE |. 6A 00 |PUSH 0
006F6ED0 |. 49 |DEC ECX
006F6ED1 |.^ 75 F9 \JNZ SHORT 006F6ECC
006F6ED3 |. 51 PUSH ECX
006F6ED4 |. 53 PUSH EBX
006F6ED5 |. 33C0 XOR EAX,EAX
006F6ED7 |. 55 PUSH EBP
006F6ED8 |. 68 C66F6F00 PUSH 006F6FC6
006F6EDD |. 64:FF30 PUSH DWORD PTR FS:[EAX]
006F6EE0 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
006F6EE3 |. 8D4D FC LEA ECX,DWORD PTR SS:[EBP-4]
006F6EE6 |. 33D2 XOR EDX,EDX
006F6EE8 |. B8 DC6F6F00 MOV EAX,006F6FDC ; ASCII "Coname"
006F6EED |. E8 02EFFFFF CALL 006F5DF4
006F6EF2 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 单位名称即CZG是否为空?
006F6EF6 |. 75 07 JNZ SHORT 006F6EFF 不是空就跳
006F6EF8 |. 33DB XOR EBX,EBX
006F6EFA |. E9 9F000000 JMP 006F6F9E
006F6EFF |> 8D4D F4 LEA ECX,DWORD PTR SS:[EBP-C]
006F6F02 |. 33D2 XOR EDX,EDX
006F6F04 |. B8 EC6F6F00 MOV EAX,006F6FEC ; ASCII "request"
006F6F09 |. E8 E6EEFFFF CALL 006F5DF4
006F6F0E |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] 把21938258送到EAX
006F6F11 |. E8 16FFFFFF CALL 006F6E2C 这也是个重要算法call
006F6F16 |. D80D F46F6F00 FMUL DWORD PTR DS:[6F6FF4]
006F6F1C |. DB7D E8 FSTP TBYTE PTR SS:[EBP-18]
006F6F1F |. 9B WAIT
006F6F20 |. 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
006F6F23 |. 33D2 XOR EDX,EDX
再跟进重要算法call:
006F6E2C /$ 55 PUSH EBP
006F6E2D |. 8BEC MOV EBP,ESP
006F6E2F |. 83C4 EC ADD ESP,-14
006F6E32 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 把EAX=21938258存入[EBP-4]
006F6E35 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
006F6E38 |. E8 6BE5D0FF CALL 004053A8
006F6E3D |. 33C0 XOR EAX,EAX EAX=0
006F6E3F |. 55 PUSH EBP
006F6E40 |. 68 B26E6F00 PUSH 006F6EB2
006F6E45 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
006F6E48 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
006F6E4B |. C745 F0 00000>MOV DWORD PTR SS:[EBP-10],80000000 赋初值,[EBP-10]=80000000
006F6E52 |. C745 F4 DCDA7>MOV DWORD PTR SS:[EBP-C],4172DADC 赋初值 [EBP-C]=4172DADC
006F6E59 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 这是判断用户代码(21938258)是否为空,是就跳,不是就往下进行循环运算。
006F6E5D |. 74 35 JE SHORT 006F6E94
006F6E5F |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
006F6E62 |. E8 51E3D0FF CALL 004051B8 这个call获取21938258的长度EAX=8
006F6E67 |. 85C0 TEST EAX,EAX
006F6E69 |. 7E 31 JLE SHORT 006F6E9C 好, 下面开始浮点的循环运算了。
006F6E6B |. BA 01000000 MOV EDX,1
006F6E70 |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4] 这里ECX=21938258
006F6E73 |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1] 取21938258的第一个的2(32)的ASCii到ECX里,即ECX=32
006F6E78 |. 0FB7C9 |MOVZX ECX,CX 这里把ECX低位移到ECX,意思不大,值没变。
006F6E7B |. 894D EC |MOV DWORD PTR SS:[EBP-14],ECX 把32存入[EBP-14]里
006F6E7E |. DB45 EC |FILD DWORD PTR SS:[EBP-14] 这是32转成十进制数50放到st0
006F6E81 |. DC45 F0 |FADD QWORD PTR SS:[EBP-10] st0=19770874=50+19770824(这个19770824是由上面两个初值所形成的常数,可能是作者的生日1977-08-24,大约27-28岁^_^)
006F6E84 |. D805 C06E6F00 |FADD DWORD PTR DS:[6F6EC0] st0=20493276=19770874+722402(722402是常数,估计又是某个有意义数字。)
006F6E8A |. DD5D F0 |FSTP QWORD PTR SS:[EBP-10] 把20493276存到[EBP-10]里(注: 下次[EBP-10]的值就是累加值)
006F6E8D |. 9B |WAIT
006F6E8E |. 42 |INC EDX EDX=EDX+1
006F6E8F |. 48 |DEC EAX 后面的循环就不加了,8个数的SUM=25550462
006F6E90 |.^ 75 DE \JNZ SHORT 006F6E70
006F6E92 |. EB 08 JMP SHORT 006F6E9C
006F6E94 |> 33C0 XOR EAX,EAX
006F6E96 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
006F6E99 |. 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
006F6E9C |> 33C0 XOR EAX,EAX
006F6E9E |. 5A POP EDX
006F6E9F |. 59 POP ECX
006F6EA0 |. 59 POP ECX
006F6EA1 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
006F6EA4 |. 68 B96E6F00 PUSH 006F6EB9
006F6EA9 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
006F6EAC |. E8 37E0D0FF CALL 00404EE8
006F6EB1 \. C3 RETN
006F6EB2 .^ E9 B1D8D0FF JMP 00404768
006F6EB7 .^ EB F0 JMP SHORT 006F6EA9
006F6EB9 . DD45 F0 FLD QWORD PTR SS:[EBP-10] 眼睛睁大了,不要把SUM跟丢了,st0=SUM=25550462
006F6EBC . 8BE5 MOV ESP,EBP
006F6EBE . 5D POP EBP
006F6EBF . C3 RETN
返回后停在这里:
006F6F11 |. E8 16FFFFFF CALL 006F6E2C
006F6F16 |. D80D F46F6F00 FMUL DWORD PTR DS:[6F6FF4] 一出来就是个浮点乘法运算st0=184576537488=SUM*7224(又一个常数,不要看错了。)
006F6F1C |. DB7D E8 FSTP TBYTE PTR SS:[EBP-18] 又把SUM存起来,以便后面第二组注册码的运算。
006F6F1F |. 9B WAIT
006F6F20 |. 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
006F6F23 |. 33D2 XOR EDX,EDX
006F6F25 |. B8 00706F00 MOV EAX,006F7000 ; ASCII "Softkey"
006F6F2A |. E8 C5EEFFFF CALL 006F5DF4
006F6F2F |. 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C] 把我输入软件序列号:19821224,放到EAX=19821224
006F6F32 |. E8 F5FEFFFF CALL 006F6E2C 算法CALL跟进
算法CALL:
006F6E2C /$ 55 PUSH EBP 第二组算法和第一组的一模一样。可以偷懒了^_^
006F6E2D |. 8BEC MOV EBP,ESP
006F6E2F |. 83C4 EC ADD ESP,-14
006F6E32 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
006F6E35 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
006F6E38 |. E8 6BE5D0FF CALL 004053A8
006F6E3D |. 33C0 XOR EAX,EAX
006F6E3F |. 55 PUSH EBP
006F6E40 |. 68 B26E6F00 PUSH 006F6EB2
006F6E45 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
006F6E48 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
006F6E4B |. C745 F0 00000>MOV DWORD PTR SS:[EBP-10],80000000
006F6E52 |. C745 F4 DCDA7>MOV DWORD PTR SS:[EBP-C],4172DADC
006F6E59 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0
006F6E5D |. 74 35 JE SHORT 006F6E94
006F6E5F |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
006F6E62 |. E8 51E3D0FF CALL 004051B8
006F6E67 |. 85C0 TEST EAX,EAX
006F6E69 |. 7E 31 JLE SHORT 006F6E9C
006F6E6B |. BA 01000000 MOV EDX,1
006F6E70 |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4]
006F6E73 |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]
006F6E78 |. 0FB7C9 |MOVZX ECX,CX
006F6E7B |. 894D EC |MOV DWORD PTR SS:[EBP-14],ECX
006F6E7E |. DB45 EC |FILD DWORD PTR SS:[EBP-14]
006F6E81 |. DC45 F0 |FADD QWORD PTR SS:[EBP-10]
006F6E84 |. D805 C06E6F00 |FADD DWORD PTR DS:[6F6EC0]
006F6E8A |. DD5D F0 |FSTP QWORD PTR SS:[EBP-10]
006F6E8D |. 9B |WAIT
006F6E8E |. 42 |INC EDX
006F6E8F |. 48 |DEC EAX
006F6E90 |.^ 75 DE \JNZ SHORT 006F6E70
006F6E92 |. EB 08 JMP SHORT 006F6E9C
006F6E94 |> 33C0 XOR EAX,EAX
006F6E96 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
006F6E99 |. 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
006F6E9C |> 33C0 XOR EAX,EAX
006F6E9E |. 5A POP EDX
006F6E9F |. 59 POP ECX
006F6EA0 |. 59 POP ECX
006F6EA1 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
006F6EA4 |. 68 B96E6F00 PUSH 006F6EB9
006F6EA9 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
006F6EAC |. E8 37E0D0FF CALL 00404EE8
006F6EB1 \. C3 RETN
006F6EB2 .^ E9 B1D8D0FF JMP 00404768
006F6EB7 .^ EB F0 JMP SHORT 006F6EA9
006F6EB9 . DD45 F0 FLD QWORD PTR SS:[EBP-10]
006F6EBC . 8BE5 MOV ESP,EBP
006F6EBE . 5D POP EBP
006F6EBF . C3 RETN 第二组运算:SUM1=25550453
返回后停在这里:
006F6F37 |. DB6D E8 FLD TBYTE PTR SS:[EBP-18]
006F6F3A |. DEC1 FADDP ST(1),ST st0=SUM+SUM1=184576537488+25550453=18460208794099998720(出来一大串)
006F6F3C |. 83C4 F4 ADD ESP,-0C
006F6F3F |. DB3C24 FSTP TBYTE PTR SS:[ESP]
006F6F42 |. 9B WAIT
006F6F43 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
006F6F46 |. E8 D551D1FF CALL 0040C120 这个CALL比较复杂,先过,然后看各寄存器的值变化情况来推测,它的作用。
006F6F4B |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 果然,呵呵EAX=184602087941,不知你有没有看出些什么门道来?
呵呵,对了,就是取SUM+SUM1的和,即18460208794099998720的前12位,并四舍五入。
006F6F4E |. 50 PUSH EAX
006F6F4F |. 8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]
006F6F52 |. 33D2 XOR EDX,EDX
006F6F54 |. B8 10706F00 MOV EAX,006F7010 ; ASCII "Regkey1"
006F6F59 |. E8 96EEFFFF CALL 006F5DF4
006F6F5E |. FF75 DC PUSH DWORD PTR SS:[EBP-24]
006F6F61 |. 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
006F6F64 |. 33D2 XOR EDX,EDX
006F6F66 |. B8 20706F00 MOV EAX,006F7020 ; ASCII "Regkey2"
006F6F6B |. E8 84EEFFFF CALL 006F5DF4
006F6F70 |. FF75 D8 PUSH DWORD PTR SS:[EBP-28]
006F6F73 |. 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
006F6F76 |. 33D2 XOR EDX,EDX
006F6F78 |. B8 30706F00 MOV EAX,006F7030 ; ASCII "Regkey3"
006F6F7D |. E8 72EEFFFF CALL 006F5DF4
006F6F82 |. FF75 D4 PUSH DWORD PTR SS:[EBP-2C]
006F6F85 |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
006F6F88 |. BA 03000000 MOV EDX,3
006F6F8D |. E8 E6E2D0FF CALL 00405278
006F6F92 |. 8B55 E0 MOV EDX,DWORD PTR SS:[EBP-20] 上面的一堆是,分别取我输入的假注册码,并把它们连起来,即“111112222233333”
后面是比对的过程了,注册码就是1846-0208-7941,你可能会说,明码么,我只要追到后面就成功了,的确,但是如果
有一天你碰到的软件都不是明码怎么办?所以要培养自己的分析能力,最主要的就是,成功=耐心+练习,你会成功的^_^
--------------------------------------------------------------------------------
【破解总结】
总的说这个软件算法简单,适合像我一样的新手,上手,最主要的是搞定他的验检,再慢慢的分析就出来了,不要闲麻烦!!
后话:此软件会定时检测“软件序列号”的合法性,如果不合法,那就会提示过期!
--------------------------------------------------------------------------------
【算法注册机】
#include <stdlib.h>
#include <stdio.h>
main()
{
char CODE[255],s[255];
int i,n;
double sum=19770824,sum1=19770824;
printf("Crack by zmw1224[CZG][DFCG]\n");
printf("___________________________\n");
printf("请输入你的用户代码:");
scanf("%s",CODE);
n=strlen(CODE);
for(i=0;i<n;i++)
{sum+=CODE[i];
sum+=722402;
}
sum*=7224;
printf("请输入你的软件序列号:");
scanf("%s",CODE);
n=strlen(CODE);
for(i=0;i<n;i++)
{sum1+=CODE[i];
sum1+=722402;
}
sum+=sum1;
gcvt(sum, 12, s);
printf("你的注册码是:%s",s);
}
--------------------------------------------------------------------------------
【内存注册机】
在006F6F4B这可做内存注册机了。
--------------------------------------------------------------------------------
【用户名、密码】
单位名称:CZG
用户代码:21938258
软件序列号:19821224
软件注册码:1846-0208-7941
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!