【文章标题】: 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:[EBP-B8],8               ;  
00426A01   .  33D2          XOR EDX,EDX
00426A03   .  33C9          XOR ECX,ECX
00426A05   .  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX             ;  
00426A08   .  33C0          XOR EAX,EAX
00426A0A   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426A10   .  33D2          XOR EDX,EDX
00426A12   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],14
00426A1B   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],20              ;  
00426A24   .  894D F8       MOV DWORD PTR SS:[EBP-8],ECX             ;  
00426A27   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426A2D   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],14
00426A36   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],2C              ;  
00426A3F   .  8945 F4       MOV DWORD PTR SS:[EBP-C],EAX             ;  
00426A42   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426A48   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],14
00426A51   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],38              ;  
00426A5A   .  8955 F0       MOV DWORD PTR SS:[EBP-10],EDX            ;  
00426A5D   .  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]            ;  
00426A60   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426A66   .  8B9E E0020000 MOV EBX,DWORD PTR DS:[ESI+2E0]           ;  
00426A6C   .  8BC3          MOV EAX,EBX                              ;  
00426A6E   .  E8 49280400   CALL 《真正的.004692BC                   ;  
00426A73   .  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]            ;  
00426A76   .  33D2          XOR EDX,EDX
00426A78   .  8955 EC       MOV DWORD PTR SS:[EBP-14],EDX            ;  
00426A7B   .  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]            ;  
00426A7E   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426A84   .  E8 4BB80700   CALL 《真正的.004A22D4                   ;  
00426A89   .  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]            ;  
00426A8C   .  8BC3          MOV EAX,EBX                              ;  
00426A8E   .  8B12          MOV EDX,DWORD PTR DS:[EDX]               ;  
00426A90   .  E8 57280400   CALL 《真正的.004692EC                   ;  
00426A95   .  FF8D 54FFFFFF DEC DWORD PTR SS:[EBP-AC]                ;  
00426A9B   .  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]            ;  
00426A9E   .  BA 02000000   MOV EDX,2                                ;  
00426AA3   .  E8 68B50700   CALL 《真正的.004A2010                   ;  
00426AA8   .  FF8D 54FFFFFF DEC DWORD PTR SS:[EBP-AC]                ;  
00426AAE   .  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]            ;  
00426AB1   .  BA 02000000   MOV EDX,2                                ;  
00426AB6   .  E8 55B50700   CALL 《真正的.004A2010                   ;  
00426ABB   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],44              ;  
00426AC4   .  33C9          XOR ECX,ECX
00426AC6   .  894D E8       MOV DWORD PTR SS:[EBP-18],ECX            ;  
00426AC9   .  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]            ;  
00426ACC   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426AD2   .  8B86 E0020000 MOV EAX,DWORD PTR DS:[ESI+2E0]           ;  
00426AD8   .  E8 DF270400   CALL 《真正的.004692BC                   ; 
00426ADD   .  837D E8 00    CMP DWORD PTR SS:[EBP-18],0              ;  
00426AE1   .  74 05         JE SHORT 《真正的.00426AE8
00426AE3   .  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]            ;  
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:[EDI]             ;  
00426AF7   .  F7D1          NOT ECX                                  ;  
00426AF9   .  2BF9          SUB EDI,ECX                              ;  
00426AFB   .  8DB5 2CFEFFFF LEA ESI,DWORD PTR SS:[EBP-1D4]           ;  
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:[EBP-18]            ;  
00426B0D   .  F3:A5         REP MOVS DWORD PTR ES:[EDI],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:[EDI],BYTE PTR DS:[>;  
00426B1B   .  5E            POP ESI                                  ;  
00426B1C   .  FF8D 54FFFFFF DEC DWORD PTR SS:[EBP-AC]                ;
00426B22   .  E8 E9B40700   CALL 《真正的.004A2010
00426B27   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],50
00426B30   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],5C              ;  
00426B39   .  8B9E E8020000 MOV EBX,DWORD PTR DS:[ESI+2E8]           ;  
00426B3F   .  33C0          XOR EAX,EAX
00426B41   .  8945 E4       MOV DWORD PTR SS:[EBP-1C],EAX            ;  
00426B44   .  81C3 08020000 ADD EBX,208                              ;  
00426B4A   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426B50   .  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]            ;  
00426B53   .  8B03          MOV EAX,DWORD PTR DS:[EBX]               ;  
00426B55   .  8B08          MOV ECX,DWORD PTR DS:[EAX]               ;  
00426B57   .  FF51 1C       CALL DWORD PTR DS:[ECX+1C]               ;  
00426B5A   .  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]            ;  
00426B5D   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]             ;  
00426B60   .  E8 DBB40700   CALL 《真正的.004A2040                   ;  
00426B65   .  FF8D 54FFFFFF DEC DWORD PTR SS:[EBP-AC]                ;  
00426B6B   .  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]            ;  
00426B6E   .  BA 02000000   MOV EDX,2                                ;  
00426B73   .  E8 98B40700   CALL 《真正的.004A2010                   ;  
00426B78   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],68              ;  
00426B81   .  837D F8 00    CMP DWORD PTR SS:[EBP-8],0               ;  
00426B85   .  74 05         JE SHORT 《真正的.00426B8C
00426B87   .  8B4D F8       MOV ECX,DWORD PTR SS:[EBP-8]             ;  
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:[EBP-20]            ; 
00426B98   .  8945 E0       MOV DWORD PTR SS:[EBP-20],EAX            ; 
00426B9B   .  52            PUSH EDX                                 ; 
00426B9C   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ; 
00426BA2   .  E8 D10B0000   CALL 《真正的.00427778                   ; 
00426BA7   .  83C4 0C       ADD ESP,0C
00426BAA   .  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]            ; 
00426BAD   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
00426BB0   .  E8 8BB40700   CALL 《真正的.004A2040
00426BB5   .  FF8D 54FFFFFF DEC DWORD PTR SS:[EBP-AC]                ;  
00426BBB   .  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]            ;  
00426BBE   .  BA 02000000   MOV EDX,2
00426BC3   .  E8 48B40700   CALL 《真正的.004A2010
00426BC8   .  837D F8 00    CMP DWORD PTR SS:[EBP-8],0
00426BCC   .  74 05         JE SHORT 《真正的.00426BD3
00426BCE   .  8B7D F8       MOV EDI,DWORD PTR SS:[EBP-8]             ;  
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:[EBP-CC],EAX            ;  
00426BE5   .  8B85 34FFFFFF MOV EAX,DWORD PTR SS:[EBP-CC]            ;  假码长度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:[EBP-CC]            ; 
00426C04   .  03C7          ADD EAX,EDI                              ; 
00426C06   .  83C0 FB       ADD EAX,-5                               ; 
00426C09   .  50            PUSH EAX                                 ; 
00426C0A   .  8D95 2CF8FFFF LEA EDX,DWORD PTR SS:[EBP-7D4]           ; 
00426C10   .  52            PUSH EDX                                 ; 
00426C11   .  E8 FED10600   CALL 《真正的.00493E14                   ; 
00426C16   .  C685 31F8FFFF>MOV BYTE PTR SS:[EBP-7CF],0              ;  
00426C1D   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],74              ;  
00426C26   .  83C4 0C       ADD ESP,0C
00426C29   .  8D95 2CF8FFFF LEA EDX,DWORD PTR SS:[EBP-7D4]           ;  
00426C2F   .  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]            ;  
00426C32   .  E8 DDB20700   CALL 《真正的.004A1F14                   ; 
00426C37   .  8BD0          MOV EDX,EAX                              ;  
00426C39   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426C3F   .  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00426C42   .  E8 F9B30700   CALL 《真正的.004A2040                   ;  
00426C47   .  FF8D 54FFFFFF DEC DWORD PTR SS:[EBP-AC]                ;  
00426C4D   .  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]            ;  
00426C50   .  BA 02000000   MOV EDX,2                                ;  
00426C55   .  E8 B6B30700   CALL 《真正的.004A2010                   ; 
00426C5A   .  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ;  
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:[EBP-B8],80                 
00426C73   .  BA 47034C00   MOV EDX,《真正的.004C0347                ;  注册失败1,注册码不完整,请检查注册码是否已经全部复制或是否已经全部输入
00426C78   .  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
00426C7B   .  E8 94B20700   CALL 《真正的.004A1F14
00426C80   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]
00426C86   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
以下代码省略
..........................................................................................................................................................................................................................................................
跳过注册失败1,我们来到这里
00426CEB   > \6A 03         PUSH 3                                   ; 
00426CED   .  8B85 34FFFFFF MOV EAX,DWORD PTR SS:[EBP-CC]            ; 
00426CF3   .  03C7          ADD EAX,EDI                              ; 
00426CF5   .  83C0 F8       ADD EAX,-8                               ; 
00426CF8   .  50            PUSH EAX                                 ; 
00426CF9   .  8D95 2CF8FFFF LEA EDX,DWORD PTR SS:[EBP-7D4]           ; 
00426CFF   .  52            PUSH EDX                                 ; 
00426D00   .  E8 0FD10600   CALL 《真正的.00493E14                   ; 
00426D05   .  C685 2FF8FFFF>MOV BYTE PTR SS:[EBP-7D1],0              ;  
00426D0C   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],8C              ;  
00426D15   .  83C4 0C       ADD ESP,0C
00426D18   .  8D95 2CF8FFFF LEA EDX,DWORD PTR SS:[EBP-7D4]           ;  
00426D1E   .  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]            ;  
00426D21   .  E8 EEB10700   CALL 《真正的.004A1F14                   ;  
00426D26   .  8BD0          MOV EDX,EAX                              ;  
00426D28   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426D2E   .  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ;  
00426D31   .  E8 0AB30700   CALL 《真正的.004A2040                   ;  
00426D36   .  FF8D 54FFFFFF DEC DWORD PTR SS:[EBP-AC]
00426D3C   .  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]            ;  
00426D3F   .  BA 02000000   MOV EDX,2
00426D44   .  E8 C7B20700   CALL 《真正的.004A2010
00426D49   .  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00426D4C   .  E8 0BB60700   CALL 《真正的.004A235C                   ;  这里截取假码倒数8-6位十进制值转十六进制
00426D51   .  8BD8          MOV EBX,EAX                              ;  将结果存放在EBX中
00426D53   .  8D85 2CF8FFFF LEA EAX,DWORD PTR SS:[EBP-7D4]           ;  
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:[EBP+EBX-7D4],0          ;  
00426D69   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],98              ;  
00426D72   .  83C4 0C       ADD ESP,0C                               ;  
00426D75   .  8D95 2CF8FFFF LEA EDX,DWORD PTR SS:[EBP-7D4]           ;  
00426D7B   .  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]            ;  
00426D7E   .  E8 91B10700   CALL 《真正的.004A1F14                   ;  
00426D83   .  8BD0          MOV EDX,EAX                              ;  
00426D85   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426D8B   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]             
00426D8E   .  E8 ADB20700   CALL 《真正的.004A2040                   ;  
00426D93   .  FF8D 54FFFFFF DEC DWORD PTR SS:[EBP-AC]                ;  
00426D99   .  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]            ;  
00426D9C   .  BA 02000000   MOV EDX,2
00426DA1   .  E8 6AB20700   CALL 《真正的.004A2010
00426DA6   .  8B8D 34FFFFFF MOV ECX,DWORD PTR SS:[EBP-CC]            ;  假码长度87
00426DAC   .  8D043B        LEA EAX,DWORD PTR DS:[EBX+EDI]           ;  当按EBX中的值截取字节,这里的值指向截断处后面的字节
00426DAF   .  2BCB          SUB ECX,EBX                              ;  假码长度减去假码倒数8-6位十六进制必须等于8
00426DB1   .  8D95 2CF8FFFF LEA EDX,DWORD PTR SS:[EBP-7D4]           ;  从假码开始按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:[EBP-CC]            ;  
00426DC8   .  83C4 0C       ADD ESP,0C
00426DCB   .  2BCB          SUB ECX,EBX                              ;  
00426DCD   .  8D95 2CF8FFFF LEA EDX,DWORD PTR SS:[EBP-7D4]           ;  
00426DD3   .  8D45 CC       LEA EAX,DWORD PTR SS:[EBP-34]
00426DD6   .  C6840D 24F8FF>MOV BYTE PTR SS:[EBP+ECX-7DC],0          ;  
00426DDE   .  66:C785 48FFF>MOV WORD PTR SS:[EBP-B8],0A4             ;  
00426DE7   .  E8 28B10700   CALL 《真正的.004A1F14
00426DEC   .  8BD0          MOV EDX,EAX                              ;  
00426DEE   .  FF85 54FFFFFF INC DWORD PTR SS:[EBP-AC]                ;  
00426DF4   .  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
00426DF7   .  E8 44B20700   CALL 《真正的.004A2040                   ;  
00426DFC   .  FF8D 54FFFFFF DEC DWORD PTR SS:[EBP-AC]                ; 
00426E02   .  8D45 CC       LEA EAX,DWORD PTR SS:[EBP-34]            ;  
00426E05   .  BA 02000000   MOV EDX,2
00426E0A   .  E8 01B20700   CALL 《真正的.004A2010                   ;  
00426E0F   .  837D F8 00    CMP DWORD PTR SS:[EBP-8],0               ; 
00426E13   .  74 05         JE SHORT 《真正的.00426E1A               ;  
00426E15   .  8B4D F8       MOV ECX,DWORD PTR SS:[EBP-8]             ;  
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:[4C8968]            ;  
00426F62   .  8B01          MOV EAX,DWORD PTR DS:[ECX]
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:[EBP-B8],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:[EBP+C]                
00427820  |.  BF 41050000   MOV EDI,541                              ;  
00427825  |.  33C0          XOR EAX,EAX
00427827  |.  33F6          XOR ESI,ESI
00427829  |.  3B75 10       CMP ESI,DWORD PTR SS:[EBP+10]            ;  
0042782C  |.  7D 2C         JGE SHORT 《真正的.0042785A
0042782E  |>  8D543E 03     /LEA EDX,DWORD PTR DS:[ESI+EDI+3]        ;  
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:[ECX],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:[EBP+10]
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:[EBP-20],8
00417461   .  33D2          XOR EDX,EDX
00417463   .  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
00417466   .  FF45 EC       INC DWORD PTR SS:[EBP-14]
00417469   .  66:C745 E0 14>MOV WORD PTR SS:[EBP-20],14
0041746F   .  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]             ;  
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:[EBP-4]
00417490   .  FF4D EC       DEC DWORD PTR SS:[EBP-14]
00417493   .  E8 78AB0800   CALL 《真正的.004A2010
00417498   .  58            POP EAX
00417499   .  8B55 D0       MOV EDX,DWORD PTR SS:[EBP-30]
0041749C   .  64:8915 00000>MOV DWORD PTR FS:[0],EDX
004174A3   .  E9 35020000   JMP 《真正的.004176DD
004174A8   >  33C9          XOR ECX,ECX
004174AA   .  894D C8       MOV DWORD PTR SS:[EBP-38],ECX            ;  
004174AD   .  33C0          XOR EAX,EAX
004174AF   .  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]             ;  
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:[EDX]                    去掉倒数8位的假码
004174BF   .  014D C8       ADD DWORD PTR SS:[EBP-38],ECX            ;  [EBP-38]中保存累加和的值
004174C2   .  42            INC EDX                                  ;  
004174C3   >  8D4B F8       LEA ECX,DWORD PTR DS:[EBX-8]             ;  去掉倒数8位的假码长度减8,即去掉后16位假码的长度
004174C6   .  3BC1          CMP EAX,ECX
004174C8   .^ 7C F0         JL SHORT 《真正的.004174BA                  这个循环计算去掉后16位假码值的累加和
004174CA   .  8D4D BC       LEA ECX,DWORD PTR SS:[EBP-44]
004174CD   .  8D43 FB       LEA EAX,DWORD PTR DS:[EBX-5]             ;  
004174D0   .  894D B8       MOV DWORD PTR SS:[EBP-48],ECX
004174D3   .  33D2          XOR EDX,EDX
004174D5   .  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
004174D8   .  3BD8          CMP EBX,EAX                              ;  
004174DA   .  8DB401 E50300>LEA ESI,DWORD PTR DS:[ECX+EAX+3E5]       ;  
004174E1   .  7E 11         JLE SHORT 《真正的.004174F4
004174E3   >  8B7D B8       MOV EDI,DWORD PTR SS:[EBP-48]
004174E6   .  8A0E          MOV CL,BYTE PTR DS:[ESI]                 ;  
004174E8   .  46            INC ESI                                  ;  
004174E9   .  42            INC EDX                                  ;  
004174EA   .  880F          MOV BYTE PTR DS:[EDI],CL                 ;  
004174EC   .  40            INC EAX                                  ;  
004174ED   .  FF45 B8       INC DWORD PTR SS:[EBP-48]                ;  
004174F0   .  3BD8          CMP EBX,EAX                              ;  
004174F2   .^ 7F EF         JG SHORT 《真正的.004174E3
004174F4   >  C64415 BC 00  MOV BYTE PTR SS:[EBP+EDX-44],0           ;  
004174F9   .  66:C745 E0 20>MOV WORD PTR SS:[EBP-20],20
004174FF   .  8D55 BC       LEA EDX,DWORD PTR SS:[EBP-44]            ;  
00417502   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
00417505   .  E8 0AAA0800   CALL 《真正的.004A1F14
0041750A   .  8BD0          MOV EDX,EAX
0041750C   .  FF45 EC       INC DWORD PTR SS:[EBP-14]                ;  
0041750F   .  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00417512   .  E8 29AB0800   CALL 《真正的.004A2040
00417517   .  FF4D EC       DEC DWORD PTR SS:[EBP-14]
0041751A   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
0041751D   .  BA 02000000   MOV EDX,2
00417522   .  E8 E9AA0800   CALL 《真正的.004A2010
00417527   .  66:C745 E0 2C>MOV WORD PTR SS:[EBP-20],2C
0041752D   .  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
00417530   .  E8 27AE0800   CALL 《真正的.004A235C                      这里截取假码倒数13-9位十进制值转十六进制,将结果存放在EAX中。
00417535   .  3B45 C8       CMP EAX,DWORD PTR SS:[EBP-38]            ;  将EAX的值同[EBP-38]中的值比较必须相等,这里其实是判断注册码倒数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:[EBP-4]
00417545   .  FF4D EC       DEC DWORD PTR SS:[EBP-14]
00417548   .  E8 C3AA0800   CALL 《真正的.004A2010
0041754D   .  58            POP EAX
0041754E   .  8B55 D0       MOV EDX,DWORD PTR SS:[EBP-30]
00417551   .  64:8915 00000>MOV DWORD PTR FS:[0],EDX
00417558   .  E9 80010000   JMP 《真正的.004176DD
0041755D   >  66:C745 E0 14>MOV WORD PTR SS:[EBP-20],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:[EBP-4]
00417570   .  FF4D EC       DEC DWORD PTR SS:[EBP-14]
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:[EBP-14],EDX
0041757F   .  8D4D D0       LEA ECX,DWORD PTR SS:[EBP-30]
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:[EBP-20],34
00417595   .  E8 747A0800   CALL 《真正的.0049F00E
0041759A   >  33D2          XOR EDX,EDX
0041759C   .  33C0          XOR EAX,EAX
0041759E   .  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
004175A1   .  8DB1 E5030000 LEA ESI,DWORD PTR DS:[ECX+3E5]           ;  
004175A7   .  EB 04         JMP SHORT 《真正的.004175AD
004175A9   >  3216          XOR DL,BYTE PTR DS:[ESI]                 ;  [ESI]中是去掉倒数8位的假码
004175AB   .  40            INC EAX
004175AC   .  46            INC ESI
004175AD   >  8D4B F8       LEA ECX,DWORD PTR DS:[EBX-8]
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:[EBP-44]            ;  
004175B9   .  8AC2          MOV AL,DL                                ;  DL值赋值给AL
004175BB   .  33D2          XOR EDX,EDX
004175BD   .  8945 CC       MOV DWORD PTR SS:[EBP-34],EAX            ;  EAX又将值赋值给[EBP-34]
004175C0   .  894D B4       MOV DWORD PTR SS:[EBP-4C],ECX            ;  
004175C3   .  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]             ;  
004175C6   .  8D43 F8       LEA EAX,DWORD PTR DS:[EBX-8]             ;  
004175C9   .  8DB401 E50300>LEA ESI,DWORD PTR DS:[ECX+EAX+3E5]       ;  
004175D0   .  EB 0D         JMP SHORT 《真正的.004175DF
004175D2   >  8B7D B4       MOV EDI,DWORD PTR SS:[EBP-4C]
004175D5   .  8A0E          MOV CL,BYTE PTR DS:[ESI]
004175D7   .  42            INC EDX
004175D8   .  40            INC EAX
004175D9   .  880F          MOV BYTE PTR DS:[EDI],CL
004175DB   .  FF45 B4       INC DWORD PTR SS:[EBP-4C]
004175DE   .  46            INC ESI
004175DF   >  8D4B FB       LEA ECX,DWORD PTR DS:[EBX-5]             ;  
004175E2   .  3BC1          CMP EAX,ECX                              ;  
004175E4   .^ 7C EC         JL SHORT 《真正的.004175D2
004175E6   .  C64415 BC 00  MOV BYTE PTR SS:[EBP+EDX-44],0           ;  
004175EB   .  66:C745 E0 38>MOV WORD PTR SS:[EBP-20],38              ;  
004175F1   .  8D55 BC       LEA EDX,DWORD PTR SS:[EBP-44]            ;  
004175F4   .  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]             ;  
004175F7   .  E8 18A90800   CALL 《真正的.004A1F14
004175FC   .  8BD0          MOV EDX,EAX                              ;  
004175FE   .  FF45 EC       INC DWORD PTR SS:[EBP-14]                ;  
00417601   .  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ;  
00417604   .  E8 37AA0800   CALL 《真正的.004A2040
00417609   .  FF4D EC       DEC DWORD PTR SS:[EBP-14]                ;  
0041760C   .  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]             ;  
0041760F   .  BA 02000000   MOV EDX,2
00417614   .  E8 F7A90800   CALL 《真正的.004A2010
00417619   .  66:C745 E0 44>MOV WORD PTR SS:[EBP-20],44              ;  
0041761F   .  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]             ;  
00417622   .  81C1 D0030000 ADD ECX,3D0                              ;  
00417628   .  51            PUSH ECX                                 ; 
00417629   .  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]             ; 
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:[EBP-4]             ;  
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:[EBP-34],ECX            ;  [EBP-34]的值加0
0041764E   .  E8 09AD0800   CALL 《真正的.004A235C                   ;  这里截取假码倒数16-14位值转十六进制,将结果存放在EAX中。
00417653   .  3B45 CC       CMP EAX,DWORD PTR SS:[EBP-34]            ;  将EAX的值同[EBP-34]中的值比较必须相等,这里其实是判断注册码倒数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:[EBP-4]
00417663   .  FF4D EC       DEC DWORD PTR SS:[EBP-14]
00417666   .  E8 A5A90800   CALL 《真正的.004A2010
0041766B   .  58            POP EAX
0041766C   .  8B55 D0       MOV EDX,DWORD PTR SS:[EBP-30]
0041766F   .  64:8915 00000>MOV DWORD PTR FS:[0],EDX
00417676   .  EB 65         JMP SHORT 《真正的.004176DD
00417678   >  66:C745 E0 14>MOV WORD PTR SS:[EBP-20],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:[EBP-4]
0041768B   .  FF4D EC       DEC DWORD PTR SS:[EBP-14]
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:[EBP-14],EDX
0041769A   .  8D4D D0       LEA ECX,DWORD PTR SS:[EBP-30]
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:[EBP-20],4C
004176AD   .  E8 5C790800   CALL 《真正的.0049F00E
004176B2   >  8B55 08       MOV EDX,DWORD PTR SS:[EBP+8]
004176B5   .  B0 01         MOV AL,1                                 ;  来到这里AL=1,
004176B7   .  C782 A8030000>MOV DWORD PTR DS:[EDX+3A8],1
004176C1   .  50            PUSH EAX
004176C2   .  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ;  
004176C5   .  FF4D EC       DEC DWORD PTR SS:[EBP-14]                ;  
004176C8   .  BA 02000000   MOV EDX,2
004176CD   .  E8 3EA90800   CALL 《真正的.004A2010
004176D2   .  58            POP EAX                                  ;  
004176D3   .  8B55 D0       MOV EDX,DWORD PTR SS:[EBP-30]
004176D6   .  64:8915 00000>MOV DWORD PTR FS:[0],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:[EBP+8]
00402DBC  |.  E8 F7140900   CALL 《真正的.004942B8
00402DC1  |.  66:C745 E4 08>MOV WORD PTR SS:[EBP-1C],8               ;  
00402DC7  |.  33D2          XOR EDX,EDX
00402DC9  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX             ;  
00402DCC  |.  FF45 F0       INC DWORD PTR SS:[EBP-10]                ;  
00402DCF  |.  66:C745 E4 14>MOV WORD PTR SS:[EBP-1C],14              ;  
00402DD5  |.  0FBE8E E50300>MOVSX ECX,BYTE PTR DS:[ESI+3E5]          ;  
00402DDC  |.  894D C4       MOV DWORD PTR SS:[EBP-3C],ECX            ;  
00402DDF  |.  0FBE86 E60300>MOVSX EAX,BYTE PTR DS:[ESI+3E6]          ;  
00402DE6  |.  8945 C0       MOV DWORD PTR SS:[EBP-40],EAX            ;  
00402DE9  |.  0FBEBE E70300>MOVSX EDI,BYTE PTR DS:[ESI+3E7]          ;  
00402DF0  |.  0FBE86 E80300>MOVSX EAX,BYTE PTR DS:[ESI+3E8]          ;  
00402DF7  |.  8945 BC       MOV DWORD PTR SS:[EBP-44],EAX            ;  
00402DFA  |.  0FBE96 E90300>MOVSX EDX,BYTE PTR DS:[ESI+3E9]          ;  
00402E01  |.  8955 B8       MOV DWORD PTR SS:[EBP-48],EDX            ;  
00402E04  |.  0FBE8E EB0300>MOVSX ECX,BYTE PTR DS:[ESI+3EB]          ;  
00402E0B  |.  894D B4       MOV DWORD PTR SS:[EBP-4C],ECX            ;  
00402E0E  |.  8B45 C4       MOV EAX,DWORD PTR SS:[EBP-3C]            ;  
00402E11  |.  8B55 B4       MOV EDX,DWORD PTR SS:[EBP-4C]            ;  
00402E14  |.  0345 C0       ADD EAX,DWORD PTR SS:[EBP-40]            ; 
00402E17  |.  03C7          ADD EAX,EDI                              ;  
00402E19  |.  0345 BC       ADD EAX,DWORD PTR SS:[EBP-44]
00402E1C  |.  0345 B8       ADD EAX,DWORD PTR SS:[EBP-48]            ;  
00402E1F  |.  C1E2 03       SHL EDX,3                                ;  
00402E22  |.  03C2          ADD EAX,EDX                              ;  
00402E24  |.  33DB          XOR EBX,EBX
00402E26  |.  8945 B0       MOV DWORD PTR SS:[EBP-50],EAX            ;  
00402E29  |>  8D04DB        /LEA EAX,DWORD PTR DS:[EBX+EBX*8]
00402E2C  |.  B9 5A000000   |MOV ECX,5A
00402E31  |.  99            |CDQ
00402E32  |.  F77D C0       |IDIV DWORD PTR SS:[EBP-40]              ;  
00402E35  |.  0155 B0       |ADD DWORD PTR SS:[EBP-50],EDX           ;  
00402E38  |.  8BC3          |MOV EAX,EBX
00402E3A  |.  99            |CDQ
00402E3B  |.  F7F9          |IDIV ECX                                ;  
00402E3D  |.  8A45 B0       |MOV AL,BYTE PTR SS:[EBP-50]             ;  
00402E40  |.  81FB 3F1F0000 |CMP EBX,1F3F
00402E46  |.  888415 30FDFF>|MOV BYTE PTR SS:[EBP+EDX-2D0],AL        ;  
00402E4D  |.  75 2A         |JNZ SHORT 《真正的.00402E79             ;  
00402E4F  |.  DB45 C4       |FILD DWORD PTR SS:[EBP-3C]
00402E52  |.  DC0D 0C344000 |FMUL QWORD PTR DS:[40340C]
00402E58  |.  8B45 B0       |MOV EAX,DWORD PTR SS:[EBP-50]           ;  
00402E5B  |.  B9 64000000   |MOV ECX,64
00402E60  |.  99            |CDQ
00402E61  |.  F7F9          |IDIV ECX
00402E63  |.  8985 2CFDFFFF |MOV DWORD PTR SS:[EBP-2D4],EAX
00402E69  |.  DB85 2CFDFFFF |FILD DWORD PTR SS:[EBP-2D4]
00402E6F  |.  DEC1          |FADDP ST(1),ST
00402E71  |.  E8 1E810900   |CALL 《真正的.0049AF94                  ;  
00402E76  |.  8945 B8       |MOV DWORD PTR SS:[EBP-48],EAX           ;  
00402E79  |>  0FBE96 E70300>|MOVSX EDX,BYTE PTR DS:[ESI+3E7]         ;  
00402E80  |.  8D0C92        |LEA ECX,DWORD PTR DS:[EDX+EDX*4]        ;  
00402E83  |.  8D0C4A        |LEA ECX,DWORD PTR DS:[EDX+ECX*2]        ;  
00402E86  |.  81C1 70110100 |ADD ECX,11170                           ;  
00402E8C  |.  3BD9          |CMP EBX,ECX
00402E8E  |.  75 4B         |JNZ SHORT 《真正的.00402EDB             ;  
00402E90  |.  DB45 C4       |FILD DWORD PTR SS:[EBP-3C]
00402E93  |.  DC0D 0C344000 |FMUL QWORD PTR DS:[40340C]
00402E99  |.  8B45 B0       |MOV EAX,DWORD PTR SS:[EBP-50]           ;  
00402E9C  |.  B9 64000000   |MOV ECX,64
00402EA1  |.  99            |CDQ
00402EA2  |.  F7F9          |IDIV ECX
00402EA4  |.  8985 2CFDFFFF |MOV DWORD PTR SS:[EBP-2D4],EAX
00402EAA  |.  DB85 2CFDFFFF |FILD DWORD PTR SS:[EBP-2D4]
00402EB0  |.  DEC1          |FADDP ST(1),ST
00402EB2  |.  D825 14344000 |FSUB DWORD PTR DS:[403414]
00402EB8  |.  0FBE86 E70300>|MOVSX EAX,BYTE PTR DS:[ESI+3E7]         ;  
00402EBF  |.  8D1480        |LEA EDX,DWORD PTR DS:[EAX+EAX*4]        ;  
00402EC2  |.  8D1450        |LEA EDX,DWORD PTR DS:[EAX+EDX*2]        ;  
00402EC5  |.  8995 28FDFFFF |MOV DWORD PTR SS:[EBP-2D8],EDX
00402ECB  |.  DB85 28FDFFFF |FILD DWORD PTR SS:[EBP-2D8]
00402ED1  |.  DEC1          |FADDP ST(1),ST
00402ED3  |.  E8 BC800900   |CALL 《真正的.0049AF94                  ;  
00402ED8  |.  8945 BC       |MOV DWORD PTR SS:[EBP-44],EAX           ;  
00402EDB  |>  0FBE96 E70300>|MOVSX EDX,BYTE PTR DS:[ESI+3E7]         ;  
00402EE2  |.  8D0C92        |LEA ECX,DWORD PTR DS:[EDX+EDX*4]        ;  
00402EE5  |.  8D0C4A        |LEA ECX,DWORD PTR DS:[EDX+ECX*2]        ;  
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:[EBP-34],EDX              [EBP-34]=EDX=0
00402EFA  |.  8D86 D0030000 |LEA EAX,DWORD PTR DS:[ESI+3D0]
00402F00  |>  33D2          |/XOR EDX,EDX
00402F02  |.  41            ||INC ECX
00402F03  |.  8A10          ||MOV DL,BYTE PTR DS:[EAX]                  [EAX]存储用户名
00402F05  |.  40            ||INC EAX
00402F06  |.  69D2 C2000000 ||IMUL EDX,EDX,0C2                          用户名逐个乘以C2
00402F0C  |.  0155 CC       ||ADD DWORD PTR SS:[EBP-34],EDX          ;  将上面乘的结果累加起来存储在[EBP-34]中
00402F0F  |.  83F9 14       ||CMP ECX,14
00402F12  |.^ 7C EC         |\JL SHORT 《真正的.00402F00                这个循环将用户名逐个乘以C2,将结果累加起来存储在[EBP-34]中,我这里的结果是19B7E 
00402F14  |>  8D43 64       |LEA EAX,DWORD PTR DS:[EBX+64]
00402F17  |.  B9 03000000   |MOV ECX,3
00402F1C  |.  99            |CDQ
00402F1D  |.  F7F9          |IDIV ECX                                ;  
00402F1F  |.  8B55 B0       |MOV EDX,DWORD PTR SS:[EBP-50]           ;  
00402F22  |.  43            |INC EBX
00402F23  |.  2BD0          |SUB EDX,EAX                             ;  
00402F25  |.  81FB A0860100 |CMP EBX,186A0
00402F2B  |.  8955 B4       |MOV DWORD PTR SS:[EBP-4C],EDX           ;  
00402F2E  |.^ 0F8C F5FEFFFF \JL 《真正的.00402E29
00402F34  |.  8B45 C0       MOV EAX,DWORD PTR SS:[EBP-40]            ;  
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:[EBP-2D4],EAX           ;  
00402F47  |.  DB85 2CFDFFFF FILD DWORD PTR SS:[EBP-2D4]
00402F4D  |.  DB45 B4       FILD DWORD PTR SS:[EBP-4C]               ;  
00402F50  |.  DC0D 18344000 FMUL QWORD PTR DS:[403418]               ;  
00402F56  |.  DEC1          FADDP ST(1),ST
00402F58  |.  E8 37800900   CALL 《真正的.0049AF94
00402F5D  |.  8945 C4       MOV DWORD PTR SS:[EBP-3C],EAX            ;  
00402F60  |.  8B45 B4       MOV EAX,DWORD PTR SS:[EBP-4C]            ;  
00402F63  |.  8B55 BC       MOV EDX,DWORD PTR SS:[EBP-44]            ;  
00402F66  |.  C1E2 02       SHL EDX,2                                ;  
00402F69  |.  C1E7 03       SHL EDI,3                                ;  
00402F6C  |.  8D0440        LEA EAX,DWORD PTR DS:[EAX+EAX*2]         ;  
00402F6F  |.  03FA          ADD EDI,EDX                              ;  
00402F71  |.  03F8          ADD EDI,EAX                              ;  
00402F73  |.  897D C0       MOV DWORD PTR SS:[EBP-40],EDI            ;  
00402F76  |.  8B7D BC       MOV EDI,DWORD PTR SS:[EBP-44]            ;  
00402F79  |.  8B55 B8       MOV EDX,DWORD PTR SS:[EBP-48]            ;  
00402F7C  |.  C1E2 02       SHL EDX,2                                ;  
00402F7F  |.  8B4D B8       MOV ECX,DWORD PTR SS:[EBP-48]            ;  
00402F82  |.  C1E7 03       SHL EDI,3                                ;  
00402F85  |.  03FA          ADD EDI,EDX                              ;  
00402F87  |.  8B55 B4       MOV EDX,DWORD PTR SS:[EBP-4C]            ;  
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:[EBP-44],ECX            ;  
00402F99  |.  8B4D B4       MOV ECX,DWORD PTR SS:[EBP-4C]            ; 
00402F9C  |.  8B55 C0       MOV EDX,DWORD PTR SS:[EBP-40]            ;  
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:[EBP-48],ECX            ;  
00402FAE  |.  8B4D C4       MOV ECX,DWORD PTR SS:[EBP-3C]            ;  
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:[EBP-4C],ECX            ;  
00402FBE  |.  8D8D A8FEFFFF LEA ECX,DWORD PTR SS:[EBP-158]           ; 
00402FC4  |.  8B45 CC       MOV EAX,DWORD PTR SS:[EBP-34]            ;  
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:[ESI+5E5]           ;  
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:[EBP-258]
00402FEB  |.  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
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:[EDI],DWORD PTR DS>;  
00402FFC  |.  8BCA          MOV ECX,EDX                              ; 
00402FFE  |.  8D85 A8FDFFFF LEA EAX,DWORD PTR SS:[EBP-258]           ;  
00403004  |.  83E1 03       AND ECX,3                                ;  
00403007  |.  F3:A4         REP MOVS BYTE PTR ES:[EDI],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:[EBP-158]           ;  
0040301B  |.  52            PUSH EDX                                 ; 
0040301C  |.  8D8D A8FDFFFF LEA ECX,DWORD PTR SS:[EBP-258]           ; 
00403022  |.  51            PUSH ECX                                 ; 
00403023  |.  E8 000F0900   CALL 《真正的.00493F28                   ;  这个CALL将机器码前20位同[EBP-34]中的十进制值连接起来存储在EAX中,数值为(56780123453362080553105342)
00403028  |.  83C4 08       ADD ESP,8                                ;  
0040302B  |.  33C9          XOR ECX,ECX                              ;  
0040302D  |.  8D9D A8FDFFFF LEA EBX,DWORD PTR SS:[EBP-258]           ;  [EBP-258]里存储的值为(56780123453362080553105342)
00403033  |>  8B45 CC       /MOV EAX,DWORD PTR SS:[EBP-34]           ;  
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:[ECX+64]           ;  
00403043  |.  41            |INC ECX                                 ;  
00403044  |.  F7EA          |IMUL EDX                                ;  
00403046  |.  0FBE13        |MOVSX EDX,BYTE PTR DS:[EBX]             ;  
00403049  |.  0345 C4       |ADD EAX,DWORD PTR SS:[EBP-3C]           ; 
0040304C  |.  43            |INC EBX
0040304D  |.  03C2          |ADD EAX,EDX                             ; 
0040304F  |.  83F9 14       |CMP ECX,14
00403052  |.  8945 C4       |MOV DWORD PTR SS:[EBP-3C],EAX           ;  
00403055  |.^ 7C DC         \JL SHORT 《真正的.00403033
00403057  |.  8D85 94FDFFFF LEA EAX,DWORD PTR SS:[EBP-26C]           ;  
0040305D  |.  50            PUSH EAX                                 ; 
0040305E  |.  8D8E E5030000 LEA ECX,DWORD PTR DS:[ESI+3E5]           ; 
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:[EBP-38],EAX
0040307B  |.  8B45 C8       MOV EAX,DWORD PTR SS:[EBP-38]            ;  
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:[EBP-258]           ;  
0040308A  |.  83C9 FF       OR ECX,FFFFFFFF
0040308D  |.  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
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:[EDI],DWORD PTR DS>
0040309E  |.  8BCA          MOV ECX,EDX
004030A0  |.  8D95 A8FDFFFF LEA EDX,DWORD PTR SS:[EBP-258]
004030A6  |.  83E1 03       AND ECX,3
004030A9  |.  F3:A4         REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
004030AB  |.  5F            POP EDI
004030AC  |.  5E            POP ESI
004030AD  |.  8B45 C8       MOV EAX,DWORD PTR SS:[EBP-38]            ;  
004030B0  |.  8986 10190000 MOV DWORD PTR DS:[ESI+1910],EAX
004030B6  |.  52            PUSH EDX
004030B7  |.  E8 FC0E0900   CALL 《真正的.00493FB8                   ;  计算上面数字长度为1A
004030BC  |.  59            POP ECX
004030BD  |.  8945 D0       MOV DWORD PTR SS:[EBP-30],EAX            ;  [EBP-30]=1A
004030C0  |.  8D85 A8FDFFFF LEA EAX,DWORD PTR SS:[EBP-258]           ;  
004030C6  |.  33C9          XOR ECX,ECX                              ;  
004030C8  |.  8945 AC       MOV DWORD PTR SS:[EBP-54],EAX            ;  
004030CB  |.  33DB          XOR EBX,EBX                              ;  
004030CD  |.  3B4D D0       CMP ECX,DWORD PTR SS:[EBP-30]            ;  
004030D0  |.  7D 17         JGE SHORT 《真正的.004030E9
004030D2  |>  8B55 AC       /MOV EDX,DWORD PTR SS:[EBP-54]           ;  [EBP-54]里存储的值为(56780123453362080553105342)
004030D5  |.  33C0          |XOR EAX,EAX                             ;  0
004030D7  |.  8A02          |MOV AL,BYTE PTR DS:[EDX]                ;  
004030D9  |.  8D51 01       |LEA EDX,DWORD PTR DS:[ECX+1]            ;  
004030DC  |.  F7EA          |IMUL EDX                                ;  
004030DE  |.  03D8          |ADD EBX,EAX                             ;  
004030E0  |.  41            |INC ECX                                 ;  
004030E1  |.  FF45 AC       |INC DWORD PTR SS:[EBP-54]
004030E4  |.  3B4D D0       |CMP ECX,DWORD PTR SS:[EBP-30]           ;  循环1A次
004030E7  |.^ 7C E9         \JL SHORT 《真正的.004030D2              ;  这个循环将[EBP-54]里的ASCII值逐一取出乘以自身所在位置数,并将结果累加起来放入EBX中,这里结果值为4624
004030E9  |>  33C9          XOR ECX,ECX                              ;  
004030EB  |>  8B86 A4030000 /MOV EAX,DWORD PTR DS:[ESI+3A4]          ;  
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:[ESI+3A4]           ;  
00403101  |.  8A86 E5030000 MOV AL,BYTE PTR DS:[ESI+3E5]             ; 
00403107  |.  8BCA          MOV ECX,EDX                              ;  
00403109  |.  8885 A8FEFFFF MOV BYTE PTR SS:[EBP-158],AL             ;  
0040310F  |.  8D1451        LEA EDX,DWORD PTR DS:[ECX+EDX*2]         ;  
00403112  |.  C1E2 04       SHL EDX,4                                ;  
00403115  |.  03D1          ADD EDX,ECX                              ; 
00403117  |.  8D1451        LEA EDX,DWORD PTR DS:[ECX+EDX*2]         ;  
0040311A  |.  03DA          ADD EBX,EDX                              ;  
0040311C  |.  8A96 E6030000 MOV DL,BYTE PTR DS:[ESI+3E6]             ;  
00403122  |.  8895 A9FEFFFF MOV BYTE PTR SS:[EBP-157],DL             ;  
00403128  |.  8A8E E7030000 MOV CL,BYTE PTR DS:[ESI+3E7]             ; 
0040312E  |.  888D AAFEFFFF MOV BYTE PTR SS:[EBP-156],CL             ; 
00403134  |.  8A86 E8030000 MOV AL,BYTE PTR DS:[ESI+3E8]             ;  
0040313A  |.  8885 ABFEFFFF MOV BYTE PTR SS:[EBP-155],AL             ;  
00403140  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]             ; 
00403143  |.  8A96 E9030000 MOV DL,BYTE PTR DS:[ESI+3E9]             ;  
00403149  |.  8895 ACFEFFFF MOV BYTE PTR SS:[EBP-154],DL             ;  
0040314F  |.  8D95 A8FEFFFF LEA EDX,DWORD PTR SS:[EBP-158]           ;  
00403155  |.  C685 ADFEFFFF>MOV BYTE PTR SS:[EBP-153],0              ;  
0040315C  |.  66:C745 E4 20>MOV WORD PTR SS:[EBP-1C],20              ;  
00403162  |.  E8 ADED0900   CALL 《真正的.004A1F14
00403167  |.  8BD0          MOV EDX,EAX
00403169  |.  FF45 F0       INC DWORD PTR SS:[EBP-10]
0040316C  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
0040316F  |.  E8 CCEE0900   CALL 《真正的.004A2040
00403174  |.  FF4D F0       DEC DWORD PTR SS:[EBP-10]
00403177  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
0040317A  |.  BA 02000000   MOV EDX,2
0040317F  |.  E8 8CEE0900   CALL 《真正的.004A2010
00403184  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ;  
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:[ESI+624]
004031A4  |.  81E2 FFFEFFFF AND EDX,FFFFFEFF
004031AA  |.  8996 24060000 MOV DWORD PTR DS:[ESI+624],EDX
004031B0  |>  F6C1 02       TEST CL,2
004031B3  |.  74 0D         JE SHORT 《真正的.004031C2
004031B5  |.  A1 E8844B00   MOV EAX,DWORD PTR DS:[4B84E8]
004031BA  |.  33D2          XOR EDX,EDX
004031BC  |.  8990 6C020000 MOV DWORD PTR DS:[EAX+26C],EDX
004031C2  |>  F6C1 04       TEST CL,4
004031C5  |.  74 10         JE SHORT 《真正的.004031D7
004031C7  |.  C786 20060000>MOV DWORD PTR DS:[ESI+620],1
004031D1  |.  FF86 34060000 INC DWORD PTR DS:[ESI+634]
004031D7  |>  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004031DA  |.  E8 7DF10900   CALL 《真正的.004A235C
004031DF  |.  8BD8          MOV EBX,EAX
004031E1  |>  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
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:[EBP-4]
004031F8  |.  FF4D F0       DEC DWORD PTR SS:[EBP-10]
004031FB  |.  E8 10EE0900   CALL 《真正的.004A2010
00403200  |.  58            POP EAX
00403201  |.  8B55 D4       MOV EDX,DWORD PTR SS:[EBP-2C]
00403204  |.  64:8915 00000>MOV DWORD PTR FS:[0],EDX
0040320B  |.  E9 F5010000   JMP 《真正的.00403405                    ;  跳向失败
00403210  |>  33C9          XOR ECX,ECX                              ;  
00403212  |>  8B45 C0       /MOV EAX,DWORD PTR SS:[EBP-40]           ;  
00403215  |.  03C3          |ADD EAX,EBX                             ;  
00403217  |.  2BC1          |SUB EAX,ECX
00403219  |.  8945 C0       |MOV DWORD PTR SS:[EBP-40],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:[EBP-40]           ;  
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:[ESI+3A8],1             ;  
0040323B  |.  81C3 CF070000 ADD EBX,7CF                              ;  
00403241  |.  33C9          XOR ECX,ECX                              ;  
00403243  |.  899E 40190000 MOV DWORD PTR DS:[ESI+1940],EBX          ;  
00403249  |.  8D85 94FDFFFF LEA EAX,DWORD PTR SS:[EBP-26C]           ; 
0040324F  |>  33D2          /XOR EDX,EDX                             ;  
00403251  |.  41            |INC ECX                                 ;  
00403252  |.  8A10          |MOV DL,BYTE PTR DS:[EAX]                ;  
00403254  |.  40            |INC EAX
00403255  |.  3155 BC       |XOR DWORD PTR SS:[EBP-44],EDX           ;  
00403258  |.  83F9 0A       |CMP ECX,0A
0040325B  |.^ 7C F2         \JL SHORT 《真正的.0040324F              ;  
0040325D  |.  8D9E E5040000 LEA EBX,DWORD PTR DS:[ESI+4E5]           ;  
00403263  |.  53            PUSH EBX
00403264  |.  E8 4F0D0900   CALL 《真正的.00493FB8
00403269  |.  59            POP ECX
0040326A  |.  8945 CC       MOV DWORD PTR SS:[EBP-34],EAX            ; 
0040326D  |.  8B45 CC       MOV EAX,DWORD PTR SS:[EBP-34]
00403270  |.  40            INC EAX                                  ;  
00403271  |.  50            PUSH EAX                                 ; 
00403272  |.  E8 09040900   CALL 《真正的.00493680                   ; 
00403277  |.  59            POP ECX
00403278  |.  8945 C8       MOV DWORD PTR SS:[EBP-38],EAX            ;  
0040327B  |.  8B55 C8       MOV EDX,DWORD PTR SS:[EBP-38]
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:[EDI]
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:[EDI],DWORD PTR DS>
0040329A  |.  8BCA          MOV ECX,EDX                              ;  
0040329C  |.  83E1 03       AND ECX,3                                ; 
0040329F  |.  F3:A4         REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
004032A1  |.  8B45 C8       MOV EAX,DWORD PTR SS:[EBP-38]            ;  
004032A4  |.  8B55 CC       MOV EDX,DWORD PTR SS:[EBP-34]            ;  
004032A7  |.  5F            POP EDI
004032A8  |.  5E            POP ESI
004032A9  |.  C60410 00     MOV BYTE PTR DS:[EAX+EDX],0
004032AD  |.  8D4D CC       LEA ECX,DWORD PTR SS:[EBP-34]            ;  
004032B0  |.  51            PUSH ECX
004032B1  |.  8B45 C8       MOV EAX,DWORD PTR SS:[EBP-38]            ;  
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:[EBP-38]           ;  
004032CD  |.  0FBE1410      |MOVSX EDX,BYTE PTR DS:[EAX+EDX]         ;  
004032D1  |.  3155 B8       |XOR DWORD PTR SS:[EBP-48],EDX           ;  
004032D4  |.  8B4D CC       |MOV ECX,DWORD PTR SS:[EBP-34]           ;  
004032D7  |.  8B55 CC       |MOV EDX,DWORD PTR SS:[EBP-34]           ;  
004032DA  |.  8BC1          |MOV EAX,ECX                             ;  
004032DC  |.  8D0C88        |LEA ECX,DWORD PTR DS:[EAX+ECX*4]        ;  
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:[ECX+EDX*2]        ;  
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:[EBP-38]           ;  
00403305  |.  8B55 CC       |MOV EDX,DWORD PTR SS:[EBP-34]           ;  
00403308  |.  C60410 00     |MOV BYTE PTR DS:[EAX+EDX],0             ;  
0040330C  |.  33C9          |XOR ECX,ECX                             ;  
0040330E  |.  8B45 C8       |MOV EAX,DWORD PTR SS:[EBP-38]           ;  
00403311  |.  8BD0          |MOV EDX,EAX
00403313  |.  8955 A8       |MOV DWORD PTR SS:[EBP-58],EDX           ;  
00403316  |.  3B4D CC       |CMP ECX,DWORD PTR SS:[EBP-34]           ; 
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:[EBP+EAX-26C]
00403330  |.  8B45 A8       ||MOV EAX,DWORD PTR SS:[EBP-58]
00403333  |.  3010          ||XOR BYTE PTR DS:[EAX],DL
00403335  |.  41            ||INC ECX
00403336  |.  FF45 A8       ||INC DWORD PTR SS:[EBP-58]
00403339  |.  3B4D CC       ||CMP ECX,DWORD PTR SS:[EBP-34]
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:[EBP-40]            ; 
0040334E  |.  8B45 B4       MOV EAX,DWORD PTR SS:[EBP-4C]            ;  
00403351  |.  8BCF          MOV ECX,EDI                              ;  
00403353  |.  C1E1 02       SHL ECX,2                                ; 
00403356  |.  8D0440        LEA EAX,DWORD PTR DS:[EAX+EAX*2]         ; 
00403359  |.  C1E2 03       SHL EDX,3                                ; 
0040335C  |.  03D1          ADD EDX,ECX                              ;  
0040335E  |.  03D0          ADD EDX,EAX                              ;  
00403360  |.  8955 C4       MOV DWORD PTR SS:[EBP-3C],EDX            ; 
00403363  |.  8B55 BC       MOV EDX,DWORD PTR SS:[EBP-44]            ; 
00403366  |.  8B4D B4       MOV ECX,DWORD PTR SS:[EBP-4C]            ; 
00403369  |.  C1E2 02       SHL EDX,2                                ;  
0040336C  |.  C1E7 03       SHL EDI,3                                ;  
0040336F  |.  8D0C49        LEA ECX,DWORD PTR DS:[ECX+ECX*2]         ;  
00403372  |.  03FA          ADD EDI,EDX                              ;  
00403374  |.  03F9          ADD EDI,ECX                              ;  
00403376  |.  897D C0       MOV DWORD PTR SS:[EBP-40],EDI            ;  
00403379  |.  8B45 B4       MOV EAX,DWORD PTR SS:[EBP-4C]            ;  
0040337C  |.  8B4D B8       MOV ECX,DWORD PTR SS:[EBP-48]            ;  
0040337F  |.  C1E1 02       SHL ECX,2                                ; 
00403382  |.  8B7D BC       MOV EDI,DWORD PTR SS:[EBP-44]            ;  
00403385  |.  8D0440        LEA EAX,DWORD PTR DS:[EAX+EAX*2]         ;  
00403388  |.  8B55 B4       MOV EDX,DWORD PTR SS:[EBP-4C]            ;  
0040338B  |.  03C8          ADD ECX,EAX                              ; 
0040338D  |.  8B45 B8       MOV EAX,DWORD PTR SS:[EBP-48]            ;  
00403390  |.  83C1 03       ADD ECX,3                                ;  
00403393  |.  D3E7          SHL EDI,CL                               ;  
00403395  |.  8B4D B4       MOV ECX,DWORD PTR SS:[EBP-4C]            ;  
00403398  |.  C1E0 03       SHL EAX,3                                ; 
0040339B  |.  C1E2 02       SHL EDX,2                                ; 
0040339E  |.  8D0C49        LEA ECX,DWORD PTR DS:[ECX+ECX*2]         ;  
004033A1  |.  03C2          ADD EAX,EDX                              ; 
004033A3  |.  03C1          ADD EAX,ECX                              ;  
004033A5  |.  8945 BC       MOV DWORD PTR SS:[EBP-44],EAX            ;  
004033A8  |.  8B45 C8       MOV EAX,DWORD PTR SS:[EBP-38]            ;  
004033AB  |.  05 D0000000   ADD EAX,0D0                              ;  
004033B0  |.  8986 B0060000 MOV DWORD PTR DS:[ESI+6B0],EAX           ; 
004033B6  |.  8B45 B4       MOV EAX,DWORD PTR SS:[EBP-4C]            ; 
004033B9  |.  8B55 B4       MOV EDX,DWORD PTR SS:[EBP-4C]            ;  
004033BC  |.  8B4D C0       MOV ECX,DWORD PTR SS:[EBP-40]            ; 
004033BF  |.  C1E1 02       SHL ECX,2                                ;  
004033C2  |.  8D0440        LEA EAX,DWORD PTR DS:[EAX+EAX*2]         ;  
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:[EBP-48],EDX            ;  
004033D1  |.  8B55 C4       MOV EDX,DWORD PTR SS:[EBP-3C]            ;  
004033D4  |.  8B45 B4       MOV EAX,DWORD PTR SS:[EBP-4C]            ;  
004033D7  |.  C1E1 02       SHL ECX,2                                ; 
004033DA  |.  C1E2 03       SHL EDX,3                                ;  
004033DD  |.  8D0440        LEA EAX,DWORD PTR DS:[EAX+EAX*2]         ;  
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:[EBP-4C],EDX            ;  
004033E9  |.  50            PUSH EAX
004033EA  |.  FF4D F0       DEC DWORD PTR SS:[EBP-10]                ;  
004033ED  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ;  
004033F0  |.  BA 02000000   MOV EDX,2
004033F5  |.  E8 16EC0900   CALL 《真正的.004A2010
004033FA  |.  58            POP EAX
004033FB  |.  8B55 D4       MOV EDX,DWORD PTR SS:[EBP-2C]            ;  
004033FE  |.  64:8915 00000>MOV DWORD PTR FS:[0],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[0] and DL)==0)
    DL=DL/2;
  else
    ax=(ax xor 1021);
    DL=DL/2;
  }while(DL!=0)
   ECX++;
}
EAX=78427751  
最终获得:
机器码: 5678012345336208055332657158863938205016   
用户名: dgrzh
注册码: 179560600026801330545