- UID
- 34269
注册时间2007-8-13
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 郁闷 2022-11-10 23:42 |
---|
签到天数: 5 天 [LV.2]偶尔看看I
|
作者:dewar
【文章标题】: XX桌面日历2.53算法分析
【文章作者】: dewar
【作者主页】: 无
【软件名称】: XX桌面日历2.53
【下载地址】: 自己搜索下载
【加壳方式】: UPX
【编写语言】: VB
【操作平台】: WINXP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
不久前分析过它的2.0版,前几天作者对软件进行了升级,算法也改了,只好重新分析一下。虽然算法改了,但有很多东西没改,有了2.0版的分析作基础,问题就好解决得多了。
1.脱壳+去自检验
查壳,仍然是UPX的壳,脱壳后可看到是VB的程序,运行一下照样会关机,看来自校验和2.0版的没多大变化。还是下断rtcFileLen,F9运行,可找到如下几处自校验的地方:
......
0055CA22 BF 0A000000 MOV EDI, 0A ; EDI=0x0a
0055CA27 897D B4 MOV DWORD PTR SS:[EBP-4C], EDI
0055CA2A 8D4D B4 LEA ECX, DWORD PTR SS:[EBP-4C]
0055CA2D 51 PUSH ECX
0055CA47 FF15 DC104000 CALL DWORD PTR DS:[<&MSVBVM60.rtcRandomNext>] ; 产生一个随机数
0055CA4D D80D 0C394000 FMUL DWORD PTR DS:[40390C] ; ×10
0055CA53 FF15 7C134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFPInt>] ; 取整
0055CA59 D805 48494000 FADD DWORD PTR DS:[404948] ; +1
0055CA5F FF15 00134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFpI2>] ; MSVBVM60.__vbaFpI2
0055CA65 8BF0 MOV ESI, EAX
0055CA67 8D4D B4 LEA ECX, DWORD PTR SS:[EBP-4C]
0055CA6A FF15 20104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
0055CA70 0FBFC6 MOVSX EAX, SI
0055CA73 3BC7 CMP EAX, EDI ; 结果与0x0a比较(即与10比较)
0055CA75 0F87 33040000 JA 0055CEAE ; 这里改为JMP就可去除自校验
0055CA7B FF2485 30CF5500 JMP DWORD PTR DS:[EAX*4+55CF30] ; 根据结果跳向不同的分支(功能相同)
0055CA82 8B45 E0 MOV EAX, DWORD PTR SS:[EBP-20]
0055CA85 50 PUSH EAX
0055CA86 FF15 CC124000 CALL DWORD PTR DS:[<&MSVBVM60.rtcFileLen>] ; 得到文件大小
0055CA8C 8945 BC MOV DWORD PTR SS:[EBP-44], EAX
0055CA8F BE 03000000 MOV ESI, 3
0055CA94 8975 B4 MOV DWORD PTR SS:[EBP-4C], ESI
0055CA97 56 PUSH ESI
0055CA98 8D4D B4 LEA ECX, DWORD PTR SS:[EBP-4C]
0055CA9B 51 PUSH ECX
0055CA9C 8D55 A4 LEA EDX, DWORD PTR SS:[EBP-5C]
0055CA9F 52 PUSH EDX
0055CAA0 FF15 28134000 CALL DWORD PTR DS:[<&MSVBVM60.rtcLeftCharVar>] ; 得到文件大小的左边3位数
0055CAA6 C785 6CFFFFFF B>MOV DWORD PTR SS:[EBP-94], 1B2
0055CAB0 89B5 64FFFFFF MOV DWORD PTR SS:[EBP-9C], ESI
0055CAB6 8D45 A4 LEA EAX, DWORD PTR SS:[EBP-5C]
0055CAB9 50 PUSH EAX
0055CABA 8D8D 64FFFFFF LEA ECX, DWORD PTR SS:[EBP-9C]
0055CAC0 51 PUSH ECX
0055CAC1 8D55 94 LEA EDX, DWORD PTR SS:[EBP-6C]
0055CAC4 52 PUSH EDX
0055CAC5 FF15 CC104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarXor>] ; 与0x1b2异或
0055CACB 50 PUSH EAX
0055CACC FF15 84104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaBoolErrVar>] ; MSVBVM60.__vbaBoolErrVar
0055CAD2 8BF0 MOV ESI, EAX
0055CAD4 8D45 A4 LEA EAX, DWORD PTR SS:[EBP-5C]
0055CAD7 50 PUSH EAX
0055CAD8 8D4D B4 LEA ECX, DWORD PTR SS:[EBP-4C]
0055CADB 51 PUSH ECX
0055CADC 6A 02 PUSH 2
0055CADE FF15 40104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
0055CAE4 83C4 0C ADD ESP, 0C
0055CAE7 66:3BF3 CMP SI, BX
0055CAEA 0F84 BE030000 JE 0055CEAE ; 异或结果为0,这里就会跳
......
程序先产生一个1~10内的随机数,根据这个数的大小跳向不同的分支(但完成同样的功能:检验文件有无被脱壳)。这里0x1b2为未脱壳前文件大小的左边3个数字,就是说运行程序的大小与未脱壳文件的大小相等时就会跳走,不等就会继续执行到错误的分支。同样的还有0055CB73、0055CCC9 、0055CD76、0055CDFF四处,将这五处JE都改为JMP就可除去自校验(或改0055CA75处JA为JMP一处即可)。这时你就可以放心大胆地对它进行开刀了,想怎么玩就怎么玩:)
2.注册
通过在打开文件函数_vbaFileOpen上下断,可找到如下的地方
......
00561CBD FF51 28 CALL DWORD PTR DS:[ECX+28] ; 判断是否脱壳,即为上面所述部分
00561CC0 3BC6 CMP EAX, ESI
00561CC2 7D 0F JGE SHORT 00561CD3
00561CC4 6A 28 PUSH 28
00561CC6 68 98AE4100 PUSH 0041AE98
00561CCB 53 PUSH EBX
00561CCC 50 PUSH EAX
00561CCD FF15 B4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckO>; MSVBVM60.__vbaHresultCheckObj
00561CD3 8B13 MOV EDX, DWORD PTR DS:[EBX]
00561CD5 8D85 D0FEFFFF LEA EAX, DWORD PTR SS:[EBP-130]
00561CDB 50 PUSH EAX
00561CDC 53 PUSH EBX
00561CDD FF52 38 CALL DWORD PTR DS:[EDX+38] ; 计算机器码,并将其变形后写入注册表中,有兴趣的朋友可自己跟进看看
00561CE0 3BC6 CMP EAX, ESI
00561CE2 7D 0F JGE SHORT 00561CF3
00561CE4 6A 38 PUSH 38
00561CE6 68 98AE4100 PUSH 0041AE98
00561CEB 53 PUSH EBX
00561CEC 50 PUSH EAX
00561CED FF15 B4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckO>; MSVBVM60.__vbaHresultCheckObj
00561CF3 8B8D D0FEFFFF MOV ECX, DWORD PTR SS:[EBP-130]
00561CF9 894D 80 MOV DWORD PTR SS:[EBP-80], ECX
00561CFC B8 44144200 MOV EAX, 00421444
00561D01 8985 14FFFFFF MOV DWORD PTR SS:[EBP-EC], EAX
00561D07 B9 08000000 MOV ECX, 8
00561D0C 898D 0CFFFFFF MOV DWORD PTR SS:[EBP-F4], ECX
00561D12 8B13 MOV EDX, DWORD PTR DS:[EBX]
00561D14 8DBD 68FFFFFF LEA EDI, DWORD PTR SS:[EBP-98]
00561D1A 57 PUSH EDI
00561D1B 83EC 10 SUB ESP, 10
00561D1E 8BFC MOV EDI, ESP
00561D20 890F MOV DWORD PTR DS:[EDI], ECX
00561D22 8B8D 10FFFFFF MOV ECX, DWORD PTR SS:[EBP-F0]
00561D28 894F 04 MOV DWORD PTR DS:[EDI+4], ECX
00561D2B 8947 08 MOV DWORD PTR DS:[EDI+8], EAX
00561D2E 8B85 18FFFFFF MOV EAX, DWORD PTR SS:[EBP-E8]
00561D34 8947 0C MOV DWORD PTR DS:[EDI+C], EAX
00561D37 56 PUSH ESI
00561D38 53 PUSH EBX
00561D39 FF52 20 CALL DWORD PTR DS:[EDX+20]
00561D3C DBE2 FCLEX
00561D3E 3BC6 CMP EAX, ESI
00561D40 7D 0F JGE SHORT 00561D51
00561D42 6A 20 PUSH 20
00561D44 68 98AE4100 PUSH 0041AE98
00561D49 53 PUSH EBX
00561D4A 50 PUSH EAX
00561D4B FF15 B4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckO>; MSVBVM60.__vbaHresultCheckObj
00561D51 8B0D 54B05600 MOV ECX, DWORD PTR DS:[56B054] ; [56B054]中存着主程序所在的路径X
00561D57 51 PUSH ECX
00561D58 8B95 68FFFFFF MOV EDX, DWORD PTR SS:[EBP-98] ; FXSYS\FXSYS
00561D5E 52 PUSH EDX
00561D5F 8B3D 7C104000 MOV EDI, DWORD PTR DS:[<&MSVBVM60.__vbaStrCat>] ; 连接得X:\FXSYS\FXSYS
00561D65 FFD7 CALL EDI
00561D67 8BD0 MOV EDX, EAX
00561D69 8D4D DC LEA ECX, DWORD PTR SS:[EBP-24]
00561D6C 8B35 34134000 MOV ESI, DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>>; MSVBVM60.__vbaStrMove
00561D72 FFD6 CALL ESI
00561D74 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00561D7A FF15 98134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
00561D80 8B45 DC MOV EAX, DWORD PTR SS:[EBP-24]
00561D83 50 PUSH EAX
00561D84 68 C4144200 PUSH 004214C4 ; UNICODE ".key"
00561D89 FFD7 CALL EDI ; 注册文件为X:\FXSYS\FXSYS.KEY
00561D8B 8985 54FFFFFF MOV DWORD PTR SS:[EBP-AC], EAX
00561D91 C785 4CFFFFFF 0>MOV DWORD PTR SS:[EBP-B4], 8
00561D9B 6A 07 PUSH 7
00561D9D 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
00561DA3 51 PUSH ECX
00561DA4 FF15 70124000 CALL DWORD PTR DS:[<&MSVBVM60.rtcDir>] ; MSVBVM60.rtcDir
00561DAA 8BD0 MOV EDX, EAX
00561DAC 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00561DB2 FFD6 CALL ESI
00561DB4 50 PUSH EAX
00561DB5 68 58AA4100 PUSH 0041AA58 ; NULL
00561DBA FF15 7C114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCmp>] ; 比较看指定的文件在不在
00561DC0 8BF8 MOV EDI, EAX
00561DC2 F7DF NEG EDI
00561DC4 1BFF SBB EDI, EDI
00561DC6 47 INC EDI
00561DC7 F7DF NEG EDI
00561DC9 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00561DCF FF15 98134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
00561DD5 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
00561DDB FF15 20104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
00561DE1 66:85FF TEST DI, DI
00561DE4 0F85 DD1D0000 JNZ 00563BC7 ; 没有指定的文件就跳(不能跳)
00561DEA 8B55 DC MOV EDX, DWORD PTR SS:[EBP-24]
00561DED 52 PUSH EDX
00561DEE 68 98F44100 PUSH 0041F498 ; UNICODE ".tmp"
00561DF3 8B3D 7C104000 MOV EDI, DWORD PTR DS:[<&MSVBVM60.__vbaStrCat>] ; MSVBVM60.__vbaStrCat
00561DF9 FFD7 CALL EDI
00561DFB 8BD0 MOV EDX, EAX
00561DFD 8D8D 64FFFFFF LEA ECX, DWORD PTR SS:[EBP-9C]
00561E03 FFD6 CALL ESI
00561E05 8B45 DC MOV EAX, DWORD PTR SS:[EBP-24]
00561E08 50 PUSH EAX
00561E09 68 C4144200 PUSH 004214C4 ; UNICODE ".key"
00561E0E FFD7 CALL EDI
00561E10 8BD0 MOV EDX, EAX
00561E12 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00561E18 FFD6 CALL ESI
00561E1A 8B0B MOV ECX, DWORD PTR DS:[EBX]
00561E1C 8D95 D8FEFFFF LEA EDX, DWORD PTR SS:[EBP-128]
00561E22 52 PUSH EDX
00561E23 8D85 64FFFFFF LEA EAX, DWORD PTR SS:[EBP-9C]
00561E29 50 PUSH EAX
00561E2A 8D95 68FFFFFF LEA EDX, DWORD PTR SS:[EBP-98]
00561E30 52 PUSH EDX
00561E31 53 PUSH EBX
00561E32 FF51 34 CALL DWORD PTR DS:[ECX+34] ; 解密注册文件并存入临时文件FXSYS.TMP中
解密很简单,只是将文件各字节取出与0xFB异或后再写回
00561E35 85C0 TEST EAX, EAX
00561E37 7D 0F JGE SHORT 00561E48
00561E39 6A 34 PUSH 34
00561E3B 68 98AE4100 PUSH 0041AE98
00561E40 53 PUSH EBX
00561E41 50 PUSH EAX
00561E42 FF15 B4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckO>; MSVBVM60.__vbaHresultCheckObj
00561E48 8D85 64FFFFFF LEA EAX, DWORD PTR SS:[EBP-9C]
00561E4E 50 PUSH EAX
00561E4F 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00561E55 51 PUSH ECX
00561E56 6A 02 PUSH 2
00561E58 FF15 B4124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStrList>] ; MSVBVM60.__vbaFreeStrList
00561E5E 83C4 0C ADD ESP, 0C
00561E61 C785 54FFFFFF 0>MOV DWORD PTR SS:[EBP-AC], 80020004
00561E6B C785 4CFFFFFF 0>MOV DWORD PTR SS:[EBP-B4], 0A
00561E75 8D95 4CFFFFFF LEA EDX, DWORD PTR SS:[EBP-B4]
00561E7B 52 PUSH EDX
00561E7C FF15 8C124000 CALL DWORD PTR DS:[<&MSVBVM60.rtcFreeFile>] ; MSVBVM60.rtcFreeFile
00561E82 8845 A8 MOV BYTE PTR SS:[EBP-58], AL
00561E85 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
00561E8B FF15 20104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
00561E91 66:0FB67D A8 MOVZX DI, BYTE PTR SS:[EBP-58]
00561E96 8B45 DC MOV EAX, DWORD PTR SS:[EBP-24]
00561E99 50 PUSH EAX
00561E9A 68 98F44100 PUSH 0041F498 ; UNICODE ".tmp"
00561E9F FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCat>] ; MSVBVM60.__vbaStrCat
00561EA5 8BD0 MOV EDX, EAX
00561EA7 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00561EAD FFD6 CALL ESI
00561EAF 50 PUSH EAX
00561EB0 57 PUSH EDI
00561EB1 6A FF PUSH -1
00561EB3 6A 01 PUSH 1
00561EB5 FF15 7C124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFileOpen>] ; 打开解密后的文件FXSYS.TMP
00561EBB 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00561EC1 FF15 98134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
00561EC7 57 PUSH EDI
00561EC8 8D4D 84 LEA ECX, DWORD PTR SS:[EBP-7C]
00561ECB 51 PUSH ECX
00561ECC FF15 4C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLineInputVar>>; 读取第1行
00561ED2 C785 14FFFFFF 6>MOV DWORD PTR SS:[EBP-EC], 00421460
00561EDC B8 08000000 MOV EAX, 8
00561EE1 8985 0CFFFFFF MOV DWORD PTR SS:[EBP-F4], EAX
00561EE7 8B13 MOV EDX, DWORD PTR DS:[EBX]
00561EE9 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00561EEF 51 PUSH ECX
00561EF0 83EC 10 SUB ESP, 10
00561EF3 8BCC MOV ECX, ESP
00561EF5 8901 MOV DWORD PTR DS:[ECX], EAX
00561EF7 8B85 10FFFFFF MOV EAX, DWORD PTR SS:[EBP-F0]
00561EFD 8941 04 MOV DWORD PTR DS:[ECX+4], EAX
00561F00 8B85 14FFFFFF MOV EAX, DWORD PTR SS:[EBP-EC]
00561F06 8941 08 MOV DWORD PTR DS:[ECX+8], EAX
00561F09 8B85 18FFFFFF MOV EAX, DWORD PTR SS:[EBP-E8]
00561F0F 8941 0C MOV DWORD PTR DS:[ECX+C], EAX
00561F12 6A 00 PUSH 0
00561F14 53 PUSH EBX
00561F15 FF52 20 CALL DWORD PTR DS:[EDX+20]
00561F18 85C0 TEST EAX, EAX
00561F1A 7D 0F JGE SHORT 00561F2B
00561F1C 6A 20 PUSH 20
00561F1E 68 98AE4100 PUSH 0041AE98
00561F23 53 PUSH EBX
00561F24 50 PUSH EAX
00561F25 FF15 B4104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckO>; MSVBVM60.__vbaHresultCheckObj
00561F2B 8B85 68FFFFFF MOV EAX, DWORD PTR SS:[EBP-98] ; 读取的第1行
00561F31 C785 68FFFFFF 0>MOV DWORD PTR SS:[EBP-98], 0
00561F3B 8985 54FFFFFF MOV DWORD PTR SS:[EBP-AC], EAX
00561F41 C785 4CFFFFFF 0>MOV DWORD PTR SS:[EBP-B4], 8008
00561F4B 8D4D 84 LEA ECX, DWORD PTR SS:[EBP-7C] ; [FXV25]
00561F4E 51 PUSH ECX
00561F4F 8D95 4CFFFFFF LEA EDX, DWORD PTR SS:[EBP-B4] ; 读取的第1行
00561F55 52 PUSH EDX
00561F56 FF15 84114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarTstEq>] ; 第1行是否为[FXV25]
00561F5C 66:8BD8 MOV BX, AX
00561F5F 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
00561F65 FF15 20104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
00561F6B 66:85DB TEST BX, BX
00561F6E 74 1B JE SHORT 00561F8B ; 不能跳(不等会跳)
00561F70 57 PUSH EDI
00561F71 8D45 A0 LEA EAX, DWORD PTR SS:[EBP-60]
00561F74 50 PUSH EAX
00561F75 8B1D 30104000 MOV EBX, DWORD PTR DS:[<&MSVBVM60.__vbaLineInpu>; MSVBVM60.__vbaLineInputStr
00561F7B FFD3 CALL EBX ; 读取第2行
00561F7D 57 PUSH EDI
00561F7E 8D4D E0 LEA ECX, DWORD PTR SS:[EBP-20]
00561F81 51 PUSH ECX
00561F82 FFD3 CALL EBX ; 读取第3行
00561F84 57 PUSH EDI
00561F85 8D55 A4 LEA EDX, DWORD PTR SS:[EBP-5C]
00561F88 52 PUSH EDX
00561F89 FFD3 CALL EBX ; 读取第4行
00561F8B 57 PUSH EDI
00561F8C FF15 60114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFileClose>] ; 关闭文件
00561F92 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
00561F98 85C0 TEST EAX, EAX
00561F9A 75 12 JNZ SHORT 00561FAE
00561F9C 8D85 6CFFFFFF LEA EAX, DWORD PTR SS:[EBP-94]
00561FA2 50 PUSH EAX
00561FA3 68 EC814000 PUSH 004081EC
00561FA8 FF15 88124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
00561FAE 8BBD 6CFFFFFF MOV EDI, DWORD PTR SS:[EBP-94]
00561FB4 C785 D8FEFFFF 0>MOV DWORD PTR SS:[EBP-128], 0
00561FBE 8B4D DC MOV ECX, DWORD PTR SS:[EBP-24]
00561FC1 51 PUSH ECX
00561FC2 68 98F44100 PUSH 0041F498 ; UNICODE ".tmp"
00561FC7 FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCat>] ; MSVBVM60.__vbaStrCat
00561FCD 8BD0 MOV EDX, EAX
00561FCF 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00561FD5 FFD6 CALL ESI
00561FD7 8B17 MOV EDX, DWORD PTR DS:[EDI]
00561FD9 8D85 D4FEFFFF LEA EAX, DWORD PTR SS:[EBP-12C]
00561FDF 50 PUSH EAX
00561FE0 8D8D D8FEFFFF LEA ECX, DWORD PTR SS:[EBP-128]
00561FE6 51 PUSH ECX
00561FE7 8D85 68FFFFFF LEA EAX, DWORD PTR SS:[EBP-98]
00561FED 50 PUSH EAX
00561FEE 57 PUSH EDI
00561FEF FF52 24 CALL DWORD PTR DS:[EDX+24] ; 删除临时文件
00561FF2 DBE2 FCLEX
00561FF4 85C0 TEST EAX, EAX
00561FF6 7D 13 JGE SHORT 0056200B
00561FF8 6A 24 PUSH 24
00561FFA 68 7CAC4100 PUSH 0041AC7C
00561FFF 57 PUSH EDI
00562000 50 PUSH EAX
00562001 8B1D B4104000 MOV EBX, DWORD PTR DS:[<&MSVBVM60.__vbaHresultC>; MSVBVM60.__vbaHresultCheckObj
00562007 FFD3 CALL EBX
00562009 EB 06 JMP SHORT 00562011
0056200B 8B1D B4104000 MOV EBX, DWORD PTR DS:[<&MSVBVM60.__vbaHresultC>; MSVBVM60.__vbaHresultCheckObj
00562011 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00562017 FF15 98134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0056201D 8B4D A0 MOV ECX, DWORD PTR SS:[EBP-60] ; 读取的第2行(机器码)
00562020 51 PUSH ECX
00562021 FF15 A0134000 CALL DWORD PTR DS:[<&MSVBVM60.rtcR8ValFromBstr>] ; 转为浮点数
00562027 FF15 18134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFpI4>] ; 转为整数
0056202D 3345 80 XOR EAX, DWORD PTR SS:[EBP-80]
00562030 74 65 JE SHORT 00562097 ; 与机器码是否相等?等就跳
00562032 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
00562038 85C0 TEST EAX, EAX
0056203A 75 12 JNZ SHORT 0056204E
0056203C 8D95 6CFFFFFF LEA EDX, DWORD PTR SS:[EBP-94]
00562042 52 PUSH EDX
00562043 68 EC814000 PUSH 004081EC
00562048 FF15 88124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
0056204E 8BBD 6CFFFFFF MOV EDI, DWORD PTR SS:[EBP-94]
00562054 C785 D8FEFFFF 0>MOV DWORD PTR SS:[EBP-128], 0
0056205E 8B45 DC MOV EAX, DWORD PTR SS:[EBP-24]
00562061 50 PUSH EAX
00562062 68 C4144200 PUSH 004214C4 ; UNICODE ".key"
00562067 FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCat>] ; MSVBVM60.__vbaStrCat
0056206D 8BD0 MOV EDX, EAX
0056206F 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00562075 FFD6 CALL ESI
00562077 8B0F MOV ECX, DWORD PTR DS:[EDI]
00562079 8D95 D4FEFFFF LEA EDX, DWORD PTR SS:[EBP-12C]
0056207F 52 PUSH EDX
00562080 8D85 D8FEFFFF LEA EAX, DWORD PTR SS:[EBP-128]
00562086 50 PUSH EAX
00562087 8D95 68FFFFFF LEA EDX, DWORD PTR SS:[EBP-98]
0056208D 52 PUSH EDX
0056208E 57 PUSH EDI
0056208F FF51 24 CALL DWORD PTR DS:[ECX+24]
00562092 E9 60010000 JMP 005621F7
00562097 8B45 E0 MOV EAX, DWORD PTR SS:[EBP-20] ; 读取的第3行(用户名)
0056209A 50 PUSH EAX
0056209B FF15 34104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenBstr>] ; 算长度
005620A1 83F8 02 CMP EAX, 2 ; 与2比较
005620A4 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
005620AA 7D 0D JGE SHORT 005620B9 ; 大于等于就跳,要跳
005620AC 85C0 TEST EAX, EAX
005620AE 0F85 FF000000 JNZ 005621B3
005620B4 E9 E8000000 JMP 005621A1
005620B9 85C0 TEST EAX, EAX
005620BB 75 18 JNZ SHORT 005620D5
005620BD 8D95 6CFFFFFF LEA EDX, DWORD PTR SS:[EBP-94]
005620C3 52 PUSH EDX
005620C4 68 EC814000 PUSH 004081EC
005620C9 FF15 88124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
005620CF 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
005620D5 8BF8 MOV EDI, EAX
005620D7 8B08 MOV ECX, DWORD PTR DS:[EAX]
005620D9 8D95 68FFFFFF LEA EDX, DWORD PTR SS:[EBP-98]
005620DF 52 PUSH EDX
005620E0 68 60B14100 PUSH 0041B160 ; 0
005620E5 68 B49E4200 PUSH 00429EB4 ; H
005620EA 8B55 A4 MOV EDX, DWORD PTR SS:[EBP-5C] ; 读取的第4行(注册码)
005620ED 52 PUSH EDX
005620EE 50 PUSH EAX
005620EF FF51 34 CALL DWORD PTR DS:[ECX+34] ; 处理注册码:将其中的H(h)用0代替
005620F2 DBE2 FCLEX
005620F4 85C0 TEST EAX, EAX
005620F6 7D 0B JGE SHORT 00562103
005620F8 6A 34 PUSH 34
005620FA 68 7CAC4100 PUSH 0041AC7C
005620FF 57 PUSH EDI
00562100 50 PUSH EAX
00562101 FFD3 CALL EBX
00562103 8B95 68FFFFFF MOV EDX, DWORD PTR SS:[EBP-98] ; 处理后的注册码
00562109 C785 68FFFFFF 0>MOV DWORD PTR SS:[EBP-98], 0
00562113 8D4D A4 LEA ECX, DWORD PTR SS:[EBP-5C]
00562116 FFD6 CALL ESI
00562118 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
0056211E 85C0 TEST EAX, EAX
00562120 75 18 JNZ SHORT 0056213A
00562122 8D85 6CFFFFFF LEA EAX, DWORD PTR SS:[EBP-94]
00562128 50 PUSH EAX
00562129 68 EC814000 PUSH 004081EC
0056212E FF15 88124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
00562134 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
0056213A 8BF8 MOV EDI, EAX
0056213C 8B08 MOV ECX, DWORD PTR DS:[EAX]
0056213E 8D95 68FFFFFF LEA EDX, DWORD PTR SS:[EBP-98]
00562144 52 PUSH EDX
00562145 68 18BF4100 PUSH 0041BF18 ; 1
0056214A 68 BC9E4200 PUSH 00429EBC ; X
0056214F 8B55 A4 MOV EDX, DWORD PTR SS:[EBP-5C]
00562152 52 PUSH EDX
00562153 50 PUSH EAX
00562154 FF51 34 CALL DWORD PTR DS:[ECX+34] ; 将注册码中的X(x)用1代替
00562157 DBE2 FCLEX
00562159 85C0 TEST EAX, EAX
0056215B 7D 0B JGE SHORT 00562168
0056215D 6A 34 PUSH 34
0056215F 68 7CAC4100 PUSH 0041AC7C
00562164 57 PUSH EDI
00562165 50 PUSH EAX
00562166 FFD3 CALL EBX
00562168 8B95 68FFFFFF MOV EDX, DWORD PTR SS:[EBP-98]
0056216E C785 68FFFFFF 0>MOV DWORD PTR SS:[EBP-98], 0
00562178 8D4D A4 LEA ECX, DWORD PTR SS:[EBP-5C]
0056217B FFD6 CALL ESI
0056217D 6A 00 PUSH 0
0056217F 6A FF PUSH -1
00562181 68 84AE4100 PUSH 0041AE84 ; -
00562186 8B45 A4 MOV EAX, DWORD PTR SS:[EBP-5C]
00562189 50 PUSH EAX
0056218A FF15 34114000 CALL DWORD PTR DS:[<&MSVBVM60.rtcInStrRev>] ; 查找“-”在注册码中的位置
00562190 8BF8 MOV EDI, EAX
00562192 83FF 05 CMP EDI, 5 ; 与5比较
00562195 7D 7A JGE SHORT 00562211 ; 大于等于就跳,要跳(注册码第1部分要4位或4位以上)
00562197 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
0056219D 85C0 TEST EAX, EAX
0056219F 75 12 JNZ SHORT 005621B3
005621A1 8D8D 6CFFFFFF LEA ECX, DWORD PTR SS:[EBP-94]
005621A7 51 PUSH ECX
005621A8 68 EC814000 PUSH 004081EC
005621AD FF15 88124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
005621B3 8BBD 6CFFFFFF MOV EDI, DWORD PTR SS:[EBP-94]
005621B9 C785 D8FEFFFF 0>MOV DWORD PTR SS:[EBP-128], 0
005621C3 8B55 DC MOV EDX, DWORD PTR SS:[EBP-24]
005621C6 52 PUSH EDX
005621C7 68 C4144200 PUSH 004214C4 ; UNICODE ".key"
005621CC FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCat>] ; MSVBVM60.__vbaStrCat
005621D2 8BD0 MOV EDX, EAX
005621D4 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
005621DA FFD6 CALL ESI
005621DC 8B07 MOV EAX, DWORD PTR DS:[EDI]
005621DE 8D8D D4FEFFFF LEA ECX, DWORD PTR SS:[EBP-12C]
005621E4 51 PUSH ECX
005621E5 8D95 D8FEFFFF LEA EDX, DWORD PTR SS:[EBP-128]
005621EB 52 PUSH EDX
005621EC 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
005621F2 51 PUSH ECX
005621F3 57 PUSH EDI
005621F4 FF50 24 CALL DWORD PTR DS:[EAX+24]
005621F7 DBE2 FCLEX
005621F9 85C0 TEST EAX, EAX
005621FB 0F8D BA190000 JGE 00563BBB
00562201 6A 24 PUSH 24
00562203 68 7CAC4100 PUSH 0041AC7C
00562208 57 PUSH EDI
00562209 50 PUSH EAX
0056220A FFD3 CALL EBX
0056220C E9 AA190000 JMP 00563BBB
00562211 C785 F4FEFFFF 1>MOV DWORD PTR SS:[EBP-10C], 00422C14 ; <====注册码第1部分(从右至左)
0056221B BB 08000000 MOV EBX, 8
00562220 899D ECFEFFFF MOV DWORD PTR SS:[EBP-114], EBX
00562226 C785 54FFFFFF 0>MOV DWORD PTR SS:[EBP-AC], 80020004
00562230 C785 4CFFFFFF 0>MOV DWORD PTR SS:[EBP-B4], 0A
0056223A 8D55 A4 LEA EDX, DWORD PTR SS:[EBP-5C]
0056223D 8995 14FFFFFF MOV DWORD PTR SS:[EBP-EC], EDX
00562243 C785 0CFFFFFF 0>MOV DWORD PTR SS:[EBP-F4], 4008
0056224D 8D85 4CFFFFFF LEA EAX, DWORD PTR SS:[EBP-B4]
00562253 50 PUSH EAX ; 取10位
00562254 8D4F 01 LEA ECX, DWORD PTR DS:[EDI+1]
00562257 51 PUSH ECX ; 从第EDI+1位取起
00562258 8D95 0CFFFFFF LEA EDX, DWORD PTR SS:[EBP-F4]
0056225E 52 PUSH EDX ; 从注册码中取
0056225F 8D85 3CFFFFFF LEA EAX, DWORD PTR SS:[EBP-C4]
00562265 50 PUSH EAX ; 放在这里
00562266 FF15 4C114000 CALL DWORD PTR DS:[<&MSVBVM60.rtcMidCharVar>] ; 取注册码从右到左第1部分
0056226C C785 E4FEFFFF C>MOV DWORD PTR SS:[EBP-11C], 00429EC4 ; &
00562276 899D DCFEFFFF MOV DWORD PTR SS:[EBP-124], EBX
0056227C 8D8D ECFEFFFF LEA ECX, DWORD PTR SS:[EBP-114]
00562282 51 PUSH ECX
00562283 8D95 3CFFFFFF LEA EDX, DWORD PTR SS:[EBP-C4]
00562289 52 PUSH EDX
0056228A 8D85 2CFFFFFF LEA EAX, DWORD PTR SS:[EBP-D4]
00562290 50 PUSH EAX
00562291 8B1D 58124000 MOV EBX, DWORD PTR DS:[<&MSVBVM60.__vbaVarCat>] ; MSVBVM60.__vbaVarCat
00562297 FFD3 CALL EBX ; “&H”与其连接
00562299 50 PUSH EAX
0056229A 8D8D DCFEFFFF LEA ECX, DWORD PTR SS:[EBP-124]
005622A0 51 PUSH ECX
005622A1 8D95 1CFFFFFF LEA EDX, DWORD PTR SS:[EBP-E4]
005622A7 52 PUSH EDX
005622A8 FFD3 CALL EBX ; 再与“&”连接
005622AA 50 PUSH EAX
005622AB 8D85 68FFFFFF LEA EAX, DWORD PTR SS:[EBP-98]
005622B1 50 PUSH EAX
005622B2 FF15 4C124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVarVal>] ; MSVBVM60.__vbaStrVarVal
005622B8 50 PUSH EAX
005622B9 FF15 A0134000 CALL DWORD PTR DS:[<&MSVBVM60.rtcR8ValFromBstr>] ; 转为浮点数
005622BF 83EC 08 SUB ESP, 8
005622C2 DD1C24 FSTP QWORD PTR SS:[ESP]
005622C5 FF15 C8114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrR8>] ; MSVBVM60.__vbaStrR8
005622CB 8BD0 MOV EDX, EAX
005622CD 8D4D 98 LEA ECX, DWORD PTR SS:[EBP-68]
005622D0 FFD6 CALL ESI
005622D2 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
005622D8 FF15 98134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
005622DE 8D8D 1CFFFFFF LEA ECX, DWORD PTR SS:[EBP-E4]
005622E4 51 PUSH ECX
005622E5 8D95 2CFFFFFF LEA EDX, DWORD PTR SS:[EBP-D4]
005622EB 52 PUSH EDX
005622EC 8D85 3CFFFFFF LEA EAX, DWORD PTR SS:[EBP-C4]
005622F2 50 PUSH EAX
005622F3 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
005622F9 51 PUSH ECX
005622FA 6A 04 PUSH 4
005622FC FF15 40104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
00562302 83C4 14 ADD ESP, 14
00562305 8B55 98 MOV EDX, DWORD PTR SS:[EBP-68] ; 注册码第1部分
00562308 52 PUSH EDX
00562309 FF15 84124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaR8Str>] ; MSVBVM60.__vbaR8Str
0056230F DC1D 406C4000 FCOMP QWORD PTR DS:[406C40] ; 与8889比较
00562315 DFE0 FSTSW AX
00562317 F6C4 01 TEST AH, 1
0056231A 74 13 JE SHORT 0056232F ; 大于等于就跳(要跳)
0056231C 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
00562322 85C0 TEST EAX, EAX
00562324 0F85 E8110000 JNZ 00563512
0056232A E9 D1110000 JMP 00563500
0056232F 8D4D A4 LEA ECX, DWORD PTR SS:[EBP-5C] ; <====注册码第2部分
00562332 898D 14FFFFFF MOV DWORD PTR SS:[EBP-EC], ECX
00562338 C785 0CFFFFFF 0>MOV DWORD PTR SS:[EBP-F4], 4008
00562342 4F DEC EDI
00562343 57 PUSH EDI ; 从第EDI-1位取起
00562344 8D95 0CFFFFFF LEA EDX, DWORD PTR SS:[EBP-F4]
0056234A 52 PUSH EDX ; 注册码
0056234B 8D85 4CFFFFFF LEA EAX, DWORD PTR SS:[EBP-B4]
00562351 50 PUSH EAX ; 放这里
00562352 FF15 28134000 CALL DWORD PTR DS:[<&MSVBVM60.rtcLeftCharVar>] ; 取左边的子串(注册码从右至左第1部分)
00562358 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
0056235E 51 PUSH ECX
0056235F FF15 2C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVarMove>] ; MSVBVM60.__vbaStrVarMove
00562365 8BD0 MOV EDX, EAX
00562367 8D4D A4 LEA ECX, DWORD PTR SS:[EBP-5C]
0056236A FFD6 CALL ESI
0056236C 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
00562372 FF15 20104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
00562378 6A 00 PUSH 0
0056237A 6A FF PUSH -1
0056237C 68 84AE4100 PUSH 0041AE84 ; -
00562381 8B55 A4 MOV EDX, DWORD PTR SS:[EBP-5C]
00562384 52 PUSH EDX
00562385 FF15 34114000 CALL DWORD PTR DS:[<&MSVBVM60.rtcInStrRev>] ; 查找“—”在子串中的位置
0056238B 8BF8 MOV EDI, EAX
0056238D 83FF 05 CMP EDI, 5
00562390 7D 13 JGE SHORT 005623A5
00562392 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
00562398 85C0 TEST EAX, EAX
0056239A 0F85 72110000 JNZ 00563512
005623A0 E9 5B110000 JMP 00563500
005623A5 C785 F4FEFFFF 1>MOV DWORD PTR SS:[EBP-10C], 00422C14 ; UNICODE "&H"
005623AF C785 ECFEFFFF 0>MOV DWORD PTR SS:[EBP-114], 8
005623B9 C785 54FFFFFF 0>MOV DWORD PTR SS:[EBP-AC], 80020004
005623C3 C785 4CFFFFFF 0>MOV DWORD PTR SS:[EBP-B4], 0A
005623CD 8D4D A4 LEA ECX, DWORD PTR SS:[EBP-5C]
005623D0 898D 14FFFFFF MOV DWORD PTR SS:[EBP-EC], ECX
005623D6 C785 0CFFFFFF 0>MOV DWORD PTR SS:[EBP-F4], 4008
005623E0 8D95 4CFFFFFF LEA EDX, DWORD PTR SS:[EBP-B4]
005623E6 52 PUSH EDX
005623E7 8D47 01 LEA EAX, DWORD PTR DS:[EDI+1]
005623EA 50 PUSH EAX
005623EB 8D8D 0CFFFFFF LEA ECX, DWORD PTR SS:[EBP-F4]
005623F1 51 PUSH ECX
005623F2 8D95 3CFFFFFF LEA EDX, DWORD PTR SS:[EBP-C4]
005623F8 52 PUSH EDX
005623F9 FF15 4C114000 CALL DWORD PTR DS:[<&MSVBVM60.rtcMidCharVar>] ; 取注册码从右往左第2部分
005623FF C785 E4FEFFFF C>MOV DWORD PTR SS:[EBP-11C], 00429EC4
00562409 C785 DCFEFFFF 0>MOV DWORD PTR SS:[EBP-124], 8
00562413 8D85 ECFEFFFF LEA EAX, DWORD PTR SS:[EBP-114]
00562419 50 PUSH EAX
0056241A 8D8D 3CFFFFFF LEA ECX, DWORD PTR SS:[EBP-C4]
00562420 51 PUSH ECX
00562421 8D95 2CFFFFFF LEA EDX, DWORD PTR SS:[EBP-D4]
00562427 52 PUSH EDX
00562428 FFD3 CALL EBX
0056242A 50 PUSH EAX
0056242B 8D85 DCFEFFFF LEA EAX, DWORD PTR SS:[EBP-124]
00562431 50 PUSH EAX
00562432 8D8D 1CFFFFFF LEA ECX, DWORD PTR SS:[EBP-E4]
00562438 51 PUSH ECX
00562439 FFD3 CALL EBX
0056243B 50 PUSH EAX
0056243C 8D95 68FFFFFF LEA EDX, DWORD PTR SS:[EBP-98]
00562442 52 PUSH EDX
00562443 FF15 4C124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVarVal>] ; MSVBVM60.__vbaStrVarVal
00562449 50 PUSH EAX
0056244A FF15 A0134000 CALL DWORD PTR DS:[<&MSVBVM60.rtcR8ValFromBstr>] ; MSVBVM60.rtcR8ValFromBstr
00562450 83EC 08 SUB ESP, 8
00562453 DD1C24 FSTP QWORD PTR SS:[ESP]
00562456 FF15 C8114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrR8>] ; MSVBVM60.__vbaStrR8
0056245C 8BD0 MOV EDX, EAX
0056245E 8D4D AC LEA ECX, DWORD PTR SS:[EBP-54]
00562461 FFD6 CALL ESI
00562463 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00562469 FF15 98134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0056246F 8D85 1CFFFFFF LEA EAX, DWORD PTR SS:[EBP-E4]
00562475 50 PUSH EAX
00562476 8D8D 2CFFFFFF LEA ECX, DWORD PTR SS:[EBP-D4]
0056247C 51 PUSH ECX
0056247D 8D95 3CFFFFFF LEA EDX, DWORD PTR SS:[EBP-C4]
00562483 52 PUSH EDX
00562484 8D85 4CFFFFFF LEA EAX, DWORD PTR SS:[EBP-B4]
0056248A 50 PUSH EAX
0056248B 6A 04 PUSH 4
0056248D FF15 40104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
00562493 83C4 14 ADD ESP, 14
00562496 8B4D AC MOV ECX, DWORD PTR SS:[EBP-54] ; 第2部分
00562499 51 PUSH ECX
0056249A FF15 84124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaR8Str>] ; MSVBVM60.__vbaR8Str
005624A0 DC1D 386C4000 FCOMP QWORD PTR DS:[406C38] ; 与51001比较
005624A6 DFE0 FSTSW AX
005624A8 F6C4 01 TEST AH, 1
005624AB 74 65 JE SHORT 00562512 ; 大于等于就跳(要跳)
005624AD 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
005624B3 85C0 TEST EAX, EAX
005624B5 75 12 JNZ SHORT 005624C9
005624B7 8D95 6CFFFFFF LEA EDX, DWORD PTR SS:[EBP-94]
005624BD 52 PUSH EDX
005624BE 68 EC814000 PUSH 004081EC
005624C3 FF15 88124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
005624C9 8BBD 6CFFFFFF MOV EDI, DWORD PTR SS:[EBP-94]
005624CF C785 D8FEFFFF 0>MOV DWORD PTR SS:[EBP-128], 0
005624D9 8B45 DC MOV EAX, DWORD PTR SS:[EBP-24]
005624DC 50 PUSH EAX
005624DD 68 C4144200 PUSH 004214C4 ; UNICODE ".key"
005624E2 FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCat>] ; MSVBVM60.__vbaStrCat
005624E8 8BD0 MOV EDX, EAX
005624EA 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
005624F0 FFD6 CALL ESI
005624F2 8B0F MOV ECX, DWORD PTR DS:[EDI]
005624F4 8D95 D4FEFFFF LEA EDX, DWORD PTR SS:[EBP-12C]
005624FA 52 PUSH EDX
005624FB 8D85 D8FEFFFF LEA EAX, DWORD PTR SS:[EBP-128]
00562501 50 PUSH EAX
00562502 8D95 68FFFFFF LEA EDX, DWORD PTR SS:[EBP-98]
00562508 52 PUSH EDX
00562509 57 PUSH EDI
0056250A FF51 24 CALL DWORD PTR DS:[ECX+24]
0056250D E9 44100000 JMP 00563556
00562512 8D45 A4 LEA EAX, DWORD PTR SS:[EBP-5C]
00562515 8985 14FFFFFF MOV DWORD PTR SS:[EBP-EC], EAX
0056251B C785 0CFFFFFF 0>MOV DWORD PTR SS:[EBP-F4], 4008
00562525 4F DEC EDI
00562526 57 PUSH EDI
00562527 8D8D 0CFFFFFF LEA ECX, DWORD PTR SS:[EBP-F4]
0056252D 51 PUSH ECX
0056252E 8D95 4CFFFFFF LEA EDX, DWORD PTR SS:[EBP-B4]
00562534 52 PUSH EDX
00562535 FF15 28134000 CALL DWORD PTR DS:[<&MSVBVM60.rtcLeftCharVar>] ; MSVBVM60.rtcLeftCharVar
0056253B 8D85 4CFFFFFF LEA EAX, DWORD PTR SS:[EBP-B4]
00562541 50 PUSH EAX
00562542 8B1D 2C104000 MOV EBX, DWORD PTR DS:[<&MSVBVM60.__vbaStrVarMo>; MSVBVM60.__vbaStrVarMove
00562548 FFD3 CALL EBX
0056254A 8BD0 MOV EDX, EAX
0056254C 8D4D A4 LEA ECX, DWORD PTR SS:[EBP-5C]
0056254F FFD6 CALL ESI
00562551 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
00562557 FF15 20104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
0056255D 6A 00 PUSH 0
0056255F 6A FF PUSH -1
00562561 68 84AE4100 PUSH 0041AE84
00562566 8B4D A4 MOV ECX, DWORD PTR SS:[EBP-5C]
00562569 51 PUSH ECX
0056256A FF15 34114000 CALL DWORD PTR DS:[<&MSVBVM60.rtcInStrRev>] ; 在子串中找“-”位置
00562570 8BF8 MOV EDI, EAX
00562572 C785 54FFFFFF 0>MOV DWORD PTR SS:[EBP-AC], 80020004
0056257C C785 4CFFFFFF 0>MOV DWORD PTR SS:[EBP-B4], 0A
00562586 8D55 A4 LEA EDX, DWORD PTR SS:[EBP-5C]
00562589 8995 14FFFFFF MOV DWORD PTR SS:[EBP-EC], EDX
0056258F C785 0CFFFFFF 0>MOV DWORD PTR SS:[EBP-F4], 4008
00562599 8D85 4CFFFFFF LEA EAX, DWORD PTR SS:[EBP-B4]
0056259F 50 PUSH EAX
005625A0 8D4F 01 LEA ECX, DWORD PTR DS:[EDI+1]
005625A3 51 PUSH ECX
005625A4 8D95 0CFFFFFF LEA EDX, DWORD PTR SS:[EBP-F4]
005625AA 52 PUSH EDX
005625AB 8D85 3CFFFFFF LEA EAX, DWORD PTR SS:[EBP-C4]
005625B1 50 PUSH EAX
005625B2 FF15 4C114000 CALL DWORD PTR DS:[<&MSVBVM60.rtcMidCharVar>] ; 注册码从右至左第3部分
005625B8 8D8D 3CFFFFFF LEA ECX, DWORD PTR SS:[EBP-C4]
005625BE 51 PUSH ECX
005625BF FFD3 CALL EBX
005625C1 8BD0 MOV EDX, EAX
005625C3 8D4D 94 LEA ECX, DWORD PTR SS:[EBP-6C]
005625C6 FFD6 CALL ESI
005625C8 8D95 3CFFFFFF LEA EDX, DWORD PTR SS:[EBP-C4]
005625CE 52 PUSH EDX
005625CF 8D85 4CFFFFFF LEA EAX, DWORD PTR SS:[EBP-B4]
005625D5 50 PUSH EAX
005625D6 6A 02 PUSH 2
005625D8 FF15 40104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
005625DE 83C4 0C ADD ESP, 0C
005625E1 83FF 05 CMP EDI, 5
005625E4 7D 65 JGE SHORT 0056264B
005625E6 8B85 6CFFFFFF MOV EAX, DWORD PTR SS:[EBP-94]
005625EC 85C0 TEST EAX, EAX
005625EE 75 12 JNZ SHORT 00562602
005625F0 8D8D 6CFFFFFF LEA ECX, DWORD PTR SS:[EBP-94]
005625F6 51 PUSH ECX
005625F7 68 EC814000 PUSH 004081EC
005625FC FF15 88124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
00562602 8BBD 6CFFFFFF MOV EDI, DWORD PTR SS:[EBP-94]
00562608 C785 D8FEFFFF 0>MOV DWORD PTR SS:[EBP-128], 0
00562612 8B55 DC MOV EDX, DWORD PTR SS:[EBP-24]
00562615 52 PUSH EDX
00562616 68 C4144200 PUSH 004214C4 ; UNICODE ".key"
0056261B FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCat>] ; MSVBVM60.__vbaStrCat
00562621 8BD0 MOV EDX, EAX
00562623 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00562629 FFD6 CALL ESI
0056262B 8B07 MOV EAX, DWORD PTR DS:[EDI]
0056262D 8D8D D4FEFFFF LEA ECX, DWORD PTR SS:[EBP-12C]
00562633 51 PUSH ECX
00562634 8D95 D8FEFFFF LEA EDX, DWORD PTR SS:[EBP-128]
0056263A 52 PUSH EDX
0056263B 8D8D 68FFFFFF LEA ECX, DWORD PTR SS:[EBP-98]
00562641 51 PUSH ECX
00562642 57 PUSH EDI
00562643 FF50 24 CALL DWORD PTR DS:[EAX+24]
00562646 E9 0B0F0000 JMP 00563556
0056264B 8D55 A4 LEA EDX, DWORD PTR SS:[EBP-5C]
0056264E 8995 14FFFFFF MOV DWORD PTR SS:[EBP-EC], EDX
00562654 C785 0CFFFFFF 0>MOV DWORD PTR SS:[EBP-F4], 4008
0056265E 4F DEC EDI
0056265F 57 PUSH EDI
00562660 8D85 0CFFFFFF LEA EAX, DWORD PTR SS:[EBP-F4]
00562666 50 PUSH EAX
00562667 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
0056266D 51 PUSH ECX
0056266E FF15 28134000 CALL DWORD PTR DS:[<&MSVBVM60.rtcLeftCharVar>] ; 取左边子串(第4部分)
00562674 8D95 4CFFFFFF LEA EDX, DWORD PTR SS:[EBP-B4]
0056267A 52 PUSH EDX
0056267B FFD3 CALL EBX
0056267D 8BD0 MOV EDX, EAX
0056267F 8D4D A4 LEA ECX, DWORD PTR SS:[EBP-5C]
00562682 FFD6 CALL ESI
00562684 8D8D 4CFFFFFF LEA ECX, DWORD PTR SS:[EBP-B4]
0056268A FF15 20104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar |
|