XXX疯狂 For C++算法分析
【文章标题】: XXX疯狂 For C++算法分析【文章作者】: dgrzh
【软件名称】: 某C++的学习视频
【使用工具】: OD
【操作平台】: WinXP
【作者声明】: 只是出于对软件破解的兴趣和对逆向工程的爱好,没有其他目的。失误之处还请高手多多赐教!为了不引起不必要的纠纷所以本帖谢绝转载。
【文章简介】: 本C++学习视频采用天狼星第三代加密系统,在破解过程中加密系统的设计者设计的暗桩使破解工作很繁琐,发了好多时间才分析完注册算法,虽然注册成功,但连接网络,提示本教程开始播放后将断开网络连接,本教程关闭时会恢复连接,要继续吗?确定之后出现错误提示“Cannot change Visible in OnShow or OnHide”,点确定后屏幕一片漆黑还伴有杂音,根本看不到学习视频,不知怎么回事,不知是否注册之后还有网络验证,还请高手多多赐教!本文主要是对XXX疯狂 For C++注册算法的分析。
机器码:5678012345336208055332657158863938205016
以下是关键代码,通过插件--字符串参考--查找ASC--找到“注册成功”字符串来到关键代码处,在段首下断点,重载OD,运行,输入
用户名:dgrzh
假码:111222333444555666777888999111222333444555666777888999111222333444555666777888999111222333444555666777888999111222333444555666777888999
004269E0 .55 PUSH EBP ;(初始化 cpu 选择状态)
004269E1 .8BEC MOV EBP,ESP
004269E3 .81C4 20F5FFFF ADD ESP,-0AE0
004269E9 .53 PUSH EBX
004269EA .56 PUSH ESI
004269EB .57 PUSH EDI
004269EC .8BF0 MOV ESI,EAX
004269EE .B8 88094C00 MOV EAX,《真正的.004C0988
004269F3 .E8 C0D80600 CALL 《真正的.004942B8
004269F8 .66:C785 48FFF>MOV WORD PTR SS:,8 ;
00426A01 .33D2 XOR EDX,EDX
00426A03 .33C9 XOR ECX,ECX
00426A05 .8955 FC MOV DWORD PTR SS:,EDX ;
00426A08 .33C0 XOR EAX,EAX
00426A0A .FF85 54FFFFFF INC DWORD PTR SS: ;
00426A10 .33D2 XOR EDX,EDX
00426A12 .66:C785 48FFF>MOV WORD PTR SS:,14
00426A1B .66:C785 48FFF>MOV WORD PTR SS:,20 ;
00426A24 .894D F8 MOV DWORD PTR SS:,ECX ;
00426A27 .FF85 54FFFFFF INC DWORD PTR SS: ;
00426A2D .66:C785 48FFF>MOV WORD PTR SS:,14
00426A36 .66:C785 48FFF>MOV WORD PTR SS:,2C ;
00426A3F .8945 F4 MOV DWORD PTR SS:,EAX ;
00426A42 .FF85 54FFFFFF INC DWORD PTR SS: ;
00426A48 .66:C785 48FFF>MOV WORD PTR SS:,14
00426A51 .66:C785 48FFF>MOV WORD PTR SS:,38 ;
00426A5A .8955 F0 MOV DWORD PTR SS:,EDX ;
00426A5D .8D55 F0 LEA EDX,DWORD PTR SS: ;
00426A60 .FF85 54FFFFFF INC DWORD PTR SS: ;
00426A66 .8B9E E0020000 MOV EBX,DWORD PTR DS: ;
00426A6C .8BC3 MOV EAX,EBX ;
00426A6E .E8 49280400 CALL 《真正的.004692BC ;
00426A73 .8D45 F0 LEA EAX,DWORD PTR SS: ;
00426A76 .33D2 XOR EDX,EDX
00426A78 .8955 EC MOV DWORD PTR SS:,EDX ;
00426A7B .8D55 EC LEA EDX,DWORD PTR SS: ;
00426A7E .FF85 54FFFFFF INC DWORD PTR SS: ;
00426A84 .E8 4BB80700 CALL 《真正的.004A22D4 ;
00426A89 .8D55 EC LEA EDX,DWORD PTR SS: ;
00426A8C .8BC3 MOV EAX,EBX ;
00426A8E .8B12 MOV EDX,DWORD PTR DS: ;
00426A90 .E8 57280400 CALL 《真正的.004692EC ;
00426A95 .FF8D 54FFFFFF DEC DWORD PTR SS: ;
00426A9B .8D45 EC LEA EAX,DWORD PTR SS: ;
00426A9E .BA 02000000 MOV EDX,2 ;
00426AA3 .E8 68B50700 CALL 《真正的.004A2010 ;
00426AA8 .FF8D 54FFFFFF DEC DWORD PTR SS: ;
00426AAE .8D45 F0 LEA EAX,DWORD PTR SS: ;
00426AB1 .BA 02000000 MOV EDX,2 ;
00426AB6 .E8 55B50700 CALL 《真正的.004A2010 ;
00426ABB .66:C785 48FFF>MOV WORD PTR SS:,44 ;
00426AC4 .33C9 XOR ECX,ECX
00426AC6 .894D E8 MOV DWORD PTR SS:,ECX ;
00426AC9 .8D55 E8 LEA EDX,DWORD PTR SS: ;
00426ACC .FF85 54FFFFFF INC DWORD PTR SS: ;
00426AD2 .8B86 E0020000 MOV EAX,DWORD PTR DS: ;
00426AD8 .E8 DF270400 CALL 《真正的.004692BC ;
00426ADD .837D E8 00 CMP DWORD PTR SS:,0 ;
00426AE1 .74 05 JE SHORT 《真正的.00426AE8
00426AE3 .8B4D E8 MOV ECX,DWORD PTR SS: ;
00426AE6 .EB 05 JMP SHORT 《真正的.00426AED
00426AE8 >B9 44034C00 MOV ECX,《真正的.004C0344 ;
00426AED >8BF9 MOV EDI,ECX ;
00426AEF .33C0 XOR EAX,EAX
00426AF1 .56 PUSH ESI
00426AF2 .83C9 FF OR ECX,FFFFFFFF ;
00426AF5 .F2:AE REPNE SCAS BYTE PTR ES: ;
00426AF7 .F7D1 NOT ECX ;
00426AF9 .2BF9 SUB EDI,ECX ;
00426AFB .8DB5 2CFEFFFF LEA ESI,DWORD PTR SS: ;
00426B01 .87F7 XCHG EDI,ESI ;
00426B03 .8BD1 MOV EDX,ECX ;
00426B05 .8BC7 MOV EAX,EDI ;
00426B07 .C1E9 02 SHR ECX,2 ;
00426B0A .8D45 E8 LEA EAX,DWORD PTR SS: ;
00426B0D .F3:A5 REP MOVS DWORD PTR ES:,DWORD PTR DS>;
00426B0F .8BCA MOV ECX,EDX ;
00426B11 .BA 02000000 MOV EDX,2 ;
00426B16 .83E1 03 AND ECX,3 ;
00426B19 .F3:A4 REP MOVS BYTE PTR ES:,BYTE PTR DS:[>;
00426B1B .5E POP ESI ;
00426B1C .FF8D 54FFFFFF DEC DWORD PTR SS: ;
00426B22 .E8 E9B40700 CALL 《真正的.004A2010
00426B27 .66:C785 48FFF>MOV WORD PTR SS:,50
00426B30 .66:C785 48FFF>MOV WORD PTR SS:,5C ;
00426B39 .8B9E E8020000 MOV EBX,DWORD PTR DS: ;
00426B3F .33C0 XOR EAX,EAX
00426B41 .8945 E4 MOV DWORD PTR SS:,EAX ;
00426B44 .81C3 08020000 ADD EBX,208 ;
00426B4A .FF85 54FFFFFF INC DWORD PTR SS: ;
00426B50 .8D55 E4 LEA EDX,DWORD PTR SS: ;
00426B53 .8B03 MOV EAX,DWORD PTR DS: ;
00426B55 .8B08 MOV ECX,DWORD PTR DS: ;
00426B57 .FF51 1C CALL DWORD PTR DS: ;
00426B5A .8D55 E4 LEA EDX,DWORD PTR SS: ;
00426B5D .8D45 F8 LEA EAX,DWORD PTR SS: ;
00426B60 .E8 DBB40700 CALL 《真正的.004A2040 ;
00426B65 .FF8D 54FFFFFF DEC DWORD PTR SS: ;
00426B6B .8D45 E4 LEA EAX,DWORD PTR SS: ;
00426B6E .BA 02000000 MOV EDX,2 ;
00426B73 .E8 98B40700 CALL 《真正的.004A2010 ;
00426B78 .66:C785 48FFF>MOV WORD PTR SS:,68 ;
00426B81 .837D F8 00 CMP DWORD PTR SS:,0 ;
00426B85 .74 05 JE SHORT 《真正的.00426B8C
00426B87 .8B4D F8 MOV ECX,DWORD PTR SS: ;
00426B8A .EB 05 JMP SHORT 《真正的.00426B91
00426B8C >B9 45034C00 MOV ECX,《真正的.004C0345
00426B91 >51 PUSH ECX ;
00426B92 .56 PUSH ESI ;
00426B93 .33C0 XOR EAX,EAX ;
00426B95 .8D55 E0 LEA EDX,DWORD PTR SS: ;
00426B98 .8945 E0 MOV DWORD PTR SS:,EAX ;
00426B9B .52 PUSH EDX ;
00426B9C .FF85 54FFFFFF INC DWORD PTR SS: ;
00426BA2 .E8 D10B0000 CALL 《真正的.00427778 ;
00426BA7 .83C4 0C ADD ESP,0C
00426BAA .8D55 E0 LEA EDX,DWORD PTR SS: ;
00426BAD .8D45 F8 LEA EAX,DWORD PTR SS:
00426BB0 .E8 8BB40700 CALL 《真正的.004A2040
00426BB5 .FF8D 54FFFFFF DEC DWORD PTR SS: ;
00426BBB .8D45 E0 LEA EAX,DWORD PTR SS: ;
00426BBE .BA 02000000 MOV EDX,2
00426BC3 .E8 48B40700 CALL 《真正的.004A2010
00426BC8 .837D F8 00 CMP DWORD PTR SS:,0
00426BCC .74 05 JE SHORT 《真正的.00426BD3
00426BCE .8B7D F8 MOV EDI,DWORD PTR SS: ;
00426BD1 .EB 05 JMP SHORT 《真正的.00426BD8
00426BD3 >BF 46034C00 MOV EDI,《真正的.004C0346
00426BD8 >57 PUSH EDI
00426BD9 .E8 DAD30600 CALL 《真正的.00493FB8 ;
00426BDE .59 POP ECX ;
00426BDF .8985 34FFFFFF MOV DWORD PTR SS:,EAX ;
00426BE5 .8B85 34FFFFFF MOV EAX,DWORD PTR SS: ;假码长度87
00426BEB .83C0 FB ADD EAX,-5 ;假码长度87-5等于82
00426BEE .50 PUSH EAX ; /Arg3
00426BEF .57 PUSH EDI ; |Arg2 假码
00426BF0 .56 PUSH ESI ; |Arg1
00426BF1 .E8 220C0000 CALL 《真正的.00427818 ; \这个CALL计算出注册码倒数5位值
00426BF6 .83C4 0C ADD ESP,0C
00426BF9 .0FB7D8 MOVZX EBX,AX ;将上面的CALL计算出EAX值的结果取其AX的值赋给EBX为下面的关键比较做准备,这时的AX的十进制值就是伪注册码倒数5位值,为什么说它是伪注册码倒数5位值,因为随着我们每次确定注册码的值时,都要将假码倒数5位值修改成这里AX的十进制值,才能跳向成功,继续调试,只有都确定了注册码前面82位值时(82位是我这里的假码长度87去掉倒数5位的十六进制长度,当然你的假码长度并不一定要这么长,也可以只要15位(十六进制长度),当然这是后话了),上面的CALL计算出AX的值才是最终的注册码倒数5位值。
00426BFC .6A 05 PUSH 5 ;
00426BFE .8B85 34FFFFFF MOV EAX,DWORD PTR SS: ;
00426C04 .03C7 ADD EAX,EDI ;
00426C06 .83C0 FB ADD EAX,-5 ;
00426C09 .50 PUSH EAX ;
00426C0A .8D95 2CF8FFFF LEA EDX,DWORD PTR SS: ;
00426C10 .52 PUSH EDX ;
00426C11 .E8 FED10600 CALL 《真正的.00493E14 ;
00426C16 .C685 31F8FFFF>MOV BYTE PTR SS:,0 ;
00426C1D .66:C785 48FFF>MOV WORD PTR SS:,74 ;
00426C26 .83C4 0C ADD ESP,0C
00426C29 .8D95 2CF8FFFF LEA EDX,DWORD PTR SS: ;
00426C2F .8D45 DC LEA EAX,DWORD PTR SS: ;
00426C32 .E8 DDB20700 CALL 《真正的.004A1F14 ;
00426C37 .8BD0 MOV EDX,EAX ;
00426C39 .FF85 54FFFFFF INC DWORD PTR SS: ;
00426C3F .8D45 FC LEA EAX,DWORD PTR SS:
00426C42 .E8 F9B30700 CALL 《真正的.004A2040 ;
00426C47 .FF8D 54FFFFFF DEC DWORD PTR SS: ;
00426C4D .8D45 DC LEA EAX,DWORD PTR SS: ;
00426C50 .BA 02000000 MOV EDX,2 ;
00426C55 .E8 B6B30700 CALL 《真正的.004A2010 ;
00426C5A .8D45 FC LEA EAX,DWORD PTR SS: ;
00426C5D .E8 FAB60700 CALL 《真正的.004A235C ;这个CALL取假码倒数5位的值转十六进制并将值放入EAX
00426C62 .3BD8 CMP EBX,EAX ;这里是第1个关键比较将上面两个CALL计算的值进行比较相等才能跳向注册成功,我们把假码倒数5位暂时改成这里EBX值的十进制值,重载OD,运行,输入新的假码值,跳过下面的注册失败1,继续调试
00426C64 .0F84 81000000 JE 《真正的.00426CEB
00426C6A .66:C785 48FFF>MOV WORD PTR SS:,80
00426C73 .BA 47034C00 MOV EDX,《真正的.004C0347 ;注册失败1,注册码不完整,请检查注册码是否已经全部复制或是否已经全部输入
00426C78 .8D45 D8 LEA EAX,DWORD PTR SS:
00426C7B .E8 94B20700 CALL 《真正的.004A1F14
00426C80 .FF85 54FFFFFF INC DWORD PTR SS:
00426C86 .8B00 MOV EAX,DWORD PTR DS:
以下代码省略
..........................................................................................................................................................................................................................................................
跳过注册失败1,我们来到这里
00426CEB > \6A 03 PUSH 3 ;
00426CED .8B85 34FFFFFF MOV EAX,DWORD PTR SS: ;
00426CF3 .03C7 ADD EAX,EDI ;
00426CF5 .83C0 F8 ADD EAX,-8 ;
00426CF8 .50 PUSH EAX ;
00426CF9 .8D95 2CF8FFFF LEA EDX,DWORD PTR SS: ;
00426CFF .52 PUSH EDX ;
00426D00 .E8 0FD10600 CALL 《真正的.00493E14 ;
00426D05 .C685 2FF8FFFF>MOV BYTE PTR SS:,0 ;
00426D0C .66:C785 48FFF>MOV WORD PTR SS:,8C ;
00426D15 .83C4 0C ADD ESP,0C
00426D18 .8D95 2CF8FFFF LEA EDX,DWORD PTR SS: ;
00426D1E .8D45 D4 LEA EAX,DWORD PTR SS: ;
00426D21 .E8 EEB10700 CALL 《真正的.004A1F14 ;
00426D26 .8BD0 MOV EDX,EAX ;
00426D28 .FF85 54FFFFFF INC DWORD PTR SS: ;
00426D2E .8D45 FC LEA EAX,DWORD PTR SS: ;
00426D31 .E8 0AB30700 CALL 《真正的.004A2040 ;
00426D36 .FF8D 54FFFFFF DEC DWORD PTR SS:
00426D3C .8D45 D4 LEA EAX,DWORD PTR SS: ;
00426D3F .BA 02000000 MOV EDX,2
00426D44 .E8 C7B20700 CALL 《真正的.004A2010
00426D49 .8D45 FC LEA EAX,DWORD PTR SS:
00426D4C .E8 0BB60700 CALL 《真正的.004A235C ;这里截取假码倒数8-6位十进制值转十六进制
00426D51 .8BD8 MOV EBX,EAX ;将结果存放在EBX中
00426D53 .8D85 2CF8FFFF LEA EAX,DWORD PTR SS: ;
00426D59 .53 PUSH EBX ;
00426D5A .57 PUSH EDI ;
00426D5B .50 PUSH EAX ;
00426D5C .E8 B3D00600 CALL 《真正的.00493E14 ;从假码开始按EBX中的值取字节
00426D61 .C6841D 2CF8FF>MOV BYTE PTR SS:,0 ;
00426D69 .66:C785 48FFF>MOV WORD PTR SS:,98 ;
00426D72 .83C4 0C ADD ESP,0C ;
00426D75 .8D95 2CF8FFFF LEA EDX,DWORD PTR SS: ;
00426D7B .8D45 D0 LEA EAX,DWORD PTR SS: ;
00426D7E .E8 91B10700 CALL 《真正的.004A1F14 ;
00426D83 .8BD0 MOV EDX,EAX ;
00426D85 .FF85 54FFFFFF INC DWORD PTR SS: ;
00426D8B .8D45 F8 LEA EAX,DWORD PTR SS:
00426D8E .E8 ADB20700 CALL 《真正的.004A2040 ;
00426D93 .FF8D 54FFFFFF DEC DWORD PTR SS: ;
00426D99 .8D45 D0 LEA EAX,DWORD PTR SS: ;
00426D9C .BA 02000000 MOV EDX,2
00426DA1 .E8 6AB20700 CALL 《真正的.004A2010
00426DA6 .8B8D 34FFFFFF MOV ECX,DWORD PTR SS: ;假码长度87
00426DAC .8D043B LEA EAX,DWORD PTR DS: ;当按EBX中的值截取字节,这里的值指向截断处后面的字节
00426DAF .2BCB SUB ECX,EBX ;假码长度减去假码倒数8-6位十六进制必须等于8
00426DB1 .8D95 2CF8FFFF LEA EDX,DWORD PTR SS: ;从假码开始按EBX中的值取字节
00426DB7 .83C1 F8 ADD ECX,-8 ;从上面取值到这里是一个暗桩如果这里的减值不等于0,会造成下面的CALL不能正确截取前面7F位假码参与后面的运算,会出错,这里其实是判断注册码倒数8-6位的值应该等于假码去掉后面8位的十进制长度,注册码后8位其实是起着钥匙的作用,只有正确了才能通向注册成功。真正注册成功保存在C:\WINDOWS/ai6aplaydd0.dat里的注册码是去掉后8位的,由于这里我们确定了注册码倒数8-6位的值,所以必须从头来过修改假码倒数8位值通过这两个关口,继续下面的调试
00426DBA .51 PUSH ECX ;
00426DBB .50 PUSH EAX ;
00426DBC .52 PUSH EDX ;
00426DBD .E8 52D00600 CALL 《真正的.00493E14 ;
00426DC2 .8B8D 34FFFFFF MOV ECX,DWORD PTR SS: ;
00426DC8 .83C4 0C ADD ESP,0C
00426DCB .2BCB SUB ECX,EBX ;
00426DCD .8D95 2CF8FFFF LEA EDX,DWORD PTR SS: ;
00426DD3 .8D45 CC LEA EAX,DWORD PTR SS:
00426DD6 .C6840D 24F8FF>MOV BYTE PTR SS:,0 ;
00426DDE .66:C785 48FFF>MOV WORD PTR SS:,0A4 ;
00426DE7 .E8 28B10700 CALL 《真正的.004A1F14
00426DEC .8BD0 MOV EDX,EAX ;
00426DEE .FF85 54FFFFFF INC DWORD PTR SS: ;
00426DF4 .8D45 F4 LEA EAX,DWORD PTR SS:
00426DF7 .E8 44B20700 CALL 《真正的.004A2040 ;
00426DFC .FF8D 54FFFFFF DEC DWORD PTR SS: ;
00426E02 .8D45 CC LEA EAX,DWORD PTR SS: ;
00426E05 .BA 02000000 MOV EDX,2
00426E0A .E8 01B20700 CALL 《真正的.004A2010 ;
00426E0F .837D F8 00 CMP DWORD PTR SS:,0 ;
00426E13 .74 05 JE SHORT 《真正的.00426E1A ;
00426E15 .8B4D F8 MOV ECX,DWORD PTR SS: ;
00426E18 .EB 05 JMP SHORT 《真正的.00426E1F
00426E1A >B9 8D034C00 MOV ECX,《真正的.004C038D ;
以下代码省略
..........................................................................................................................................................................................................................................................
00426F4E .E8 F504FFFF CALL 《真正的.00417448 ;计算注册码倒数13-9位和倒数16-14位值
00426F53 .59 POP ECX
00426F54 .3C 01 CMP AL,1 ;AL必须等于1
00426F56 .0F85 EA040000 JNZ 《真正的.00427446
00426F5C .8B0D 68894C00 MOV ECX,DWORD PTR DS: ;
00426F62 .8B01 MOV EAX,DWORD PTR DS:
00426F64 .50 PUSH EAX ;
00426F65 .E8 2EBEFDFF CALL 《真正的.00402D98 ;计算注册码前5位值
00426F6A .59 POP ECX
00426F6B .3C 01 CMP AL,1 ;AL必须等于1
00426F6D .0F85 71020000 JNZ 《真正的.004271E4
00426F73 .66:C785 48FFF>MOV WORD PTR SS:,0B0
00426F7C .BA 8F034C00 MOV EDX,《真正的.004C038F ;注册成功
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CALL 《真正的.00427818进入这个CALL看如何计算注册码倒数5位值
00427818/$55 PUSH EBP
00427819|.8BEC MOV EBP,ESP
0042781B|.56 PUSH ESI
0042781C|.57 PUSH EDI
0042781D|.8B4D 0C MOV ECX,DWORD PTR SS:
00427820|.BF 41050000 MOV EDI,541 ;
00427825|.33C0 XOR EAX,EAX
00427827|.33F6 XOR ESI,ESI
00427829|.3B75 10 CMP ESI,DWORD PTR SS: ;
0042782C|.7D 2C JGE SHORT 《真正的.0042785A
0042782E|>8D543E 03 /LEA EDX,DWORD PTR DS: ;
00427832|.8BFA |MOV EDI,EDX ;
00427834|.B2 80 |MOV DL,80 ;
00427836|>F6C4 80 |/TEST AH,80 ;
00427839|.74 08 ||JE SHORT 《真正的.00427843
0042783B|.03C0 ||ADD EAX,EAX ;
0042783D|.66:35 2110 ||XOR AX,1021 ;
00427841|.EB 02 ||JMP SHORT 《真正的.00427845
00427843|>03C0 ||ADD EAX,EAX ;
00427845|>8411 ||TEST BYTE PTR DS:,DL
00427847|.74 04 ||JE SHORT 《真正的.0042784D
00427849|.66:35 2110 ||XOR AX,1021 ;
0042784D|>D0EA ||SHR DL,1 ;
0042784F|.84D2 ||TEST DL,DL
00427851|.^ 75 E3 |\JNZ SHORT 《真正的.00427836 这个循环每次将EAX值乘2并根据(AH值同80与和每位假码十六进制值同DL与的结果)将AX值同1021异或0-2次,共循环8次
00427853|.41 |INC ECX
00427854|.46 |INC ESI
00427855|.3B75 10 |CMP ESI,DWORD PTR SS:
00427858|.^ 7C D4 \JL SHORT 《真正的.0042782E 这个外面循环循环次数等于假码长度减5这里等于87-5=82这里的长度值都是十六进制
0042785A|>5F POP EDI
0042785B|.5E POP ESI
0042785C|.5D POP EBP
0042785D\.C3 RETN
这个CALL就是将假码去掉倒数5位的值,我这里是将前82位假码参与到EAX值的加密计算,并将EAX计算结果取其AX的值赋给EBX为下面的第1个关键比较做准备。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CALL 《真正的.00417448进入这个CALL看如何计算注册码倒数13-9位和倒数16-14位值
00417448 $55 PUSH EBP
00417449 .8BEC MOV EBP,ESP
0041744B .83C4 B4 ADD ESP,-4C
0041744E .B8 60CF4B00 MOV EAX,《真正的.004BCF60
00417453 .53 PUSH EBX
00417454 .56 PUSH ESI ;
00417455 .57 PUSH EDI
00417456 .E8 5DCE0700 CALL 《真正的.004942B8
0041745B .66:C745 E0 08>MOV WORD PTR SS:,8
00417461 .33D2 XOR EDX,EDX
00417463 .8955 FC MOV DWORD PTR SS:,EDX
00417466 .FF45 EC INC DWORD PTR SS:
00417469 .66:C745 E0 14>MOV WORD PTR SS:,14
0041746F .8B4D 08 MOV ECX,DWORD PTR SS: ;
00417472 .81C1 E5030000 ADD ECX,3E5
00417478 .51 PUSH ECX
00417479 .E8 3ACB0700 CALL 《真正的.00493FB8 ;
0041747E .59 POP ECX
0041747F .8BD8 MOV EBX,EAX
00417481 .85DB TEST EBX,EBX
00417483 .75 23 JNZ SHORT 《真正的.004174A8
00417485 .33C0 XOR EAX,EAX
00417487 .BA 02000000 MOV EDX,2
0041748C .50 PUSH EAX
0041748D .8D45 FC LEA EAX,DWORD PTR SS:
00417490 .FF4D EC DEC DWORD PTR SS:
00417493 .E8 78AB0800 CALL 《真正的.004A2010
00417498 .58 POP EAX
00417499 .8B55 D0 MOV EDX,DWORD PTR SS:
0041749C .64:8915 00000>MOV DWORD PTR FS:,EDX
004174A3 .E9 35020000 JMP 《真正的.004176DD
004174A8 >33C9 XOR ECX,ECX
004174AA .894D C8 MOV DWORD PTR SS:,ECX ;
004174AD .33C0 XOR EAX,EAX
004174AF .8B55 08 MOV EDX,DWORD PTR SS: ;
004174B2 .81C2 E5030000 ADD EDX,3E5 ;
004174B8 .EB 09 JMP SHORT 《真正的.004174C3
004174BA >33C9 XOR ECX,ECX
004174BC .40 INC EAX
004174BD .8A0A MOV CL,BYTE PTR DS: 去掉倒数8位的假码
004174BF .014D C8 ADD DWORD PTR SS:,ECX ;中保存累加和的值
004174C2 .42 INC EDX ;
004174C3 >8D4B F8 LEA ECX,DWORD PTR DS: ;去掉倒数8位的假码长度减8,即去掉后16位假码的长度
004174C6 .3BC1 CMP EAX,ECX
004174C8 .^ 7C F0 JL SHORT 《真正的.004174BA 这个循环计算去掉后16位假码值的累加和
004174CA .8D4D BC LEA ECX,DWORD PTR SS:
004174CD .8D43 FB LEA EAX,DWORD PTR DS: ;
004174D0 .894D B8 MOV DWORD PTR SS:,ECX
004174D3 .33D2 XOR EDX,EDX
004174D5 .8B4D 08 MOV ECX,DWORD PTR SS:
004174D8 .3BD8 CMP EBX,EAX ;
004174DA .8DB401 E50300>LEA ESI,DWORD PTR DS: ;
004174E1 .7E 11 JLE SHORT 《真正的.004174F4
004174E3 >8B7D B8 MOV EDI,DWORD PTR SS:
004174E6 .8A0E MOV CL,BYTE PTR DS: ;
004174E8 .46 INC ESI ;
004174E9 .42 INC EDX ;
004174EA .880F MOV BYTE PTR DS:,CL ;
004174EC .40 INC EAX ;
004174ED .FF45 B8 INC DWORD PTR SS: ;
004174F0 .3BD8 CMP EBX,EAX ;
004174F2 .^ 7F EF JG SHORT 《真正的.004174E3
004174F4 >C64415 BC 00MOV BYTE PTR SS:,0 ;
004174F9 .66:C745 E0 20>MOV WORD PTR SS:,20
004174FF .8D55 BC LEA EDX,DWORD PTR SS: ;
00417502 .8D45 F8 LEA EAX,DWORD PTR SS:
00417505 .E8 0AAA0800 CALL 《真正的.004A1F14
0041750A .8BD0 MOV EDX,EAX
0041750C .FF45 EC INC DWORD PTR SS: ;
0041750F .8D45 FC LEA EAX,DWORD PTR SS:
00417512 .E8 29AB0800 CALL 《真正的.004A2040
00417517 .FF4D EC DEC DWORD PTR SS:
0041751A .8D45 F8 LEA EAX,DWORD PTR SS:
0041751D .BA 02000000 MOV EDX,2
00417522 .E8 E9AA0800 CALL 《真正的.004A2010
00417527 .66:C745 E0 2C>MOV WORD PTR SS:,2C
0041752D .8D45 FC LEA EAX,DWORD PTR SS:
00417530 .E8 27AE0800 CALL 《真正的.004A235C 这里截取假码倒数13-9位十进制值转十六进制,将结果存放在EAX中。
00417535 .3B45 C8 CMP EAX,DWORD PTR SS: ;将EAX的值同中的值比较必须相等,这里其实是判断注册码倒数13-9位十进制值等于去掉后16位假码值的累加和的十进制值,由于这里确定了注册码倒数13-9位值,所以必须从头来过修改假码倒数13位值通过这第三个关口,继续下面的调试
00417538 .74 23 JE SHORT 《真正的.0041755D
0041753A .33C0 XOR EAX,EAX
0041753C .BA 02000000 MOV EDX,2
00417541 .50 PUSH EAX
00417542 .8D45 FC LEA EAX,DWORD PTR SS:
00417545 .FF4D EC DEC DWORD PTR SS:
00417548 .E8 C3AA0800 CALL 《真正的.004A2010
0041754D .58 POP EAX
0041754E .8B55 D0 MOV EDX,DWORD PTR SS:
00417551 .64:8915 00000>MOV DWORD PTR FS:,EDX
00417558 .E9 80010000 JMP 《真正的.004176DD
0041755D >66:C745 E0 14>MOV WORD PTR SS:,14
00417563 .EB 35 JMP SHORT 《真正的.0041759A
00417565 .33C0 XOR EAX,EAX
00417567 .BA 02000000 MOV EDX,2
0041756C .50 PUSH EAX
0041756D .8D45 FC LEA EAX,DWORD PTR SS:
00417570 .FF4D EC DEC DWORD PTR SS:
00417573 .E8 98AA0800 CALL 《真正的.004A2010
00417578 .58 POP EAX
00417579 .50 PUSH EAX
0041757A .33D2 XOR EDX,EDX
0041757C .8955 EC MOV DWORD PTR SS:,EDX
0041757F .8D4D D0 LEA ECX,DWORD PTR SS:
00417582 .51 PUSH ECX
00417583 .E8 3B810800 CALL 《真正的.0049F6C3
00417588 .59 POP ECX
00417589 .58 POP EAX
0041758A .E9 4E010000 JMP 《真正的.004176DD
0041758F .66:C745 E0 34>MOV WORD PTR SS:,34
00417595 .E8 747A0800 CALL 《真正的.0049F00E
0041759A >33D2 XOR EDX,EDX
0041759C .33C0 XOR EAX,EAX
0041759E .8B4D 08 MOV ECX,DWORD PTR SS:
004175A1 .8DB1 E5030000 LEA ESI,DWORD PTR DS: ;
004175A7 .EB 04 JMP SHORT 《真正的.004175AD
004175A9 >3216 XOR DL,BYTE PTR DS: ;中是去掉倒数8位的假码
004175AB .40 INC EAX
004175AC .46 INC ESI
004175AD >8D4B F8 LEA ECX,DWORD PTR DS:
004175B0 .3BC1 CMP EAX,ECX ECX存储去掉倒数16位的假码长度
004175B2 .^ 7C F5 JL SHORT 《真正的.004175A9 这个循环将去掉后16位假码值逐个异或,将结果赋值给DL
004175B4 .33C0 XOR EAX,EAX
004175B6 .8D4D BC LEA ECX,DWORD PTR SS: ;
004175B9 .8AC2 MOV AL,DL ;DL值赋值给AL
004175BB .33D2 XOR EDX,EDX
004175BD .8945 CC MOV DWORD PTR SS:,EAX ;EAX又将值赋值给
004175C0 .894D B4 MOV DWORD PTR SS:,ECX ;
004175C3 .8B4D 08 MOV ECX,DWORD PTR SS: ;
004175C6 .8D43 F8 LEA EAX,DWORD PTR DS: ;
004175C9 .8DB401 E50300>LEA ESI,DWORD PTR DS: ;
004175D0 .EB 0D JMP SHORT 《真正的.004175DF
004175D2 >8B7D B4 MOV EDI,DWORD PTR SS:
004175D5 .8A0E MOV CL,BYTE PTR DS:
004175D7 .42 INC EDX
004175D8 .40 INC EAX
004175D9 .880F MOV BYTE PTR DS:,CL
004175DB .FF45 B4 INC DWORD PTR SS:
004175DE .46 INC ESI
004175DF >8D4B FB LEA ECX,DWORD PTR DS: ;
004175E2 .3BC1 CMP EAX,ECX ;
004175E4 .^ 7C EC JL SHORT 《真正的.004175D2
004175E6 .C64415 BC 00MOV BYTE PTR SS:,0 ;
004175EB .66:C745 E0 38>MOV WORD PTR SS:,38 ;
004175F1 .8D55 BC LEA EDX,DWORD PTR SS: ;
004175F4 .8D45 F4 LEA EAX,DWORD PTR SS: ;
004175F7 .E8 18A90800 CALL 《真正的.004A1F14
004175FC .8BD0 MOV EDX,EAX ;
004175FE .FF45 EC INC DWORD PTR SS: ;
00417601 .8D45 FC LEA EAX,DWORD PTR SS: ;
00417604 .E8 37AA0800 CALL 《真正的.004A2040
00417609 .FF4D EC DEC DWORD PTR SS: ;
0041760C .8D45 F4 LEA EAX,DWORD PTR SS: ;
0041760F .BA 02000000 MOV EDX,2
00417614 .E8 F7A90800 CALL 《真正的.004A2010
00417619 .66:C745 E0 44>MOV WORD PTR SS:,44 ;
0041761F .8B4D 08 MOV ECX,DWORD PTR SS: ;
00417622 .81C1 D0030000 ADD ECX,3D0 ;
00417628 .51 PUSH ECX ;
00417629 .8B45 08 MOV EAX,DWORD PTR SS: ;
0041762C .50 PUSH EAX ;
0041762D .E8 6E6F0000 CALL 《真正的.0041E5A0 ;
00417632 .33D2 XOR EDX,EDX EDX等于0
00417634 .83C4 08 ADD ESP,8
00417637 .8AD0 MOV DL,AL ;
00417639 .8D45 FC LEA EAX,DWORD PTR SS: ;
0041763C .8BCA MOV ECX,EDX ;ECX等于0
0041763E .C1E1 06 SHL ECX,6
00417641 .2BCA SUB ECX,EDX
00417643 .C1E1 02 SHL ECX,2
00417646 .2BCA SUB ECX,EDX
00417648 .C1E1 03 SHL ECX,3
0041764B .014D CC ADD DWORD PTR SS:,ECX ;的值加0
0041764E .E8 09AD0800 CALL 《真正的.004A235C ;这里截取假码倒数16-14位值转十六进制,将结果存放在EAX中。
00417653 .3B45 CC CMP EAX,DWORD PTR SS: ;将EAX的值同中的值比较必须相等,这里其实是判断注册码倒数16-14位十进制值等于去掉后16位假码值逐个异或结果的十进制值,由于这里确定了注册码倒数16-14位值,所以必须从头来过修改假码倒数16位值通过这第四个关口,继续下面的调试
00417656 .74 20 JE SHORT 《真正的.00417678
00417658 .33C0 XOR EAX,EAX
0041765A .BA 02000000 MOV EDX,2
0041765F .50 PUSH EAX
00417660 .8D45 FC LEA EAX,DWORD PTR SS:
00417663 .FF4D EC DEC DWORD PTR SS:
00417666 .E8 A5A90800 CALL 《真正的.004A2010
0041766B .58 POP EAX
0041766C .8B55 D0 MOV EDX,DWORD PTR SS:
0041766F .64:8915 00000>MOV DWORD PTR FS:,EDX
00417676 .EB 65 JMP SHORT 《真正的.004176DD
00417678 >66:C745 E0 14>MOV WORD PTR SS:,14 ;
0041767E .EB 32 JMP SHORT 《真正的.004176B2
00417680 .33C0 XOR EAX,EAX
00417682 .BA 02000000 MOV EDX,2
00417687 .50 PUSH EAX
00417688 .8D45 FC LEA EAX,DWORD PTR SS:
0041768B .FF4D EC DEC DWORD PTR SS:
0041768E .E8 7DA90800 CALL 《真正的.004A2010
00417693 .58 POP EAX
00417694 .50 PUSH EAX
00417695 .33D2 XOR EDX,EDX
00417697 .8955 EC MOV DWORD PTR SS:,EDX
0041769A .8D4D D0 LEA ECX,DWORD PTR SS:
0041769D .51 PUSH ECX
0041769E .E8 20800800 CALL 《真正的.0049F6C3
004176A3 .59 POP ECX
004176A4 .58 POP EAX
004176A5 .EB 36 JMP SHORT 《真正的.004176DD
004176A7 .66:C745 E0 4C>MOV WORD PTR SS:,4C
004176AD .E8 5C790800 CALL 《真正的.0049F00E
004176B2 >8B55 08 MOV EDX,DWORD PTR SS:
004176B5 .B0 01 MOV AL,1 ;来到这里AL=1,
004176B7 .C782 A8030000>MOV DWORD PTR DS:,1
004176C1 .50 PUSH EAX
004176C2 .8D45 FC LEA EAX,DWORD PTR SS: ;
004176C5 .FF4D EC DEC DWORD PTR SS: ;
004176C8 .BA 02000000 MOV EDX,2
004176CD .E8 3EA90800 CALL 《真正的.004A2010
004176D2 .58 POP EAX ;
004176D3 .8B55 D0 MOV EDX,DWORD PTR SS:
004176D6 .64:8915 00000>MOV DWORD PTR FS:,EDX
004176DD >5F POP EDI
004176DE .5E POP ESI
004176DF .5B POP EBX
004176E0 .8BE5 MOV ESP,EBP
004176E2 .5D POP EBP
004176E3 .C3 RETN 到这里这个CALL成功返回AL=1,顺利进入下面的CALL
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CALL 《真正的.00402D98 进入这个CALL看如何计算注册码前5位值
00402DA8/$55 PUSH EBP
00402DA9|.8BEC MOV EBP,ESP
00402DAB|.81C4 28FDFFFF ADD ESP,-2D8 ;
00402DB1|.B8 1CC34B00 MOV EAX,《真正的.004BC31C
00402DB6|.53 PUSH EBX
00402DB7|.56 PUSH ESI
00402DB8|.57 PUSH EDI
00402DB9|.8B75 08 MOV ESI,DWORD PTR SS:
00402DBC|.E8 F7140900 CALL 《真正的.004942B8
00402DC1|.66:C745 E4 08>MOV WORD PTR SS:,8 ;
00402DC7|.33D2 XOR EDX,EDX
00402DC9|.8955 FC MOV DWORD PTR SS:,EDX ;
00402DCC|.FF45 F0 INC DWORD PTR SS: ;
00402DCF|.66:C745 E4 14>MOV WORD PTR SS:,14 ;
00402DD5|.0FBE8E E50300>MOVSX ECX,BYTE PTR DS: ;
00402DDC|.894D C4 MOV DWORD PTR SS:,ECX ;
00402DDF|.0FBE86 E60300>MOVSX EAX,BYTE PTR DS: ;
00402DE6|.8945 C0 MOV DWORD PTR SS:,EAX ;
00402DE9|.0FBEBE E70300>MOVSX EDI,BYTE PTR DS: ;
00402DF0|.0FBE86 E80300>MOVSX EAX,BYTE PTR DS: ;
00402DF7|.8945 BC MOV DWORD PTR SS:,EAX ;
00402DFA|.0FBE96 E90300>MOVSX EDX,BYTE PTR DS: ;
00402E01|.8955 B8 MOV DWORD PTR SS:,EDX ;
00402E04|.0FBE8E EB0300>MOVSX ECX,BYTE PTR DS: ;
00402E0B|.894D B4 MOV DWORD PTR SS:,ECX ;
00402E0E|.8B45 C4 MOV EAX,DWORD PTR SS: ;
00402E11|.8B55 B4 MOV EDX,DWORD PTR SS: ;
00402E14|.0345 C0 ADD EAX,DWORD PTR SS: ;
00402E17|.03C7 ADD EAX,EDI ;
00402E19|.0345 BC ADD EAX,DWORD PTR SS:
00402E1C|.0345 B8 ADD EAX,DWORD PTR SS: ;
00402E1F|.C1E2 03 SHL EDX,3 ;
00402E22|.03C2 ADD EAX,EDX ;
00402E24|.33DB XOR EBX,EBX
00402E26|.8945 B0 MOV DWORD PTR SS:,EAX ;
00402E29|>8D04DB /LEA EAX,DWORD PTR DS:
00402E2C|.B9 5A000000 |MOV ECX,5A
00402E31|.99 |CDQ
00402E32|.F77D C0 |IDIV DWORD PTR SS: ;
00402E35|.0155 B0 |ADD DWORD PTR SS:,EDX ;
00402E38|.8BC3 |MOV EAX,EBX
00402E3A|.99 |CDQ
00402E3B|.F7F9 |IDIV ECX ;
00402E3D|.8A45 B0 |MOV AL,BYTE PTR SS: ;
00402E40|.81FB 3F1F0000 |CMP EBX,1F3F
00402E46|.888415 30FDFF>|MOV BYTE PTR SS:,AL ;
00402E4D|.75 2A |JNZ SHORT 《真正的.00402E79 ;
00402E4F|.DB45 C4 |FILD DWORD PTR SS:
00402E52|.DC0D 0C344000 |FMUL QWORD PTR DS:
00402E58|.8B45 B0 |MOV EAX,DWORD PTR SS: ;
00402E5B|.B9 64000000 |MOV ECX,64
00402E60|.99 |CDQ
00402E61|.F7F9 |IDIV ECX
00402E63|.8985 2CFDFFFF |MOV DWORD PTR SS:,EAX
00402E69|.DB85 2CFDFFFF |FILD DWORD PTR SS:
00402E6F|.DEC1 |FADDP ST(1),ST
00402E71|.E8 1E810900 |CALL 《真正的.0049AF94 ;
00402E76|.8945 B8 |MOV DWORD PTR SS:,EAX ;
00402E79|>0FBE96 E70300>|MOVSX EDX,BYTE PTR DS: ;
00402E80|.8D0C92 |LEA ECX,DWORD PTR DS: ;
00402E83|.8D0C4A |LEA ECX,DWORD PTR DS: ;
00402E86|.81C1 70110100 |ADD ECX,11170 ;
00402E8C|.3BD9 |CMP EBX,ECX
00402E8E|.75 4B |JNZ SHORT 《真正的.00402EDB ;
00402E90|.DB45 C4 |FILD DWORD PTR SS:
00402E93|.DC0D 0C344000 |FMUL QWORD PTR DS:
00402E99|.8B45 B0 |MOV EAX,DWORD PTR SS: ;
00402E9C|.B9 64000000 |MOV ECX,64
00402EA1|.99 |CDQ
00402EA2|.F7F9 |IDIV ECX
00402EA4|.8985 2CFDFFFF |MOV DWORD PTR SS:,EAX
00402EAA|.DB85 2CFDFFFF |FILD DWORD PTR SS:
00402EB0|.DEC1 |FADDP ST(1),ST
00402EB2|.D825 14344000 |FSUB DWORD PTR DS:
00402EB8|.0FBE86 E70300>|MOVSX EAX,BYTE PTR DS: ;
00402EBF|.8D1480 |LEA EDX,DWORD PTR DS: ;
00402EC2|.8D1450 |LEA EDX,DWORD PTR DS: ;
00402EC5|.8995 28FDFFFF |MOV DWORD PTR SS:,EDX
00402ECB|.DB85 28FDFFFF |FILD DWORD PTR SS:
00402ED1|.DEC1 |FADDP ST(1),ST
00402ED3|.E8 BC800900 |CALL 《真正的.0049AF94 ;
00402ED8|.8945 BC |MOV DWORD PTR SS:,EAX ;
00402EDB|>0FBE96 E70300>|MOVSX EDX,BYTE PTR DS: ;
00402EE2|.8D0C92 |LEA ECX,DWORD PTR DS: ;
00402EE5|.8D0C4A |LEA ECX,DWORD PTR DS: ;
00402EE8|.B8 80380100 |MOV EAX,13880 ;
00402EED|.2BC1 |SUB EAX,ECX
00402EEF|.3BD8 |CMP EBX,EAX
00402EF1|.75 21 |JNZ SHORT 《真正的.00402F14
00402EF3|.33D2 |XOR EDX,EDX EDX=0
00402EF5|.33C9 |XOR ECX,ECX
00402EF7|.8955 CC |MOV DWORD PTR SS:,EDX =EDX=0
00402EFA|.8D86 D0030000 |LEA EAX,DWORD PTR DS:
00402F00|>33D2 |/XOR EDX,EDX
00402F02|.41 ||INC ECX
00402F03|.8A10 ||MOV DL,BYTE PTR DS: 存储用户名
00402F05|.40 ||INC EAX
00402F06|.69D2 C2000000 ||IMUL EDX,EDX,0C2 用户名逐个乘以C2
00402F0C|.0155 CC ||ADD DWORD PTR SS:,EDX ;将上面乘的结果累加起来存储在中
00402F0F|.83F9 14 ||CMP ECX,14
00402F12|.^ 7C EC |\JL SHORT 《真正的.00402F00 这个循环将用户名逐个乘以C2,将结果累加起来存储在中,我这里的结果是19B7E
00402F14|>8D43 64 |LEA EAX,DWORD PTR DS:
00402F17|.B9 03000000 |MOV ECX,3
00402F1C|.99 |CDQ
00402F1D|.F7F9 |IDIV ECX ;
00402F1F|.8B55 B0 |MOV EDX,DWORD PTR SS: ;
00402F22|.43 |INC EBX
00402F23|.2BD0 |SUB EDX,EAX ;
00402F25|.81FB A0860100 |CMP EBX,186A0
00402F2B|.8955 B4 |MOV DWORD PTR SS:,EDX ;
00402F2E|.^ 0F8C F5FEFFFF \JL 《真正的.00402E29
00402F34|.8B45 C0 MOV EAX,DWORD PTR SS: ;
00402F37|.C1E0 03 SHL EAX,3 ;
00402F3A|.8BCF MOV ECX,EDI ;
00402F3C|.C1E1 02 SHL ECX,2 ;
00402F3F|.03C1 ADD EAX,ECX ;
00402F41|.8985 2CFDFFFF MOV DWORD PTR SS:,EAX ;
00402F47|.DB85 2CFDFFFF FILD DWORD PTR SS:
00402F4D|.DB45 B4 FILD DWORD PTR SS: ;
00402F50|.DC0D 18344000 FMUL QWORD PTR DS: ;
00402F56|.DEC1 FADDP ST(1),ST
00402F58|.E8 37800900 CALL 《真正的.0049AF94
00402F5D|.8945 C4 MOV DWORD PTR SS:,EAX ;
00402F60|.8B45 B4 MOV EAX,DWORD PTR SS: ;
00402F63|.8B55 BC MOV EDX,DWORD PTR SS: ;
00402F66|.C1E2 02 SHL EDX,2 ;
00402F69|.C1E7 03 SHL EDI,3 ;
00402F6C|.8D0440 LEA EAX,DWORD PTR DS: ;
00402F6F|.03FA ADD EDI,EDX ;
00402F71|.03F8 ADD EDI,EAX ;
00402F73|.897D C0 MOV DWORD PTR SS:,EDI ;
00402F76|.8B7D BC MOV EDI,DWORD PTR SS: ;
00402F79|.8B55 B8 MOV EDX,DWORD PTR SS: ;
00402F7C|.C1E2 02 SHL EDX,2 ;
00402F7F|.8B4D B8 MOV ECX,DWORD PTR SS: ;
00402F82|.C1E7 03 SHL EDI,3 ;
00402F85|.03FA ADD EDI,EDX ;
00402F87|.8B55 B4 MOV EDX,DWORD PTR SS: ;
00402F8A|.C1E2 02 SHL EDX,2 ;
00402F8D|.03F8 ADD EDI,EAX ;
00402F8F|.C1E1 03 SHL ECX,3 ;
00402F92|.03CA ADD ECX,EDX ;
00402F94|.03C8 ADD ECX,EAX ;
00402F96|.894D BC MOV DWORD PTR SS:,ECX ;
00402F99|.8B4D B4 MOV ECX,DWORD PTR SS: ;
00402F9C|.8B55 C0 MOV EDX,DWORD PTR SS: ;
00402F9F|.C1E2 02 SHL EDX,2 ;
00402FA2|.C1E1 03 SHL ECX,3 ;
00402FA5|.03CA ADD ECX,EDX ;
00402FA7|.8BD7 MOV EDX,EDI ;
00402FA9|.03C8 ADD ECX,EAX ;
00402FAB|.894D B8 MOV DWORD PTR SS:,ECX ;
00402FAE|.8B4D C4 MOV ECX,DWORD PTR SS: ;
00402FB1|.C1E2 02 SHL EDX,2 ;
00402FB4|.C1E1 03 SHL ECX,3 ;
00402FB7|.03CA ADD ECX,EDX
00402FB9|.03C8 ADD ECX,EAX ;
00402FBB|.894D B4 MOV DWORD PTR SS:,ECX ;
00402FBE|.8D8D A8FEFFFF LEA ECX,DWORD PTR SS: ;
00402FC4|.8B45 CC MOV EAX,DWORD PTR SS: ;
00402FC7|.50 PUSH EAX ;
00402FC8|.68 459B4B00 PUSH 《真正的.004B9B45 ;
00402FCD|.51 PUSH ECX ;
00402FCE|.E8 21460900 CALL 《真正的.004975F4 ;
00402FD3|.83C4 0C ADD ESP,0C
00402FD6|.8D86 E5050000 LEA EAX,DWORD PTR DS: ;
00402FDC|.56 PUSH ESI
00402FDD|.57 PUSH EDI
00402FDE|.8BF8 MOV EDI,EAX ;
00402FE0|.33C0 XOR EAX,EAX
00402FE2|.83C9 FF OR ECX,FFFFFFFF ;
00402FE5|.8DB5 A8FDFFFF LEA ESI,DWORD PTR SS:
00402FEB|.F2:AE REPNE SCAS BYTE PTR ES:
00402FED|.F7D1 NOT ECX ;
00402FEF|.2BF9 SUB EDI,ECX ;
00402FF1|.8BD1 MOV EDX,ECX ;
00402FF3|.87F7 XCHG EDI,ESI ;
00402FF5|.C1E9 02 SHR ECX,2 ;
00402FF8|.8BC7 MOV EAX,EDI ;
00402FFA|.F3:A5 REP MOVS DWORD PTR ES:,DWORD PTR DS>;
00402FFC|.8BCA MOV ECX,EDX ;
00402FFE|.8D85 A8FDFFFF LEA EAX,DWORD PTR SS: ;
00403004|.83E1 03 AND ECX,3 ;
00403007|.F3:A4 REP MOVS BYTE PTR ES:,BYTE PTR DS:[>
00403009|.5F POP EDI
0040300A|.5E POP ESI
0040300B|.50 PUSH EAX ;
0040300C|.56 PUSH ESI ;
0040300D|.E8 06B90100 CALL 《真正的.0041E918 ;
00403012|.83C4 08 ADD ESP,8 ;
00403015|.8D95 A8FEFFFF LEA EDX,DWORD PTR SS: ;
0040301B|.52 PUSH EDX ;
0040301C|.8D8D A8FDFFFF LEA ECX,DWORD PTR SS: ;
00403022|.51 PUSH ECX ;
00403023|.E8 000F0900 CALL 《真正的.00493F28 ;这个CALL将机器码前20位同中的十进制值连接起来存储在EAX中,数值为(56780123453362080553105342)
00403028|.83C4 08 ADD ESP,8 ;
0040302B|.33C9 XOR ECX,ECX ;
0040302D|.8D9D A8FDFFFF LEA EBX,DWORD PTR SS: ;里存储的值为(56780123453362080553105342)
00403033|>8B45 CC /MOV EAX,DWORD PTR SS: ;
00403036|.51 |PUSH ECX
00403037|.99 |CDQ
00403038|.B9 64000000 |MOV ECX,64
0040303D|.F7F9 |IDIV ECX ;
0040303F|.59 |POP ECX ;
00403040|.8D51 64 |LEA EDX,DWORD PTR DS: ;
00403043|.41 |INC ECX ;
00403044|.F7EA |IMUL EDX ;
00403046|.0FBE13 |MOVSX EDX,BYTE PTR DS: ;
00403049|.0345 C4 |ADD EAX,DWORD PTR SS: ;
0040304C|.43 |INC EBX
0040304D|.03C2 |ADD EAX,EDX ;
0040304F|.83F9 14 |CMP ECX,14
00403052|.8945 C4 |MOV DWORD PTR SS:,EAX ;
00403055|.^ 7C DC \JL SHORT 《真正的.00403033
00403057|.8D85 94FDFFFF LEA EAX,DWORD PTR SS: ;
0040305D|.50 PUSH EAX ;
0040305E|.8D8E E5030000 LEA ECX,DWORD PTR DS: ;
00403064|.51 PUSH ECX ;
00403065|.E8 EAFCFFFF CALL 《真正的.00402D54 ;用MD5循环加密去掉倒数8位的假码
0040306A|.83C4 08 ADD ESP,8
0040306D|.68 00010000 PUSH 100 ;
00403072|.E8 09060900 CALL 《真正的.00493680 ;
00403077|.59 POP ECX
00403078|.8945 C8 MOV DWORD PTR SS:,EAX
0040307B|.8B45 C8 MOV EAX,DWORD PTR SS: ;
0040307E|.56 PUSH ESI
0040307F|.8BF0 MOV ESI,EAX ;
00403081|.57 PUSH EDI
00403082|.33C0 XOR EAX,EAX ;
00403084|.8DBD A8FDFFFF LEA EDI,DWORD PTR SS: ;
0040308A|.83C9 FF OR ECX,FFFFFFFF
0040308D|.F2:AE REPNE SCAS BYTE PTR ES:
0040308F|.F7D1 NOT ECX ;
00403091|.2BF9 SUB EDI,ECX ;
00403093|.8BD1 MOV EDX,ECX ;
00403095|.87F7 XCHG EDI,ESI ;
00403097|.C1E9 02 SHR ECX,2
0040309A|.8BC7 MOV EAX,EDI
0040309C|.F3:A5 REP MOVS DWORD PTR ES:,DWORD PTR DS>
0040309E|.8BCA MOV ECX,EDX
004030A0|.8D95 A8FDFFFF LEA EDX,DWORD PTR SS:
004030A6|.83E1 03 AND ECX,3
004030A9|.F3:A4 REP MOVS BYTE PTR ES:,BYTE PTR DS:[>
004030AB|.5F POP EDI
004030AC|.5E POP ESI
004030AD|.8B45 C8 MOV EAX,DWORD PTR SS: ;
004030B0|.8986 10190000 MOV DWORD PTR DS:,EAX
004030B6|.52 PUSH EDX
004030B7|.E8 FC0E0900 CALL 《真正的.00493FB8 ;计算上面数字长度为1A
004030BC|.59 POP ECX
004030BD|.8945 D0 MOV DWORD PTR SS:,EAX ;=1A
004030C0|.8D85 A8FDFFFF LEA EAX,DWORD PTR SS: ;
004030C6|.33C9 XOR ECX,ECX ;
004030C8|.8945 AC MOV DWORD PTR SS:,EAX ;
004030CB|.33DB XOR EBX,EBX ;
004030CD|.3B4D D0 CMP ECX,DWORD PTR SS: ;
004030D0|.7D 17 JGE SHORT 《真正的.004030E9
004030D2|>8B55 AC /MOV EDX,DWORD PTR SS: ;里存储的值为(56780123453362080553105342)
004030D5|.33C0 |XOR EAX,EAX ;0
004030D7|.8A02 |MOV AL,BYTE PTR DS: ;
004030D9|.8D51 01 |LEA EDX,DWORD PTR DS: ;
004030DC|.F7EA |IMUL EDX ;
004030DE|.03D8 |ADD EBX,EAX ;
004030E0|.41 |INC ECX ;
004030E1|.FF45 AC |INC DWORD PTR SS:
004030E4|.3B4D D0 |CMP ECX,DWORD PTR SS: ;循环1A次
004030E7|.^ 7C E9 \JL SHORT 《真正的.004030D2 ;这个循环将里的ASCII值逐一取出乘以自身所在位置数,并将结果累加起来放入EBX中,这里结果值为4624
004030E9|>33C9 XOR ECX,ECX ;
004030EB|>8B86 A4030000 /MOV EAX,DWORD PTR DS: ;
004030F1|.F7E9 |IMUL ECX
004030F3|.03F8 |ADD EDI,EAX
004030F5|.41 |INC ECX
004030F6|.83F9 14 |CMP ECX,14
004030F9|.^ 7C F0 \JL SHORT 《真正的.004030EB ;
004030FB|.8B96 A4030000 MOV EDX,DWORD PTR DS: ;
00403101|.8A86 E5030000 MOV AL,BYTE PTR DS: ;
00403107|.8BCA MOV ECX,EDX ;
00403109|.8885 A8FEFFFF MOV BYTE PTR SS:,AL ;
0040310F|.8D1451 LEA EDX,DWORD PTR DS: ;
00403112|.C1E2 04 SHL EDX,4 ;
00403115|.03D1 ADD EDX,ECX ;
00403117|.8D1451 LEA EDX,DWORD PTR DS: ;
0040311A|.03DA ADD EBX,EDX ;
0040311C|.8A96 E6030000 MOV DL,BYTE PTR DS: ;
00403122|.8895 A9FEFFFF MOV BYTE PTR SS:,DL ;
00403128|.8A8E E7030000 MOV CL,BYTE PTR DS: ;
0040312E|.888D AAFEFFFF MOV BYTE PTR SS:,CL ;
00403134|.8A86 E8030000 MOV AL,BYTE PTR DS: ;
0040313A|.8885 ABFEFFFF MOV BYTE PTR SS:,AL ;
00403140|.8D45 F8 LEA EAX,DWORD PTR SS: ;
00403143|.8A96 E9030000 MOV DL,BYTE PTR DS: ;
00403149|.8895 ACFEFFFF MOV BYTE PTR SS:,DL ;
0040314F|.8D95 A8FEFFFF LEA EDX,DWORD PTR SS: ;
00403155|.C685 ADFEFFFF>MOV BYTE PTR SS:,0 ;
0040315C|.66:C745 E4 20>MOV WORD PTR SS:,20 ;
00403162|.E8 ADED0900 CALL 《真正的.004A1F14
00403167|.8BD0 MOV EDX,EAX
00403169|.FF45 F0 INC DWORD PTR SS:
0040316C|.8D45 FC LEA EAX,DWORD PTR SS:
0040316F|.E8 CCEE0900 CALL 《真正的.004A2040
00403174|.FF4D F0 DEC DWORD PTR SS:
00403177|.8D45 F8 LEA EAX,DWORD PTR SS:
0040317A|.BA 02000000 MOV EDX,2
0040317F|.E8 8CEE0900 CALL 《真正的.004A2010
00403184|.8D45 FC LEA EAX,DWORD PTR SS: ;
00403187|.E8 D0F10900 CALL 《真正的.004A235C 这里截取假码前5位值转十六进制
0040318C|.8BC8 MOV ECX,EAX ;
0040318E|.2BCB SUB ECX,EBX ;这里判断注册码前5位的十六进制值必须小于等于4624
00403190|.85C9 TEST ECX,ECX ;
00403192|. /7E 4D JLE SHORT 《真正的.004031E1 这里要跳
00403194|.83F9 07 CMP ECX,7
00403197|.7F 48 JG SHORT 《真正的.004031E1
00403199|.F6C1 01 TEST CL,1
0040319C|.74 12 JE SHORT 《真正的.004031B0
0040319E|.8B96 24060000 MOV EDX,DWORD PTR DS:
004031A4|.81E2 FFFEFFFF AND EDX,FFFFFEFF
004031AA|.8996 24060000 MOV DWORD PTR DS:,EDX
004031B0|>F6C1 02 TEST CL,2
004031B3|.74 0D JE SHORT 《真正的.004031C2
004031B5|.A1 E8844B00 MOV EAX,DWORD PTR DS:
004031BA|.33D2 XOR EDX,EDX
004031BC|.8990 6C020000 MOV DWORD PTR DS:,EDX
004031C2|>F6C1 04 TEST CL,4
004031C5|.74 10 JE SHORT 《真正的.004031D7
004031C7|.C786 20060000>MOV DWORD PTR DS:,1
004031D1|.FF86 34060000 INC DWORD PTR DS:
004031D7|>8D45 FC LEA EAX,DWORD PTR SS:
004031DA|.E8 7DF10900 CALL 《真正的.004A235C
004031DF|.8BD8 MOV EBX,EAX
004031E1|>8D45 FC LEA EAX,DWORD PTR SS:
004031E4|.E8 73F10900 CALL 《真正的.004A235C ;这里截取假码前5位值转十六进制
004031E9|.3BD8 CMP EBX,EAX ;这里其实是判断注册码前5位的十六进制值必须等于4624
004031EB|.74 23 JE SHORT 《真正的.00403210 ;这里相等跳向成功
004031ED|.33C0 XOR EAX,EAX
004031EF|.BA 02000000 MOV EDX,2
004031F4|.50 PUSH EAX
004031F5|.8D45 FC LEA EAX,DWORD PTR SS:
004031F8|.FF4D F0 DEC DWORD PTR SS:
004031FB|.E8 10EE0900 CALL 《真正的.004A2010
00403200|.58 POP EAX
00403201|.8B55 D4 MOV EDX,DWORD PTR SS:
00403204|.64:8915 00000>MOV DWORD PTR FS:,EDX
0040320B|.E9 F5010000 JMP 《真正的.00403405 ;跳向失败
00403210|>33C9 XOR ECX,ECX ;
00403212|>8B45 C0 /MOV EAX,DWORD PTR SS: ;
00403215|.03C3 |ADD EAX,EBX ;
00403217|.2BC1 |SUB EAX,ECX
00403219|.8945 C0 |MOV DWORD PTR SS:,EAX
0040321C|.41 |INC ECX
0040321D|.83F9 14 |CMP ECX,14
00403220|.^ 7C F0 \JL SHORT 《真正的.00403212 ;
00403222|.33C9 XOR ECX,ECX ;
00403224|>8B7D C0 /MOV EDI,DWORD PTR SS: ;
00403227|.03FB |ADD EDI,EBX
00403229|.2BF9 |SUB EDI,ECX
0040322B|.41 |INC ECX
0040322C|.83F9 0A |CMP ECX,0A
0040322F|.^ 7C F3 \JL SHORT 《真正的.00403224 ;
00403231|.C786 A8030000>MOV DWORD PTR DS:,1 ;
0040323B|.81C3 CF070000 ADD EBX,7CF ;
00403241|.33C9 XOR ECX,ECX ;
00403243|.899E 40190000 MOV DWORD PTR DS:,EBX ;
00403249|.8D85 94FDFFFF LEA EAX,DWORD PTR SS: ;
0040324F|>33D2 /XOR EDX,EDX ;
00403251|.41 |INC ECX ;
00403252|.8A10 |MOV DL,BYTE PTR DS: ;
00403254|.40 |INC EAX
00403255|.3155 BC |XOR DWORD PTR SS:,EDX ;
00403258|.83F9 0A |CMP ECX,0A
0040325B|.^ 7C F2 \JL SHORT 《真正的.0040324F ;
0040325D|.8D9E E5040000 LEA EBX,DWORD PTR DS: ;
00403263|.53 PUSH EBX
00403264|.E8 4F0D0900 CALL 《真正的.00493FB8
00403269|.59 POP ECX
0040326A|.8945 CC MOV DWORD PTR SS:,EAX ;
0040326D|.8B45 CC MOV EAX,DWORD PTR SS:
00403270|.40 INC EAX ;
00403271|.50 PUSH EAX ;
00403272|.E8 09040900 CALL 《真正的.00493680 ;
00403277|.59 POP ECX
00403278|.8945 C8 MOV DWORD PTR SS:,EAX ;
0040327B|.8B55 C8 MOV EDX,DWORD PTR SS:
0040327E|.56 PUSH ESI
0040327F|.57 PUSH EDI
00403280|.33C0 XOR EAX,EAX
00403282|.8BFB MOV EDI,EBX
00403284|.83C9 FF OR ECX,FFFFFFFF
00403287|.F2:AE REPNE SCAS BYTE PTR ES:
00403289|.F7D1 NOT ECX
0040328B|.2BF9 SUB EDI,ECX ;
0040328D|.8BF2 MOV ESI,EDX ;
0040328F|.87F7 XCHG EDI,ESI
00403291|.8BD1 MOV EDX,ECX ;
00403293|.8BC7 MOV EAX,EDI ;
00403295|.C1E9 02 SHR ECX,2 ;
00403298|.F3:A5 REP MOVS DWORD PTR ES:,DWORD PTR DS>
0040329A|.8BCA MOV ECX,EDX ;
0040329C|.83E1 03 AND ECX,3 ;
0040329F|.F3:A4 REP MOVS BYTE PTR ES:,BYTE PTR DS:[>
004032A1|.8B45 C8 MOV EAX,DWORD PTR SS: ;
004032A4|.8B55 CC MOV EDX,DWORD PTR SS: ;
004032A7|.5F POP EDI
004032A8|.5E POP ESI
004032A9|.C60410 00 MOV BYTE PTR DS:,0
004032AD|.8D4D CC LEA ECX,DWORD PTR SS: ;
004032B0|.51 PUSH ECX
004032B1|.8B45 C8 MOV EAX,DWORD PTR SS: ;
004032B4|.50 PUSH EAX
004032B5|.56 PUSH ESI
004032B6|.E8 D1B60100 CALL 《真正的.0041E98C
004032BB|.83C4 0C ADD ESP,0C
004032BE|.33DB XOR EBX,EBX ;
004032C0|>8BC3 /MOV EAX,EBX ;
004032C2|.B9 0A000000 |MOV ECX,0A ;
004032C7|.99 |CDQ
004032C8|.F7F9 |IDIV ECX ;
004032CA|.8B45 C8 |MOV EAX,DWORD PTR SS: ;
004032CD|.0FBE1410 |MOVSX EDX,BYTE PTR DS: ;
004032D1|.3155 B8 |XOR DWORD PTR SS:,EDX ;
004032D4|.8B4D CC |MOV ECX,DWORD PTR SS: ;
004032D7|.8B55 CC |MOV EDX,DWORD PTR SS: ;
004032DA|.8BC1 |MOV EAX,ECX ;
004032DC|.8D0C88 |LEA ECX,DWORD PTR DS: ;
004032DF|.C1E1 04 |SHL ECX,4 ;
004032E2|.2BC8 |SUB ECX,EAX ;
004032E4|.81C1 BE000000 |ADD ECX,0BE ;
004032EA|.3BD9 |CMP EBX,ECX ;
004032EC|.8BCA |MOV ECX,EDX ;
004032EE|.8D1451 |LEA EDX,DWORD PTR DS: ;
004032F1|.C1E2 04 |SHL EDX,4 ;
004032F4|.03D1 |ADD EDX,ECX ;
004032F6|.03D2 |ADD EDX,EDX ;
004032F8|.81C2 BE000000 |ADD EDX,0BE ;
004032FE|.3BDA |CMP EBX,EDX ;
00403300|.75 3C |JNZ SHORT 《真正的.0040333E
00403302|.8B45 C8 |MOV EAX,DWORD PTR SS: ;
00403305|.8B55 CC |MOV EDX,DWORD PTR SS: ;
00403308|.C60410 00 |MOV BYTE PTR DS:,0 ;
0040330C|.33C9 |XOR ECX,ECX ;
0040330E|.8B45 C8 |MOV EAX,DWORD PTR SS: ;
00403311|.8BD0 |MOV EDX,EAX
00403313|.8955 A8 |MOV DWORD PTR SS:,EDX ;
00403316|.3B4D CC |CMP ECX,DWORD PTR SS: ;
00403319|.7D 23 |JGE SHORT 《真正的.0040333E
0040331B|>8BC1 |/MOV EAX,ECX
0040331D|.25 0F000080 ||AND EAX,8000000F ;
00403322|.79 05 ||JNS SHORT 《真正的.00403329
00403324|.48 ||DEC EAX
00403325|.83C8 F0 ||OR EAX,FFFFFFF0
00403328|.40 ||INC EAX
00403329|>8A9405 94FDFF>||MOV DL,BYTE PTR SS:
00403330|.8B45 A8 ||MOV EAX,DWORD PTR SS:
00403333|.3010 ||XOR BYTE PTR DS:,DL
00403335|.41 ||INC ECX
00403336|.FF45 A8 ||INC DWORD PTR SS:
00403339|.3B4D CC ||CMP ECX,DWORD PTR SS:
0040333C|.^ 7C DD |\JL SHORT 《真正的.0040331B
0040333E|>43 |INC EBX ;
0040333F|.81FB A1860100 |CMP EBX,186A1 ;
00403345|.^ 0F8C 75FFFFFF \JL 《真正的.004032C0
0040334B|.8B55 C0 MOV EDX,DWORD PTR SS: ;
0040334E|.8B45 B4 MOV EAX,DWORD PTR SS: ;
00403351|.8BCF MOV ECX,EDI ;
00403353|.C1E1 02 SHL ECX,2 ;
00403356|.8D0440 LEA EAX,DWORD PTR DS: ;
00403359|.C1E2 03 SHL EDX,3 ;
0040335C|.03D1 ADD EDX,ECX ;
0040335E|.03D0 ADD EDX,EAX ;
00403360|.8955 C4 MOV DWORD PTR SS:,EDX ;
00403363|.8B55 BC MOV EDX,DWORD PTR SS: ;
00403366|.8B4D B4 MOV ECX,DWORD PTR SS: ;
00403369|.C1E2 02 SHL EDX,2 ;
0040336C|.C1E7 03 SHL EDI,3 ;
0040336F|.8D0C49 LEA ECX,DWORD PTR DS: ;
00403372|.03FA ADD EDI,EDX ;
00403374|.03F9 ADD EDI,ECX ;
00403376|.897D C0 MOV DWORD PTR SS:,EDI ;
00403379|.8B45 B4 MOV EAX,DWORD PTR SS: ;
0040337C|.8B4D B8 MOV ECX,DWORD PTR SS: ;
0040337F|.C1E1 02 SHL ECX,2 ;
00403382|.8B7D BC MOV EDI,DWORD PTR SS: ;
00403385|.8D0440 LEA EAX,DWORD PTR DS: ;
00403388|.8B55 B4 MOV EDX,DWORD PTR SS: ;
0040338B|.03C8 ADD ECX,EAX ;
0040338D|.8B45 B8 MOV EAX,DWORD PTR SS: ;
00403390|.83C1 03 ADD ECX,3 ;
00403393|.D3E7 SHL EDI,CL ;
00403395|.8B4D B4 MOV ECX,DWORD PTR SS: ;
00403398|.C1E0 03 SHL EAX,3 ;
0040339B|.C1E2 02 SHL EDX,2 ;
0040339E|.8D0C49 LEA ECX,DWORD PTR DS: ;
004033A1|.03C2 ADD EAX,EDX ;
004033A3|.03C1 ADD EAX,ECX ;
004033A5|.8945 BC MOV DWORD PTR SS:,EAX ;
004033A8|.8B45 C8 MOV EAX,DWORD PTR SS: ;
004033AB|.05 D0000000 ADD EAX,0D0 ;
004033B0|.8986 B0060000 MOV DWORD PTR DS:,EAX ;
004033B6|.8B45 B4 MOV EAX,DWORD PTR SS: ;
004033B9|.8B55 B4 MOV EDX,DWORD PTR SS: ;
004033BC|.8B4D C0 MOV ECX,DWORD PTR SS: ;
004033BF|.C1E1 02 SHL ECX,2 ;
004033C2|.8D0440 LEA EAX,DWORD PTR DS: ;
004033C5|.C1E2 03 SHL EDX,3 ;
004033C8|.03D1 ADD EDX,ECX ;
004033CA|.8BCF MOV ECX,EDI ;
004033CC|.03D0 ADD EDX,EAX ;
004033CE|.8955 B8 MOV DWORD PTR SS:,EDX ;
004033D1|.8B55 C4 MOV EDX,DWORD PTR SS: ;
004033D4|.8B45 B4 MOV EAX,DWORD PTR SS: ;
004033D7|.C1E1 02 SHL ECX,2 ;
004033DA|.C1E2 03 SHL EDX,3 ;
004033DD|.8D0440 LEA EAX,DWORD PTR DS: ;
004033E0|.03D1 ADD EDX,ECX ;
004033E2|.03D0 ADD EDX,EAX ;
004033E4|.B0 01 MOV AL,1 ;来到这里AL=1
004033E6|.8955 B4 MOV DWORD PTR SS:,EDX ;
004033E9|.50 PUSH EAX
004033EA|.FF4D F0 DEC DWORD PTR SS: ;
004033ED|.8D45 FC LEA EAX,DWORD PTR SS: ;
004033F0|.BA 02000000 MOV EDX,2
004033F5|.E8 16EC0900 CALL 《真正的.004A2010
004033FA|.58 POP EAX
004033FB|.8B55 D4 MOV EDX,DWORD PTR SS: ;
004033FE|.64:8915 00000>MOV DWORD PTR FS:,EDX
00403405|>5F POP EDI
00403406|.5E POP ESI
00403407|.5B POP EBX
00403408|.8BE5 MOV ESP,EBP
0040340A|.5D POP EBP
0040340B\.C3 RETN 这里这个CALL成功返回AL=1,至此注册码所有值分析完毕
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面给出注册码算法:
首先将用户名(dgrzh)逐个乘以C2,将结果累加起来转十进制等于105342,在将它连接到机器码前20位后面,等于(56780123453362080553105342),将它们的ASCII值逐一取出乘以自身所在位置数,将结果累加起来得到4624,转十进制得到注册码前5位值为
17956,
注册码倒数16-14位值等于去掉后16位假码值,为17956逐个异或结果的十进制值等于060,
注册码倒数13-9位值等于去掉后16位假码值,为17956的累加和的十进制值等于00268,
注册码倒数8-6位的值等于去掉后面8位的十进制长度也就是上面三段注册码的长度和等于013,
注册码倒数5位值等于AX=7751,十进制值为30545,
char ECX[]={"179560600026801300000"};
int EDI=541;
int EAX=0;
int ESI=0;
for(ESI=0,ESI<16,ESI++)
{
EDX=ESI+EDI+3;
EDI=EDX;
DL=80;
do \\循环8次
{
if((AH and 80)==0)
EAX=EAX*2;
else
EAX=EAX*2;
ax=(ax xor 1021);
if((ECX and DL)==0)
DL=DL/2;
else
ax=(ax xor 1021);
DL=DL/2;
}while(DL!=0)
ECX++;
}
EAX=78427751
最终获得:
机器码: 5678012345336208055332657158863938205016
用户名: dgrzh
注册码: 179560600026801330545 谢谢支持 好多呀,看不完:(eew 前排围观!~ 好文章正在为一套视频教程苦恼呢
破解了 但是里面播放内容就是没画面 只有声音
文章转走了 慢慢看
软件发下 可以吗? 这个真是不错的,看起来有点乱 内容很多,需要时间消化! 什么都木有 ~
页:
[1]