庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>安全技术>软件破解>算法研究>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

调酒师 CollegeBar V8.1 注册算法分析-VB6 下

 作者:本站收集   日期:2005-5-28
字号选择〖 〗/ 双击滚屏 单击停止   
===========================================================
0043D193   . 66:8B45 DC     MOV AX,WORD PTR SS:[EBP-24]   ; 返回-1
0043D197   . 5F             POP EDI
0043D198   . 5E             POP ESI
0043D199   . 64:890D 000000>MOV DWORD PTR FS:[0],ECX
0043D1A0   . 5B             POP EBX
0043D1A1   . 8BE5           MOV ESP,EBP
0043D1A3   . 5D             POP EBP
0043D1A4   . C2 0800        RETN 8
到这里,算法分析就算完了,奇怪的是注册码有25位,这里虽然算法复杂,却只验证了4位(4,13,14,25),令人疑惑。我的试炼码是1111122222333334444455555, 根据这里的分析,改成1117122222338934444455551,居然也毫无问题地通过了。如果回到上层函数仔细观察,就会发现另外有一个函数进行了另一次像样的多的验证,但结果却没有用到。其代码如下:

0043A10B   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]          ;名字(原来形式)
0043A10E   . 8985 74FFFFFF  MOV DWORD PTR SS:[EBP-8C],EAX    
0043A114   . C785 6CFFFFFF >MOV DWORD PTR SS:[EBP-94],4008
0043A11E   . 8D8D 6CFFFFFF  LEA ECX,DWORD PTR SS:[EBP-94]    
0043A124   . 51             PUSH ECX
0043A125   . 8D55 9C        LEA EDX,DWORD PTR SS:[EBP-64]
0043A128   . 52             PUSH EDX
0043A129   . FF15 E8104000  CALL tcTrimVar ;去除空格
0043A12F   . 8D45 9C        LEA EAX,DWORD PTR SS:[EBP-64]
0043A132   . 50             PUSH EAX
0043A133   . 8D4D 8C        LEA ECX,DWORD PTR SS:[EBP-74]
0043A136   . 51             PUSH ECX
0043A137   . FF15 84104000  CALL MSVBVM60.__vbaLenVar         ;取得名字长度
0043A13D   . 50             PUSH EAX
0043A13E   . FF15 10124000  CALL MSVBVM60.__vbaI2Var          ;转成整型 integer
0043A144   . 66:8985 38FFFF>MOV WORD PTR SS:[EBP-C8],AX
0043A14B   . 66:C785 3CFFFF>MOV WORD PTR SS:[EBP-C4],1     ;所引增量为1
0043A154   . 66:C745 DC 010>MOV WORD PTR SS:[EBP-24],1     ;索引从1开始
0043A15A   . 8D4D 9C        LEA ECX,DWORD PTR SS:[EBP-64]
0043A15D   . FF15 2C104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVar>]
0043A163   . EB 15          JMP SHORT CollegeB.0043A17A
0043A165   > 66:8B55 DC     MOV DX,WORD PTR SS:[EBP-24]   ;取索引
0043A169   . 66:0395 3CFFFF>ADD DX,WORD PTR SS:[EBP-C4]   ;增1至下一个字符
0043A170   . 0F80 E7070000  JO CollegeB.0043A95D
0043A176   . 66:8955 DC     MOV WORD PTR SS:[EBP-24],DX
0043A17A   > 66:8B45 DC     MOV AX,WORD PTR SS:[EBP-24] ;字符索引
0043A17E   . 66:3B85 38FFFF>CMP AX,WORD PTR SS:[EBP-C8] ; 名字长度
0043A185   . 0F8F 0A020000  JG CollegeB.0043A395
0043A18B   . C745 FC 040000>MOV DWORD PTR SS:[EBP-4],4      
0043A192   . C745 A4 010000>MOV DWORD PTR SS:[EBP-5C],1
0043A199   . C745 9C 020000>MOV DWORD PTR SS:[EBP-64],2
0043A1A0   . 8D4D 9C        LEA ECX,DWORD PTR SS:[EBP-64]
0043A1A3   . 51             PUSH ECX                      ;  variant类型,整数1
0043A1A4   . 0FBF55 DC      MOVSX EDX,WORD PTR SS:[EBP-24]
0043A1A8   . 52             PUSH EDX
0043A1A9   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
0043A1AC   . 8B08           MOV ECX,DWORD PTR DS:[EAX]
0043A1AE   . 51             PUSH ECX
0043A1AF   . FF15 00114000  CALL rtcMidCharBStr        ;取注册名字的一个字符
0043A1B5   . 8BD0           MOV EDX,EAX
0043A1B7   . 8D4D B4        LEA ECX,DWORD PTR SS:[EBP-4C]
0043A1BA   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]        ;  MSVBVM60.__vbaStrMove
0043A1C0   . 50             PUSH EAX
0043A1C1   . FF15 58104000  CALL MSVBVM60.rtcAnsivalueBstr    ;  该字符的ascii
0043A1C7   . 66:8985 48FFFF>MOV WORD PTR SS:[EBP-B8],AX      ;  存入[ebp-B8]
0043A1CE   . C745 94 010000>MOV DWORD PTR SS:[EBP-6C],1
0043A1D5   . C745 8C 020000>MOV DWORD PTR SS:[EBP-74],2
0043A1DC   . 8D55 8C        LEA EDX,DWORD PTR SS:[EBP-74]
0043A1DF   . 52             PUSH EDX
0043A1E0   . 0FBF45 DC      MOVSX EAX,WORD PTR SS:[EBP-24]
0043A1E4   . 50             PUSH EAX
0043A1E5   . 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
0043A1E8   . 8B11           MOV EDX,DWORD PTR DS:[ECX]
0043A1EA   . 52             PUSH EDX
0043A1EB   . FF15 00114000  CALL rtcMidCharBStr        ;取同一个字符
0043A1F1   . 8BD0           MOV EDX,EAX
0043A1F3   . 8D4D B0        LEA ECX,DWORD PTR SS:[EBP-50]
0043A1F6   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]        ;  MSVBVM60.__vbaStrMove
0043A1FC   . 50             PUSH EAX
0043A1FD   . FF15 58104000  CALL MSVBVM60.rtcAnsivalueBstr   ;  该字符的ascii
0043A203   . 66:8985 44FFFF>MOV WORD PTR SS:[EBP-BC],AX      ;存入此处
0043A20A   . C745 84 010000>MOV DWORD PTR SS:[EBP-7C],1
0043A211   . C785 7CFFFFFF >MOV DWORD PTR SS:[EBP-84],2
0043A21B   . 8D85 7CFFFFFF  LEA EAX,DWORD PTR SS:[EBP-84]
0043A221   . 50             PUSH EAX
0043A222   . 0FBF4D DC      MOVSX ECX,WORD PTR SS:[EBP-24]
0043A226   . 51             PUSH ECX
0043A227   . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+8]
0043A22A   . 8B02           MOV EAX,DWORD PTR DS:[EDX]
0043A22C   . 50             PUSH EAX
0043A22D   . FF15 00114000  CALL rtcMidCharBStr        ;又来一遍(真笨)
0043A233   . 8BD0           MOV EDX,EAX
0043A235   . 8D4D AC        LEA ECX,DWORD PTR SS:[EBP-54]
0043A238   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]        ;  MSVBVM60.__vbaStrMove
0043A23E   . 50             PUSH EAX
0043A23F   . FF15 58104000  CALL MSVBVM60.rtcAnsivalueBstr   ;  该字符的ascii
0043A245   . 66:8985 40FFFF>MOV WORD PTR SS:[EBP-C0],AX      ;存入此处
0043A24C   . 66:8B8D 48FFFF>MOV CX,WORD PTR SS:[EBP-B8]      ;第一遍取出的结果
0043A253   . 66:0FAF8D 44FF>IMUL CX,WORD PTR SS:[EBP-BC]     ;乘以第二编的结果
0043A25B   . 0F80 FC060000  JO CollegeB.0043A95D
0043A261   . 0FBFD1         MOVSX EDX,CX
0043A264   . 8995 08FFFFFF  MOV DWORD PTR SS:[EBP-F8],EDX    ;结果存在这里
0043A26A   . DB85 08FFFFFF  FILD DWORD PTR SS:[EBP-F8]       ;作为整数载入
0043A270   . DD9D 00FFFFFF  FSTP QWORD PTR SS:[EBP-100]      ;存成浮点
0043A276   . DD45 D4        FLD QWORD PTR SS:[EBP-2C]        ;加到总和中
0043A279   . DC85 00FFFFFF  FADD QWORD PTR SS:[EBP-100]      
0043A27F   . DFE0           FSTSW AX
0043A281   . A8 0D          TEST AL,0D
0043A283   . 0F85 CF060000  JNZ CollegeB.0043A958
0043A289   . DD9D F8FEFFFF  FSTP QWORD PTR SS:[EBP-108]      ;结果暂时存在此处
0043A28F   . 68 00000040    PUSH 40000000
0043A294   . 6A 00          PUSH 0                           ; 在堆栈上构成浮点数2.0
0043A296   . 0FBF85 40FFFFF>MOVSX EAX,WORD PTR SS:[EBP-C0]   ;第三遍的结果
0043A29D   . 8985 F4FEFFFF  MOV DWORD PTR SS:[EBP-10C],EAX
0043A2A3   . DB85 F4FEFFFF  FILD DWORD PTR SS:[EBP-10C]      ;
0043A2A9   . DD9D ECFEFFFF  FSTP QWORD PTR SS:[EBP-114]      ;
0043A2AF   . 8B8D F0FEFFFF  MOV ECX,DWORD PTR SS:[EBP-110]
0043A2B5   . 51             PUSH ECX
0043A2B6   . 8B95 ECFEFFFF  MOV EDX,DWORD PTR SS:[EBP-114]
0043A2BC   . 52             PUSH EDX                        
0043A2BD   . FF15 68124000  CALL MSVBVM60.__vbaPowerR8       ; 求平方
0043A2C3   . DC85 F8FEFFFF  FADD QWORD PTR SS:[EBP-108]      ;加到上面的结果中
0043A2C9   . DD5D D4        FSTP QWORD PTR SS:[EBP-2C]       ; 总数存回[ebp-2c]

                                      以上代码实际上计算x*x+x**2 = 2 * x**2

==============================================
0043A307   . C745 FC 050000>MOV DWORD PTR SS:[EBP-4],5
0043A30E   . DD45 D4        FLD QWORD PTR SS:[EBP-2C]         ;结果装入
0043A311   . FF15 A8124000  CALL MSVBVM60.__vbaFpI4   ;转成长整型
0043A317   . 8BF0           MOV ESI,EAX                  
0043A319   . 81E6 01000080  AND ESI,80000001   ;检查最高位和最低位
0043A31F   . 79 05          JNS SHORT CollegeB.0043A326
0043A321   . 4E             DEC ESI
0043A322   . 83CE FE        OR ESI,FFFFFFFE
0043A325   . 46             INC ESI
0043A326   > F7DE           NEG ESI
0043A328   . 1BF6           SBB ESI,ESI
0043A32A   . F7DE           NEG ESI           ;最后反映的只是最低位,即奇偶位
0043A32C   . DD45 D4        FLD QWORD PTR SS:[EBP-2C]         ;再次装入运算结果
0043A32F   . FF15 A8124000  CALL MSVBVM60.__vbaFpI4 ;再次转型(VB真笨得可以)
0043A335   . 99             CDQ      ;符号扩展
0043A336   . B9 03000000    MOV ECX,3
0043A33B   . F7F9           IDIV ECX        ;除以3
0043A33D   . F7DA           NEG EDX    ;余数变号
0043A33F   . 1BD2           SBB EDX,EDX  ;借位减
0043A341   . F7DA           NEG EDX     ;变号
0043A343   . 23F2           AND ESI,EDX ;和上面的结果按位与
0043A345   . 85F6           TEST ESI,ESI      ;这里的条件是“奇数且不被3整除”
0043A347   . 75 40          JNZ SHORT CollegeB.0043A389 ;条件满足则继续
0043A349   . C745 FC 060000>MOV DWORD PTR SS:[EBP-4],6  ;这里不知道是什么标志
0043A350   . 66:8B55 DC     MOV DX,WORD PTR SS:[EBP-24] ;条件不满足则取字符索引
0043A354   . 66:6BD2 03     IMUL DX,DX,3                ;乘以3
0043A358   . 0F80 FF050000  JO CollegeB.0043A95D
0043A35E   . 0FBFC2         MOVSX EAX,DX                ;并加到结果中
0043A361   . 8985 E8FEFFFF  MOV DWORD PTR SS:[EBP-118],EAX
0043A367   . DB85 E8FEFFFF  FILD DWORD PTR SS:[EBP-118]
0043A36D   . DD9D E0FEFFFF  FSTP QWORD PTR SS:[EBP-120]
0043A373   . DD45 D4        FLD QWORD PTR SS:[EBP-2C]
0043A376   . DC85 E0FEFFFF  FADD QWORD PTR SS:[EBP-120]
0043A37C   . DD5D D4        FSTP QWORD PTR SS:[EBP-2C]                          ;  ebp-2c again
0043A37F   . DFE0           FSTSW AX
0043A381   . A8 0D          TEST AL,0D
0043A383   . 0F85 CF050000  JNZ CollegeB.0043A958
0043A389   > C745 FC 080000>MOV DWORD PTR SS:[EBP-4],8
0043A390   .^E9 D0FDFFFF    JMP CollegeB.0043A165     ;下一轮

以上代码从名字的第一个字符开始计算每一个字符的 2*x**2,并将结果相加。每一步的结果如果不满足条件
“奇数且不被3整除”就再加上当前索引值的3倍。直到每一个字符都处理完。结果存在[ebp-2c]处。

下面的代码又进行了一轮完全同样的计算,结果也完全相同,存在[ebp-44]处。令人费解的重复劳动。省略。接下去:

0043A626   > C745 FC 0F0000>MOV DWORD PTR SS:[EBP-4],0F
0043A62D   . 8B4D C0        MOV ECX,DWORD PTR SS:[EBP-40]
0043A630   . 51             PUSH ECX
0043A631   . 8B55 BC        MOV EDX,DWORD PTR SS:[EBP-44]     ;取的(第二次计算)计算结果
0043A634   . 52             PUSH EDX
0043A635   . FF15 80114000  CALL [<&MSVBVM60.__vbaStrR8>]     ;R8转成string
0043A63B   . 8BD0           MOV EDX,EAX
0043A63D   . 8D4D B4        LEA ECX,DWORD PTR SS:[EBP-4C]
0043A640   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]        ;  MSVBVM60.__vbaStrMove
0043A646   . 50             PUSH EAX
0043A647   . FF15 D0114000  CALL rtcStrReverse       ;字符串逆序
0043A64D   . 8BD0           MOV EDX,EAX
0043A64F   . 8D4D B0        LEA ECX,DWORD PTR SS:[EBP-50]
0043A652   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]  
0043A658   . 50             PUSH EAX
0043A659   . FF15 3C124000  CALL [<&MSVBVM60.__vbaR8Str>]   ;转回R8
0043A65F   . DC05 381B4000  FADD QWORD PTR DS:[401B38]    ;加上此处的内定值 38473.0
0043A665   . DD5D BC        FSTP QWORD PTR SS:[EBP-44]    ;存回结果
.......................................
0043A685   . C745 FC 100000>MOV DWORD PTR SS:[EBP-4],10
0043A68C   . 8B55 C0        MOV EDX,DWORD PTR SS:[EBP-40]
0043A68F   . 52             PUSH EDX
0043A690   . 8B45 BC        MOV EAX,DWORD PTR SS:[EBP-44]
0043A693   . 50             PUSH EAX
0043A694   . FF15 80114000  CALL [<&MSVBVM60.__vbaStrR8>]  ;又转成字符
0043A69A   . 8BD0           MOV EDX,EAX
0043A69C   . 8D4D B4        LEA ECX,DWORD PTR SS:[EBP-4C]
0043A69F   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]  
0043A6A5   . 50             PUSH EAX
0043A6A6   . FF15 D0114000  CALL MSVBVM60.rtcStrReverse  ;逆序
0043A6AC   . 8BD0           MOV EDX,EAX
0043A6AE   . 8D4D B0        LEA ECX,DWORD PTR SS:[EBP-50]
0043A6B1   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]      
0043A6B7   . 50             PUSH EAX
0043A6B8   . FF15 3C124000  CALL [<&MSVBVM60.__vbaR8Str>]  ;又回到R8
0043A6BE   . DCC0           FADD ST(0),ST(0)               ;加倍
0043A6C0   . DD5D BC        FSTP QWORD PTR SS:[EBP-44]     ;存回
............................................
0043A6E0   . C745 FC 110000>MOV DWORD PTR SS:[EBP-4],11
0043A6E7   . 8B45 D8        MOV EAX,DWORD PTR SS:[EBP-28]      ;取第一次计算结果
0043A6EA   . 50             PUSH EAX
0043A6EB   . 8B4D D4        MOV ECX,DWORD PTR SS:[EBP-2C]
0043A6EE   . 51             PUSH ECX
0043A6EF   . FF15 80114000  CALL MSVBVM60.__vbaStrR8 ;转成String
0043A6F5   . 8BD0           MOV EDX,EAX
0043A6F7   . 8D4D B4        LEA ECX,DWORD PTR SS:[EBP-4C]
0043A6FA   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]    
0043A700   . 50             PUSH EAX
0043A701   . FF15 D0114000  CALL  MSVBVM60.rtcStrReverse ;逆序
0043A707   . 8BD0           MOV EDX,EAX
0043A709   . 8D4D B0        LEA ECX,DWORD PTR SS:[EBP-50]
0043A70C   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]    
0043A712   . 50             PUSH EAX
0043A713   . FF15 3C124000  CALL MSVBVM60.__vbaR8Str ;转回R8
0043A719   . DD5D D4        FSTP QWORD PTR SS:[EBP-2C] ;存回
....................................................
0043A736   . 68 00000040    PUSH 40000000
0043A73B   . 6A 00          PUSH 0           ;  浮点数 2.0
0043A73D   . 8B4D D8        MOV ECX,DWORD PTR SS:[EBP-28]
0043A740   . 51             PUSH ECX
0043A741   . 8B55 D4        MOV EDX,DWORD PTR SS:[EBP-2C]
0043A744   . 52             PUSH EDX
0043A745   . FF15 68124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaPowerR8>] ;  结果平方
0043A74B   . DD5D D4        FSTP QWORD PTR SS:[EBP-2C]                  ;  存回
0043A74E   . C745 FC 130000>MOV DWORD PTR SS:[EBP-4],13
0043A755   . C745 A4 0C0000>MOV DWORD PTR SS:[EBP-5C],0C
0043A75C   . C745 9C 020000>MOV DWORD PTR SS:[EBP-64],2
0043A763   . 8D45 9C        LEA EAX,DWORD PTR SS:[EBP-64]    ;  var type integer value 0C
0043A766   . 50             PUSH EAX
0043A767   . 6A 05          PUSH 5
0043A769   . 8B4D 0C        MOV ECX,DWORD PTR SS:[EBP+C]    ;注册码
0043A76C   . 8B11           MOV EDX,DWORD PTR DS:[ECX]      
0043A76E   . 52             PUSH EDX
0043A76F   . FF15 00114000  CALL rtcMidCharBStr     ;取注册码子串,从第5个字符开始,取0xC个字符
0043A775   . 8BD0           MOV EDX,EAX            
0043A777   . 8D4D B4        LEA ECX,DWORD PTR SS:[EBP-4C]
0043A77A   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]      
0043A780   . 50             PUSH EAX
0043A781   . FF15 3C124000  CALL [<&MSVBVM60.__vbaR8Str>]          ;  转成R8
0043A787   . DD5D C4        FSTP QWORD PTR SS:[EBP-3C]          ;存在 ebp-3C 处
===========================================

0043A79C   . C745 FC 140000>MOV DWORD PTR SS:[EBP-4],14
0043A7A3   . DD45 C4        FLD QWORD PTR SS:[EBP-3C]    ; 该子串表示的实数
0043A7A6   . DC05 301B4000  FADD QWORD PTR DS:[401B30]   ;加上内定值 334.0
0043A7AC   . DD5D C4        FSTP QWORD PTR SS:[EBP-3C]   ;存回
0043A7AF   . DFE0           FSTSW AX
0043A7B1   . A8 0D          TEST AL,0D
0043A7B3   . 0F85 9F010000  JNZ CollegeB.0043A958
0043A7B9   . C745 FC 150000>MOV DWORD PTR SS:[EBP-4],15
0043A7C0   . 8B45 C8        MOV EAX,DWORD PTR SS:[EBP-38]
0043A7C3   . 50             PUSH EAX
0043A7C4   . 8B4D C4        MOV ECX,DWORD PTR SS:[EBP-3C]
0043A7C7   . 51             PUSH ECX
0043A7C8   . FF15 80114000  CALL [<&MSVBVM60.__vbaStrR8>]    ;转成String
0043A7CE   . 8BD0           MOV EDX,EAX
0043A7D0   . 8D4D B4        LEA ECX,DWORD PTR SS:[EBP-4C]
0043A7D3   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]      
0043A7D9   . 50             PUSH EAX
0043A7DA   . FF15 D0114000  CALL  MSVBVM60.rtcStrReverse ;逆序
0043A7E0   . 8BD0           MOV EDX,EAX
0043A7E2   . 8D4D B0        LEA ECX,DWORD PTR SS:[EBP-50]
0043A7E5   . FF15 C8124000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>]
0043A7EB   . 50             PUSH EAX
0043A7EC   . FF15 3C124000  CALL MSVBVM60.__vbaR8Str ;转回R8
0043A7F2   . DD5D C4        FSTP QWORD PTR SS:[EBP-3C]      ;存回
======================================

0043A808   . C745 FC 160000>MOV DWORD PTR SS:[EBP-4],16
0043A80F   . DD45 C4        FLD QWORD PTR SS:[EBP-3C]               ;装入结果
0043A812   . DC25 281B4000  FSUB QWORD PTR DS:[401B28]              ; 减去内定值1032.0
0043A818   . DD5D C4        FSTP QWORD PTR SS:[EBP-3C]              ; 存回
0043A81B   . DFE0           FSTSW AX
0043A81D   . A8 0D          TEST AL,0D
0043A81F   . 0F85 33010000  JNZ CollegeB.0043A958
0043A825   . C745 FC 170000>MOV DWORD PTR SS:[EBP-4],17
0043A82C   . DD45 C4        FLD QWORD PTR SS:[EBP-3C]               ;  这里的结果
0043A82F   . DC5D D4        FCOMP QWORD PTR SS:[EBP-2C]             ;  与[ebp-2c]处的结果作实数比较
0043A832   . DFE0           FSTSW AX
0043A834   . F6C4 40        TEST AH,40                              ;  相等?
0043A837   . 74 0D          JE SHORT CollegeB.0043A846              ;  if not equal then jmp
0043A839   . C745 FC 180000>MOV DWORD PTR SS:[EBP-4],18
0043A840   . 66:C745 D0 FFF>MOV WORD PTR SS:[EBP-30],0FFFF          ;  若相等则[ebp-30]=-1,看上去应该是成功标志
0043A846   > C745 FC 1A0000>MOV DWORD PTR SS:[EBP-4],1A             ;  但随后的代码使之无论如何不为-1
0043A84D   . 66:C785 28FFFF>MOV WORD PTR SS:[EBP-D8],4
0043A856   . 66:C785 2CFFFF>MOV WORD PTR SS:[EBP-D4],1
0043A85F   . 66:C745 DC 010>MOV WORD PTR SS:[EBP-24],1
........................
..............
..........
0043A8F9   . C745 FC 200000>MOV DWORD PTR SS:[EBP-4],20
0043A900   . 66:C745 D0 000>MOV WORD PTR SS:[EBP-30],0
0043A906   > 9B             WAIT
0043A907   . 68 41A94300    PUSH CollegeB.0043A941
0043A90C   . EB 32          JMP SHORT CollegeB.0043A940

========================================
0043A940   > C3             RETN                                ; RET used as a jump to 0043A941
0043A941   > 66:8B45 D0     MOV AX,WORD PTR SS:[EBP-30]         ; EBP-30 处为返回值
0043A945   . 8B4D E0        MOV ECX,DWORD PTR SS:[EBP-20]
0043A948   . 64:890D 000000>MOV DWORD PTR FS:[0],ECX
0043A94F   . 5F             POP EDI
0043A950   . 5E             POP ESI
0043A951   . 5B             POP EBX
0043A952   . 8BE5           MOV ESP,EBP
0043A954   . 5D             POP EBP
0043A955   . C2 0800        RETN 8

后记:这里虽然很象验证代码,但有点自相矛盾,而且最后也没有用到这里的任何结果。不解。
====================================================
【分析总结】
自己去总结吧,只要用第一段代码就行了。
====================================================

上一篇:小护士 V1.52简单算法分析    下一篇:调酒师 CollegeBar V8.1 注册算法分析-VB6 上  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-5-28
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿