0040B771 |. 75 04 JNZ SHORT WINZIP32.0040B777 0040B773 |. C645 FF 01 MOV BYTE PTR SS:[EBP-1],1 0040B777 |> 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 0040B77A |. 50 PUSH EAX
0040B77B |. 68 D0E84B00 PUSH WINZIP32.004BE8D0 0040B780 |. E8 5B61FFFF CALL WINZIP32.004018E0 0040B785 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 0040B788 |. 50 PUSH EAX
0040B789 |. E8 727C0800 CALL WINZIP32.00493400 0040B78E |. 83C4 0C ADD ESP,0C 0040B791 |. 83F8 14 CMP EAX,14
0040B794 |. 72 0A JB SHORT WINZIP32.0040B7A0 0040B796 |. 6A 27 PUSH 27 0040B798 |. 57 PUSH EDI
0040B799 |. E8 08F60000 CALL WINZIP32.0041ADA6 0040B79E |. 59 POP ECX 0040B79F |. 59 POP ECX
0040B7A0 |> 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 0040B7A3 |. 50 PUSH EAX 0040B7A4 |. 53 PUSH EBX
0040B7A5 |. E8 C62F0900 CALL WINZIP32.0049E770 0040B7AA |. 59 POP ECX 0040B7AB |. 85C0 TEST EAX,EAX 0040B7AD |. 59 POP ECX
0040B7AE |. 75 0E JNZ SHORT WINZIP32.0040B7BE
0040B7B0 |. FF15 F0C14A00 CALL DWORD PTR DS:[<&KERNEL32.GetTickCou>; [GetTickCount 0040B7B6 |. A8 01 TEST AL,1
0040B7B8 |. 74 04 JE SHORT WINZIP32.0040B7BE 0040B7BA |. C645 FF 01 MOV BYTE PTR SS:[EBP-1],1 0040B7BE |> 6A 14 PUSH 14
0040B7C0 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 0040B7C3 |. 6A 00 PUSH 0
0040B7C5 |. 50 PUSH EAX
0040B7C6 |. E8 75820800 CALL WINZIP32.00493A40 0040B7CB |. 56 PUSH ESI
0040B7CC |. 8D85 F4FDFFFF LEA EAX,DWORD PTR SS:[EBP-20C] 0040B7D2 |. 6A 00 PUSH 0 0040B7D4 |. 50 PUSH EAX
0040B7D5 |. E8 66820800 CALL WINZIP32.00493A40 0040B7DA |. 83C4 18 ADD ESP,18
0040B7DD |. 807D FF 00 CMP BYTE PTR SS:[EBP-1],0 0040B7E1 |. 74 13 JE SHORT WINZIP32.0040B7F6 0040B7E3 |. E8 D7080000 CALL WINZIP32.0040C0BF 0040B7E8 |. 8025 EDBF4C00 >AND BYTE PTR DS:[4CBFED],0 0040B7EF |> 32C0 XOR AL,AL
0040B7F1 |. E9 F5000000 JMP WINZIP32.0040B8EB
0040B7F6 |> 8D85 BCFEFFFF LEA EAX,DWORD PTR SS:[EBP-144] 0040B7FC |. 50 PUSH EAX 0040B7FD |. 53 PUSH EBX
0040B7FE |. E8 ED000000 CALL WINZIP32.0040B8F0 <--参与计算软正确的注册码 0040B803 |. 8D85 BCFEFFFF LEA EAX,DWORD PTR SS:[EBP-144] <--在这里第一次发现软件正确的注册码
0040B809 |. 50 PUSH EAX 0040B80A |. E8 F17B0800 CALL WINZIP32.00493400 0040B80F |. BE 2C010000 MOV ESI,12C 0040B814 |. 83C4 0C ADD ESP,0C 0040B817 |. 3BC6 CMP EAX,ESI
0040B819 |. 72 0A JB SHORT WINZIP32.0040B825 0040B81B |. 6A 39 PUSH 39 0040B81D |. 57 PUSH EDI
0040B81E |. E8 83F50000 CALL WINZIP32.0041ADA6 0040B823 |. 59 POP ECX 0040B824 |. 59 POP ECX
0040B825 |> BF 1CCA4C00 MOV EDI,WINZIP32.004CCA1C ; ASCII
\<--将刚才输入的错误的注册码放入EDI
0040B82A |. 8D85 BCFEFFFF LEA EAX,DWORD PTR SS:[EBP-144] <--EAX中装入正确的注册码所在的地址
0040B830 |. 57 PUSH EDI <--用户输入的注册码入栈
0040B831 |. 50 PUSH EAX <--软件计算出的正确的注册码入栈
0040B832 |. E8 392F0900 CALL WINZIP32.0049E770 <--关键CALL,用于比较用户输入的注册码
0040B837 |. F7D8 NEG EAX 0040B839 |. 1AC0 SBB AL,AL 0040B83B |. 59 POP ECX 0040B83C |. FEC0 INC AL 0040B83E |. 59 POP ECX
0040B83F |. A2 EDBF4C00 MOV BYTE PTR DS:[4CBFED],AL 0040B844 |. 0F85 8A000000 JNZ WINZIP32.0040B8D4
0040B84A |. 8D85 BCFEFFFF LEA EAX,DWORD PTR SS:[EBP-144] 0040B850 |. 50 PUSH EAX 0040B851 |. 53 PUSH EBX
0040B852 |. E8 33010000 CALL WINZIP32.0040B98A <--参与计算软件的第二个注册码 0040B857 |. 8D85 BCFEFFFF LEA EAX,DWORD PTR SS:[EBP-144] <--此时软件会再算出另外一个注册码
0040B85D |. 50 PUSH EAX 0040B85E |. E8 9D7B0800 CALL WINZIP32.00493400 0040B863 |. 83C4 0C ADD ESP,0C 0040B866 |. 3BC6 CMP EAX,ESI
0040B868 |. 72 0E JB SHORT WINZIP32.0040B878 0040B86A |. 6A 3E PUSH 3E
0040B86C |. 68 20C74A00 PUSH WINZIP32.004AC720 ; ASCII \0040B871 |. E8 30F50000 CALL WINZIP32.0041ADA6 0040B876 |. 59 POP ECX 0040B877 |. 59 POP ECX
0040B878 |> 8D85 BCFEFFFF LEA EAX,DWORD PTR SS:[EBP-144] <--软件计算出的第二个注册码装入EAX中
0040B87E |. 57 PUSH EDI <--用户输入的注册码入栈
0040B87F |. 50 PUSH EAX <--软件计算出的第二个注册码入栈
0040B880 |. E8 EB2E0900 CALL WINZIP32.0049E770 <--另一个关键CALL,用于比较第二次生成的注册码
0040B885 |. F7D8 NEG EAX 0040B887 |. 1AC0 SBB AL,AL 0040B889 |. 59 POP ECX 0040B88A |. FEC0 INC AL 0040B88C |. 59 POP ECX
0040B88D |. A2 EDBF4C00 MOV BYTE PTR DS:[4CBFED],AL 0040B892 |. 75 40 JNZ SHORT WINZIP32.0040B8D4
0040B894 |. 8D85 C0FEFFFF LEA EAX,DWORD PTR SS:[EBP-140] 0040B89A |. 6A 04 PUSH 4 0040B89C |. 50 PUSH EAX 0040B89D |. 57 PUSH EDI
0040B89E |. E8 DD690900 CALL WINZIP32.004A2280 0040B8A3 |. 83C4 0C ADD ESP,0C 0040B8A6 |. 85C0 TEST EAX,EAX
0040B8A8 |. 75 23 JNZ SHORT WINZIP32.0040B8CD
0040B8AA |. 8D85 BCFEFFFF LEA EAX,DWORD PTR SS:[EBP-144] 0040B8B0 |. 6A 04 PUSH 4 0040B8B2 |. 50 PUSH EAX
0040B8B3 |. 68 20CA4C00 PUSH WINZIP32.004CCA20 ; ASCII \0040B8B8 |. E8 C3690900 CALL WINZIP32.004A2280 0040B8BD |. 83C4 0C ADD ESP,0C 0040B8C0 |. 85C0 TEST EAX,EAX
0040B8C2 |. 75 09 JNZ SHORT WINZIP32.0040B8CD 0040B8C4 |. C605 EDBF4C00 >MOV BYTE PTR DS:[4CBFED],1 0040B8CB |. EB 07 JMP SHORT WINZIP32.0040B8D4 0040B8CD |> 8025 EDBF4C00 >AND BYTE PTR DS:[4CBFED],0 0040B8D4 |> 56 PUSH ESI
0040B8D5 |. 8D85 BCFEFFFF LEA EAX,DWORD PTR SS:[EBP-144]
0040B8DB |. 6A 00 PUSH 0 0040B8DD |. 50 PUSH EAX
0040B8DE |. E8 5D810800 CALL WINZIP32.00493A40 0040B8E3 |. A0 EDBF4C00 MOV AL,BYTE PTR DS:[4CBFED] 0040B8E8 |. 83C4 0C ADD ESP,0C 0040B8EB |> 5F POP EDI 0040B8EC |. 5E POP ESI 0040B8ED |. 5B POP EBX 0040B8EE |. C9 LEAVE 0040B8EF \\. C3 RETN 整理一下:
注册名:Suunb[CCG]
注册码:71C20EDC or 25170288
其实如果你坐在那里肯花上一杯茶的功夫来仔细想一下,就会知道,其实一点儿也不难,只是有一点点麻烦而以
这一章也就到这里吧,我现在巨困无比...
最后说一下的是,现在有仍有N多的软件用的是明码的比较方法,所以,要想找一两个软件练练手还是挺容易的
这一章本来还打算讲一下那些非明码比较的软件的,但忽然发现,如果通过非明码比较的软件能找到注册码的话,那应该也就把它的算法给搞的差不多了,所以,到下一章,分析软件的注册算法时再讲吧... 第八章--注册码是怎样炼成的
你应该明白的是,并不是所有的软件作者都像你想象并希望的那笨 没有人愿意自己的软件被别人在调试器中用一条d指令就能找到正确的注册码...要是那样的话还出来搞什么?
前边儿我们讲的查找软件注册码的方法是有针对性的,必须保证的是该软件使用的是明码比较,这样的话,我们只需找对地方,一个d指令就成了。那既然有明码比较这个词,就不难猜出还有相应的非明码比较...非明码比较也比较容易理解,就是软件比较两个注册码的方法不同而以,并不是计算出正确的注册码后就与用户输入的进行比较,它可能会采用每计算出一位就与注码中的相应位比较一次,一但发现与用户输入的不同,就提示出错等等等等...
遇到这样的软件,我们其实也可以找到其相应的注册码,但有点儿惨,要一位一位的计下来...但是如果人家不给你面子,一但计算出某位不正确就跳走的话,那你怎么办?所以,国民想致富,种树是根本...NG!所以遇到这种软件,我们就只有对其算法进行分析,并做出注册机才是唯一的方法(如果你想写注册机的话)...
你要明白,就算我们能找到那些采用明码比较的软件的注册码,原因也仅仅是因为其采用的是明码比较,所以我们没有什么值的高兴的地方,我们真正要做的,并不是找到一个注册码而以...当然如果你刚入门,那对你的提高还是很有帮助的。我们Crack一个软件的最终目的,是对其进行相应的分析,搞懂它的注册算法并写出注册机,这样才算是成功的Crack了一个软件,成功后的心情是难以表达的!就像你便秘了多