- UID
- 29293
注册时间2007-3-4
阅读权限30
最后登录1970-1-1
龙战于野
该用户从未签到
|
【文章标题】: Excel Workbook Splitter V1.05注册算法简析
【文章作者】: 蚊香
【作者邮箱】: [email protected]
【作者主页】: http://www.xpi386.com
【软件大小】: 1.01MB
【下载地址】: http://www.leleware.com/download/ExcelWorkbookSplitter105.exe
【使用工具】: PEiD,VBExplorer,OllyDBG,计算器
【操作平台】: D版XP-SP3
【软件介绍】: 一个处理Excel表格的工具.
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
PEiD看了一下,VB,于是用VBExplorer找到‘Register’单击事件响应代码开始处004137B0下断开始跟踪.- 004137B0 > \55 PUSH EBP ; 一大堆垃圾代码影响大家的眼球
- 004137B1 . 8BEC MOV EBP,ESP
- 004137B3 . 83EC 0C SUB ESP,0C
- 004137B6 . 68 E6194000 PUSH <JMP.&MSVBVM60.__vbaExceptHandler> ; SE 处理程序安装
- 004137BB . 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
- 004137C1 . 50 PUSH EAX
- 004137C2 . 64:8925 00000>MOV DWORD PTR FS:[0],ESP
- 004137C9 . 81EC B0000000 SUB ESP,0B0
- 004137CF . 53 PUSH EBX
- 004137D0 . 56 PUSH ESI
- 004137D1 . 57 PUSH EDI
- 004137D2 . 8965 F4 MOV DWORD PTR SS:[EBP-C],ESP
- 004137D5 . C745 F8 38124>MOV DWORD PTR SS:[EBP-8],ExcelWor.004012>
- 004137DC . 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]
- 004137DF . 8BC6 MOV EAX,ESI
- 004137E1 . 83E0 01 AND EAX,1
- 004137E4 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
- 004137E7 . 83E6 FE AND ESI,FFFFFFFE
- 004137EA . 56 PUSH ESI
- 004137EB . 8975 08 MOV DWORD PTR SS:[EBP+8],ESI
- 004137EE . 8B0E MOV ECX,DWORD PTR DS:[ESI]
- 004137F0 . FF51 04 CALL DWORD PTR DS:[ECX+4]
- 004137F3 . 8B16 MOV EDX,DWORD PTR DS:[ESI]
- 004137F5 . 33DB XOR EBX,EBX
- 004137F7 . 56 PUSH ESI
- 004137F8 . 895D E8 MOV DWORD PTR SS:[EBP-18],EBX
- 004137FB . 895D E4 MOV DWORD PTR SS:[EBP-1C],EBX
- 004137FE . 895D E0 MOV DWORD PTR SS:[EBP-20],EBX
- 00413801 . 895D DC MOV DWORD PTR SS:[EBP-24],EBX
- 00413804 . 895D CC MOV DWORD PTR SS:[EBP-34],EBX
- 00413807 . 895D BC MOV DWORD PTR SS:[EBP-44],EBX
- 0041380A . 895D AC MOV DWORD PTR SS:[EBP-54],EBX
- 0041380D . 895D 9C MOV DWORD PTR SS:[EBP-64],EBX
- 00413810 . 895D 8C MOV DWORD PTR SS:[EBP-74],EBX
- 00413813 . 899D 7CFFFFFF MOV DWORD PTR SS:[EBP-84],EBX
- 00413819 . 899D 58FFFFFF MOV DWORD PTR SS:[EBP-A8],EBX
- 0041381F . FF92 0C030000 CALL DWORD PTR DS:[EDX+30C]
- 00413825 . 50 PUSH EAX
- 00413826 . 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
- 00413829 . 50 PUSH EAX
- 0041382A . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSe>; MSVBVM60.__vbaObjSet
- 00413830 . 8BF8 MOV EDI,EAX
- 00413832 . 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
- 00413835 . 52 PUSH EDX
- 00413836 . 57 PUSH EDI
- 00413837 . 8B0F MOV ECX,DWORD PTR DS:[EDI]
- 00413839 . FF91 A0000000 CALL DWORD PTR DS:[ECX+A0]
- 0041383F . 3BC3 CMP EAX,EBX
- 00413841 . DBE2 FCLEX
- 00413843 . 7D 12 JGE SHORT ExcelWor.00413857
- 00413845 . 68 A0000000 PUSH 0A0
- 0041384A . 68 88564000 PUSH ExcelWor.00405688
- 0041384F . 57 PUSH EDI
- 00413850 . 50 PUSH EAX
- 00413851 . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj
- 00413857 > 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] ; 用户名
- 0041385A . 8D4D BC LEA ECX,DWORD PTR SS:[EBP-44]
- 0041385D . 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX
- 00413860 . 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34]
- 00413863 . 50 PUSH EAX
- 00413864 . 51 PUSH ECX
- 00413865 . 895D E8 MOV DWORD PTR SS:[EBP-18],EBX
- 00413868 . C745 CC 08000>MOV DWORD PTR SS:[EBP-34],8
- 0041386F . FF15 84104000 CALL DWORD PTR DS:[<&MSVBVM60.#520>] ; MSVBVM60.rtcTrimVar
- 00413875 . 8B15 20604200 MOV EDX,DWORD PTR DS:[426020]
- 0041387B . 8D85 58FFFFFF LEA EAX,DWORD PTR SS:[EBP-A8]
- 00413881 . 8D4D BC LEA ECX,DWORD PTR SS:[EBP-44]
- 00413884 . 50 PUSH EAX
- 00413885 . 8B3A MOV EDI,DWORD PTR DS:[EDX]
- 00413887 . 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]
- 0041388A . 51 PUSH ECX
- 0041388B . 52 PUSH EDX
- 0041388C . FF15 20114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVa>; MSVBVM60.__vbaStrVarVal
- 00413892 . 50 PUSH EAX
- 00413893 . A1 20604200 MOV EAX,DWORD PTR DS:[426020]
- 00413898 . 68 4C524000 PUSH ExcelWor.0040524C ; UNICODE "LicenseName"
- 0041389D . 50 PUSH EAX
- 0041389E . FF57 20 CALL DWORD PTR DS:[EDI+20]
- 004138A1 . 3BC3 CMP EAX,EBX
- 004138A3 . DBE2 FCLEX
- 004138A5 . 7D 15 JGE SHORT ExcelWor.004138BC
- 004138A7 . 8B0D 20604200 MOV ECX,DWORD PTR DS:[426020]
- 004138AD . 6A 20 PUSH 20
- 004138AF . 68 7C524000 PUSH ExcelWor.0040527C
- 004138B4 . 51 PUSH ECX
- 004138B5 . 50 PUSH EAX
- 004138B6 . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj
- 004138BC > 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
- 004138BF . FF15 D8114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
- 004138C5 . 8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]
- 004138C8 . FF15 DC114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>; MSVBVM60.__vbaFreeObj
- 004138CE . 8B1D 24104000 MOV EBX,DWORD PTR DS:[<&MSVBVM60.__vbaFr>; MSVBVM60.__vbaFreeVarList
- 004138D4 . 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44]
- 004138D7 . 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34]
- 004138DA . 52 PUSH EDX
- 004138DB . 50 PUSH EAX
- 004138DC . 6A 02 PUSH 2
- 004138DE . FFD3 CALL EBX ; <&MSVBVM60.__vbaFreeVarList>
- 004138E0 . 8B0E MOV ECX,DWORD PTR DS:[ESI]
- 004138E2 . 83C4 0C ADD ESP,0C
- 004138E5 . 56 PUSH ESI
- 004138E6 . FF91 08030000 CALL DWORD PTR DS:[ECX+308]
- 004138EC . 8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]
- 004138EF . 50 PUSH EAX
- 004138F0 . 52 PUSH EDX
- 004138F1 . FF15 6C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSe>; MSVBVM60.__vbaObjSet
- 004138F7 . 8BF8 MOV EDI,EAX
- 004138F9 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
- 004138FC . 51 PUSH ECX
- 004138FD . 57 PUSH EDI
- 004138FE . 8B07 MOV EAX,DWORD PTR DS:[EDI]
- 00413900 . FF90 A0000000 CALL DWORD PTR DS:[EAX+A0]
- 00413906 . 85C0 TEST EAX,EAX
- 00413908 . DBE2 FCLEX
- 0041390A . 7D 12 JGE SHORT ExcelWor.0041391E
- 0041390C . 68 A0000000 PUSH 0A0
- 00413911 . 68 88564000 PUSH ExcelWor.00405688
- 00413916 . 57 PUSH EDI
- 00413917 . 50 PUSH EAX
- 00413918 . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj
- 0041391E > 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] ; 假码
- 00413921 . 8D55 CC LEA EDX,DWORD PTR SS:[EBP-34]
- 00413924 . 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX
- 00413927 . 8D45 BC LEA EAX,DWORD PTR SS:[EBP-44]
- 0041392A . 52 PUSH EDX
- 0041392B . 50 PUSH EAX
- 0041392C . C745 E8 00000>MOV DWORD PTR SS:[EBP-18],0
- 00413933 . C745 CC 08000>MOV DWORD PTR SS:[EBP-34],8
- 0041393A . FF15 84104000 CALL DWORD PTR DS:[<&MSVBVM60.#520>] ; MSVBVM60.rtcTrimVar
- 00413940 . 8B0D 20604200 MOV ECX,DWORD PTR DS:[426020]
- 00413946 . 8D95 58FFFFFF LEA EDX,DWORD PTR SS:[EBP-A8]
- 0041394C . 8D45 BC LEA EAX,DWORD PTR SS:[EBP-44]
- 0041394F . 52 PUSH EDX
- 00413950 . 8B39 MOV EDI,DWORD PTR DS:[ECX]
- 00413952 . 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
- 00413955 . 50 PUSH EAX
- 00413956 . 51 PUSH ECX
- 00413957 . FF15 20114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVa>; MSVBVM60.__vbaStrVarVal
- 0041395D . 8B15 20604200 MOV EDX,DWORD PTR DS:[426020]
- 00413963 . 50 PUSH EAX
- 00413964 . 68 90524000 PUSH ExcelWor.00405290 ; UNICODE "LicenseCode"
- 00413969 . 52 PUSH EDX
- 0041396A . FF57 20 CALL DWORD PTR DS:[EDI+20]
- 0041396D . 85C0 TEST EAX,EAX
- 0041396F . DBE2 FCLEX
- 00413971 . 7D 15 JGE SHORT ExcelWor.00413988
- 00413973 . 8B0D 20604200 MOV ECX,DWORD PTR DS:[426020]
- 00413979 . 6A 20 PUSH 20
- 0041397B . 68 7C524000 PUSH ExcelWor.0040527C
- 00413980 . 51 PUSH ECX
- 00413981 . 50 PUSH EAX
- 00413982 . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj
- 00413988 > 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
- 0041398B . FF15 D8114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
- 00413991 . 8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]
- 00413994 . FF15 DC114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>; MSVBVM60.__vbaFreeObj
- 0041399A . 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44]
- 0041399D . 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34]
- 004139A0 . 52 PUSH EDX
- 004139A1 . 50 PUSH EAX
- 004139A2 . 6A 02 PUSH 2
- 004139A4 . FFD3 CALL EBX
- 004139A6 . 83C4 0C ADD ESP,0C
- 004139A9 . E8 52F5FFFF CALL ExcelWor.00412F00 ; 关键CALL,F7进
- 004139AE . 66:3D FFFF CMP AX,0FFFF ; 比较
- 004139B2 . B9 04000280 MOV ECX,80020004
- 004139B7 . B8 0A000000 MOV EAX,0A
- 004139BC . 894D A4 MOV DWORD PTR SS:[EBP-5C],ECX
- 004139BF . 8945 9C MOV DWORD PTR SS:[EBP-64],EAX
- 004139C2 . 894D B4 MOV DWORD PTR SS:[EBP-4C],ECX
- 004139C5 . 8945 AC MOV DWORD PTR SS:[EBP-54],EAX
- 004139C8 . 0F85 25010000 JNZ ExcelWor.00413AF3 ; 关键跳,跳向失败
- 004139CE . 894D C4 MOV DWORD PTR SS:[EBP-3C],ECX ; 以下无关代码省略......
复制代码 重载后F7跟进004139A9- 00412F00 $ 55 PUSH EBP
- 00412F01 . 8BEC MOV EBP,ESP
- 00412F03 . 83EC 08 SUB ESP,8
- 00412F06 . 68 E6194000 PUSH <JMP.&MSVBVM60.__vbaExceptHandler> ; SE 处理程序安装
- 00412F0B . 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
- 00412F11 . 50 PUSH EAX
- 00412F12 . 64:8925 00000>MOV DWORD PTR FS:[0],ESP
- 00412F19 . 83EC 48 SUB ESP,48
- 00412F1C . 53 PUSH EBX
- 00412F1D . 56 PUSH ESI
- 00412F1E . 57 PUSH EDI
- 00412F1F . 8965 F8 MOV DWORD PTR SS:[EBP-8],ESP
- 00412F22 . C745 FC E8114>MOV DWORD PTR SS:[EBP-4],ExcelWor.004011>
- 00412F29 . A1 20604200 MOV EAX,DWORD PTR DS:[426020]
- 00412F2E . 8D55 B0 LEA EDX,DWORD PTR SS:[EBP-50]
- 00412F31 . 52 PUSH EDX
- 00412F32 . 33F6 XOR ESI,ESI
- 00412F34 . 8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]
- 00412F37 . 8975 E0 MOV DWORD PTR SS:[EBP-20],ESI
- 00412F3A . 8975 DC MOV DWORD PTR SS:[EBP-24],ESI
- 00412F3D . 8975 D4 MOV DWORD PTR SS:[EBP-2C],ESI
- 00412F40 . 8975 C4 MOV DWORD PTR SS:[EBP-3C],ESI
- 00412F43 . 8975 B4 MOV DWORD PTR SS:[EBP-4C],ESI
- 00412F46 . 8975 B0 MOV DWORD PTR SS:[EBP-50],ESI
- 00412F49 . 8B08 MOV ECX,DWORD PTR DS:[EAX]
- 00412F4B . 52 PUSH EDX
- 00412F4C . 68 4C524000 PUSH ExcelWor.0040524C ; UNICODE "LicenseName"
- 00412F51 . 50 PUSH EAX
- 00412F52 . FF51 1C CALL DWORD PTR DS:[ECX+1C]
- 00412F55 . 3BC6 CMP EAX,ESI
- 00412F57 . DBE2 FCLEX
- 00412F59 . 7D 15 JGE SHORT ExcelWor.00412F70
- 00412F5B . 8B0D 20604200 MOV ECX,DWORD PTR DS:[426020]
- 00412F61 . 6A 1C PUSH 1C
- 00412F63 . 68 7C524000 PUSH ExcelWor.0040527C
- 00412F68 . 51 PUSH ECX
- 00412F69 . 50 PUSH EAX
- 00412F6A . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj
- 00412F70 > A1 20604200 MOV EAX,DWORD PTR DS:[426020]
- 00412F75 . 8D4D B0 LEA ECX,DWORD PTR SS:[EBP-50]
- 00412F78 . 51 PUSH ECX
- 00412F79 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
- 00412F7C . 8B10 MOV EDX,DWORD PTR DS:[EAX]
- 00412F7E . 51 PUSH ECX
- 00412F7F . 68 90524000 PUSH ExcelWor.00405290 ; UNICODE "LicenseCode"
- 00412F84 . 50 PUSH EAX
- 00412F85 . FF52 1C CALL DWORD PTR DS:[EDX+1C]
- 00412F88 . 3BC6 CMP EAX,ESI
- 00412F8A . DBE2 FCLEX
- 00412F8C . 7D 15 JGE SHORT ExcelWor.00412FA3
- 00412F8E . 8B15 20604200 MOV EDX,DWORD PTR DS:[426020]
- 00412F94 . 6A 1C PUSH 1C
- 00412F96 . 68 7C524000 PUSH ExcelWor.0040527C
- 00412F9B . 52 PUSH EDX
- 00412F9C . 50 PUSH EAX
- 00412F9D . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj
- 00412FA3 > 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C] ; 假码
- 00412FA6 . 8B3D 1C104000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaLe>; MSVBVM60.__vbaLenBstr
- 00412FAC . 50 PUSH EAX
- 00412FAD . FFD7 CALL EDI ; 假码位数; <&MSVBVM60.__vbaLenBstr>
- 00412FAF . 8B4D DC MOV ECX,DWORD PTR SS:[EBP-24] ; 用户名
- 00412FB2 . 8BD8 MOV EBX,EAX
- 00412FB4 . F7DB NEG EBX
- 00412FB6 . 1BDB SBB EBX,EBX
- 00412FB8 . 51 PUSH ECX
- 00412FB9 . F7DB NEG EBX
- 00412FBB . FFD7 CALL EDI ; 用户名位数
- 00412FBD . F7D8 NEG EAX
- 00412FBF . 1BC0 SBB EAX,EAX
- 00412FC1 . F7D8 NEG EAX
- 00412FC3 . 85D8 TEST EAX,EBX
- 00412FC5 . 75 0A JNZ SHORT ExcelWor.00412FD1
- 00412FC7 . 8975 D8 MOV DWORD PTR SS:[EBP-28],ESI
- 00412FCA . 68 41304100 PUSH ExcelWor.00413041
- 00412FCF . EB 56 JMP SHORT ExcelWor.00413027
- 00412FD1 > 8B55 DC MOV EDX,DWORD PTR SS:[EBP-24]
- 00412FD4 . 52 PUSH EDX
- 00412FD5 . E8 86000000 CALL ExcelWor.00413060 ; 算法CALL,F7进
- 00412FDA . 8D55 C4 LEA EDX,DWORD PTR SS:[EBP-3C] ; 省略以下无关代码......
复制代码 进入00412FD5- 00413060 $ 55 PUSH EBP
- 00413061 . 8BEC MOV EBP,ESP
- 00413063 . 83EC 0C SUB ESP,0C
- 00413066 . 68 E6194000 PUSH <JMP.&MSVBVM60.__vbaExceptHandler> ; SE 处理程序安装
- 0041306B . 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
- 00413071 . 50 PUSH EAX
- 00413072 . 64:8925 00000>MOV DWORD PTR FS:[0],ESP
- 00413079 . 81EC 98000000 SUB ESP,98
- 0041307F . 53 PUSH EBX
- 00413080 . 56 PUSH ESI
- 00413081 . 57 PUSH EDI
- 00413082 . 8965 F4 MOV DWORD PTR SS:[EBP-C],ESP
- 00413085 . C745 F8 F8114>MOV DWORD PTR SS:[EBP-8],ExcelWor.004011>
- 0041308C . 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
- 0041308F . 33C0 XOR EAX,EAX
- 00413091 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
- 00413094 . 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
- 00413097 . 8945 DC MOV DWORD PTR SS:[EBP-24],EAX
- 0041309A . 8945 D8 MOV DWORD PTR SS:[EBP-28],EAX
- 0041309D . 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX
- 004130A0 . 8945 C4 MOV DWORD PTR SS:[EBP-3C],EAX
- 004130A3 . 8945 B4 MOV DWORD PTR SS:[EBP-4C],EAX
- 004130A6 . 8945 A4 MOV DWORD PTR SS:[EBP-5C],EAX
- 004130A9 . 8945 94 MOV DWORD PTR SS:[EBP-6C],EAX
- 004130AC . 8945 84 MOV DWORD PTR SS:[EBP-7C],EAX
- 004130AF . 8985 64FFFFFF MOV DWORD PTR SS:[EBP-9C],EAX
- 004130B5 . FF15 54114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCo>; MSVBVM60.__vbaStrCopy
- 004130BB . 8B3D 9C104000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar
- 004130C1 . 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
- 004130C4 . 8D4D C4 LEA ECX,DWORD PTR SS:[EBP-3C]
- 004130C7 . 8945 8C MOV DWORD PTR SS:[EBP-74],EAX
- 004130CA . 51 PUSH ECX
- 004130CB . 8D55 84 LEA EDX,DWORD PTR SS:[EBP-7C]
- 004130CE . 6A 01 PUSH 1
- 004130D0 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
- 004130D3 . 52 PUSH EDX
- 004130D4 . 50 PUSH EAX
- 004130D5 . C745 CC 01000>MOV DWORD PTR SS:[EBP-34],1
- 004130DC . C745 C4 02000>MOV DWORD PTR SS:[EBP-3C],2
- 004130E3 . C745 84 08400>MOV DWORD PTR SS:[EBP-7C],4008
- 004130EA . FFD7 CALL EDI ; <&MSVBVM60.#632>
- 004130EC . 8B1D 20114000 MOV EBX,DWORD PTR DS:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrVarVal
- 004130F2 . 8D4D B4 LEA ECX,DWORD PTR SS:[EBP-4C]
- 004130F5 . 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
- 004130F8 . 51 PUSH ECX
- 004130F9 . 52 PUSH EDX
- 004130FA . FFD3 CALL EBX ; <&MSVBVM60.__vbaStrVarVal>
- 004130FC . 50 PUSH EAX
- 004130FD . FF15 30104000 CALL DWORD PTR DS:[<&MSVBVM60.#516>] ; 用户名第一位的ASCII
- 00413103 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
- 00413106 . 8BF0 MOV ESI,EAX
- 00413108 . FF15 D8114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
- 0041310E . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
- 00413111 . 8D4D C4 LEA ECX,DWORD PTR SS:[EBP-3C]
- 00413114 . 50 PUSH EAX
- 00413115 . 51 PUSH ECX
- 00413116 . 6A 02 PUSH 2
- 00413118 . FF15 24104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList
- 0041311E . 66:8BC6 MOV AX,SI
- 00413121 . 66:B9 0A00 MOV CX,0A ; CX=0AH
- 00413125 . 66:99 CWD
- 00413127 . 66:F7F9 IDIV CX ; 用户名第一位ASCII与0AH取余保存到EDX,记为A
- 0041312A . 83C4 0C ADD ESP,0C
- 0041312D . 8955 E0 MOV DWORD PTR SS:[EBP-20],EDX
- 00413130 . 8B55 D8 MOV EDX,DWORD PTR SS:[EBP-28]
- 00413133 . 52 PUSH EDX
- 00413134 . FF15 1C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenBs>; MSVBVM60.__vbaLenBstr
- 0041313A . 8BC8 MOV ECX,EAX
- 0041313C . FF15 C0104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaI2I4>>; MSVBVM60.__vbaI2I4
- 00413142 . 8985 5CFFFFFF MOV DWORD PTR SS:[EBP-A4],EAX
- 00413148 . BE 01000000 MOV ESI,1
- 0041314D > 66:3BB5 5CFFF>CMP SI,WORD PTR SS:[EBP-A4]
- 00413154 . 0F8F CE000000 JG ExcelWor.00413228
- 0041315A . 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]
- 0041315D . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
- 00413160 . 8985 6CFFFFFF MOV DWORD PTR SS:[EBP-94],EAX
- 00413166 . 8D55 C4 LEA EDX,DWORD PTR SS:[EBP-3C]
- 00413169 . 0FBFC6 MOVSX EAX,SI
- 0041316C . 894D 8C MOV DWORD PTR SS:[EBP-74],ECX
- 0041316F . 52 PUSH EDX
- 00413170 . 8D4D 84 LEA ECX,DWORD PTR SS:[EBP-7C]
- 00413173 . 50 PUSH EAX
- 00413174 . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C]
- 00413177 . 51 PUSH ECX
- 00413178 . 52 PUSH EDX
- 00413179 . C785 64FFFFFF>MOV DWORD PTR SS:[EBP-9C],8
- 00413183 . C745 CC 01000>MOV DWORD PTR SS:[EBP-34],1
- 0041318A . C745 C4 02000>MOV DWORD PTR SS:[EBP-3C],2
- 00413191 . C745 84 08400>MOV DWORD PTR SS:[EBP-7C],4008
- 00413198 . FFD7 CALL EDI
- 0041319A . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
- 0041319D . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
- 004131A0 . 50 PUSH EAX
- 004131A1 . 51 PUSH ECX
- 004131A2 . FFD3 CALL EBX
- 004131A4 . 50 PUSH EAX
- 004131A5 . FF15 30104000 CALL DWORD PTR DS:[<&MSVBVM60.#516>] ; 依次取用户名ASCII
- 004131AB . 66:0345 E0 ADD AX,WORD PTR SS:[EBP-20] ; 加上上面得到的A
- 004131AF . 0F80 E1000000 JO ExcelWor.00413296
- 004131B5 . 66:03C6 ADD AX,SI ; 加上自己所在用户名的位数i
- 004131B8 . 0F80 D8000000 JO ExcelWor.00413296
- 004131BE . 0FBFD0 MOVSX EDX,AX
- 004131C1 . 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C]
- 004131C4 . 52 PUSH EDX
- 004131C5 . 50 PUSH EAX
- 004131C6 . FF15 18114000 CALL DWORD PTR DS:[<&MSVBVM60.#608>] ; 转换为对应的字符
- 004131CC . 8D8D 64FFFFFF LEA ECX,DWORD PTR SS:[EBP-9C]
- 004131D2 . 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C]
- 004131D5 . 51 PUSH ECX
- 004131D6 . 8D45 94 LEA EAX,DWORD PTR SS:[EBP-6C]
- 004131D9 . 52 PUSH EDX
- 004131DA . 50 PUSH EAX
- 004131DB . FF15 24114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarCa>; MSVBVM60.__vbaVarCat
- 004131E1 . 50 PUSH EAX
- 004131E2 . FF15 20104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVa>; 连接字符串
- 004131E8 . 8BD0 MOV EDX,EAX
- 004131EA . 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
- 004131ED . FF15 9C114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMo>; MSVBVM60.__vbaStrMove
- 004131F3 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
- 004131F6 . FF15 D8114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
- 004131FC . 8D4D 94 LEA ECX,DWORD PTR SS:[EBP-6C]
- 004131FF . 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C]
- 00413202 . 51 PUSH ECX
- 00413203 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
- 00413206 . 52 PUSH EDX
- 00413207 . 8D4D C4 LEA ECX,DWORD PTR SS:[EBP-3C]
- 0041320A . 50 PUSH EAX
- 0041320B . 51 PUSH ECX
- 0041320C . 6A 04 PUSH 4
- 0041320E . FF15 24104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList
- 00413214 . B8 01000000 MOV EAX,1
- 00413219 . 83C4 14 ADD ESP,14
- 0041321C . 66:03C6 ADD AX,SI
- 0041321F . 70 75 JO SHORT ExcelWor.00413296
- 00413221 . 8BF0 MOV ESI,EAX
- 00413223 .^ E9 25FFFFFF JMP ExcelWor.0041314D ; 循环
- 00413228 > 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C] ; 省略以下无关代码......
复制代码 --------------------------------------------------------------------------------
【算法总结】
首先取用户名第一位ASCII与10(0AH)取余得到A.
依次取用户名每一位的ASCII加上A,再加上所在用户名的位数i,再转换为对应ASCII的字符.
最后依次连接所得字符即为对应注册码..注册信息保存到软件安装目录下的 \Config\Config.cfg
KeyGen核心源码(VB Code):- Dim Name, Code As String
- Dim L, A As Integer
- Name = CStr(Text1.Text)
- L = Len(Name)
- If L = 0 Then
- Text2.Text = "Input your name!"
- Else
- A = Asc(Left(Name, 1)) Mod 10
- For i = 1 To L
- Code = Code & Chr((Asc(Mid(Name, i, 1)) + A + i))
- Next
- Text2.Text = Code
- End If
复制代码 --------------------------------------------------------------------------------
【版权声明】: 本文由 蚊香 原创,转载请注明作者并保持文章的完整,谢谢! |
|