- UID
- 17574
注册时间2006-7-6
阅读权限40
最后登录1970-1-1
独步武林
该用户从未签到
|
【破文标题】all to text1.5算法分析
【破文作者】tigerisme
【破解工具】常用PEiD,OD
【破解平台】Windows XP SP2
【软件名称】All to Text 1.5
【软件大小】1063KB
【原版下载】自己搜索下
【保护方式】用户名+注册码
【更新时间】2006-9-1 6:13:29
是一款设计不错的TXT文件转换工具,它可以很轻松的将.html、.htm、.doc、.rft文件转换成.txt文件。如果你需要经常的做一些这样的转换工作,那么这款软件对你来说是非常的有用。...
授权: 共享 大小: 1063KB 平台: Win9x/Me/NT/2000/XP/2003
上次写了这个软件的追码及内存注册机制作https://www.chinapyg.com/viewthr ... &extra=page%3D1,今天我来试着分析算法。算法中还有点问题需要兄弟们指点一下!!!!:lol:
注册名:tigerisme 试练码:123456789
在这里下断:
0042D100 > \55 push ebp
0042D101 . 8BEC mov ebp,esp
0042D103 . 83EC 08 sub esp,8
0042D106 . 68 161B4000 push <jmp.&MSVBVM60.__vbaExceptHandler> ; SE 处理程序安装
0042D10B . 64:A1 00000000 mov eax,dword ptr fs:[0]
0042D111 . 50 push eax
0042D112 . 64:8925 000000>mov dword ptr fs:[0],esp
0042D119 . 81EC 0C010000 sub esp,10C
0042D11F . 53 push ebx
0042D120 . 56 push esi
0042D121 . 57 push edi
0042D122 . 8965 F8 mov dword ptr ss:[ebp-8],esp
0042D125 . C745 FC A01A40>mov dword ptr ss:[ebp-4],all2text.00401AA0
0042D12C . 8B55 0C mov edx,dword ptr ss:[ebp+C]
0042D12F . 8B7D 08 mov edi,dword ptr ss:[ebp+8]
0042D132 . 8B07 mov eax,dword ptr ds:[edi]
0042D134 . 33DB xor ebx,ebx
0042D136 . 8D4D EC lea ecx,dword ptr ss:[ebp-14]
0042D139 . 51 push ecx
0042D13A . 52 push edx
0042D13B . 57 push edi
0042D13C . 895D EC mov dword ptr ss:[ebp-14],ebx
0042D13F . 895D E8 mov dword ptr ss:[ebp-18],ebx
0042D142 . 895D E4 mov dword ptr ss:[ebp-1C],ebx
0042D145 . 895D E0 mov dword ptr ss:[ebp-20],ebx
0042D148 . 895D DC mov dword ptr ss:[ebp-24],ebx
0042D14B . 895D D8 mov dword ptr ss:[ebp-28],ebx
0042D14E . 895D C8 mov dword ptr ss:[ebp-38],ebx
0042D151 . 895D B8 mov dword ptr ss:[ebp-48],ebx
0042D154 . 895D A8 mov dword ptr ss:[ebp-58],ebx
0042D157 . 895D 98 mov dword ptr ss:[ebp-68],ebx
0042D15A . 895D 88 mov dword ptr ss:[ebp-78],ebx
0042D15D . 899D 78FFFFFF mov dword ptr ss:[ebp-88],ebx
0042D163 . 899D 68FFFFFF mov dword ptr ss:[ebp-98],ebx
0042D169 . 899D 58FFFFFF mov dword ptr ss:[ebp-A8],ebx
0042D16F . 899D 48FFFFFF mov dword ptr ss:[ebp-B8],ebx
0042D175 . 899D 38FFFFFF mov dword ptr ss:[ebp-C8],ebx
0042D17B . FF90 F8060000 call dword ptr ds:[eax+6F8] 算法call
0042D181 . 3BC3 cmp eax,ebx
0042D183 . 7D 12 jge short all2text.0042D197
0042D185 . 68 F8060000 push 6F8
0042D18A . 68 806B4000 push all2text.00406B80
0042D18F . 57 push edi
0042D190 . 50 push eax
0042D191 . FF15 80104000 call dword ptr ds:[<&MSVBVM60.__vbaHresultCheck>; MSVBVM60.__vbaHresultCheckObj
0042D197 > 8B45 10 mov eax,dword ptr ss:[ebp+10]
0042D19A . 8B08 mov ecx,dword ptr ds:[eax] ; 试练码12345送ecx
0042D19C . 8B55 EC mov edx,dword ptr ss:[ebp-14]
0042D19F . 51 push ecx
0042D1A0 . 52 push edx
0042D1A1 . FF15 FC104000 call dword ptr ds:[<&MSVBVM60.__vbaStrCmp>] ; MSVBVM60.__vbaStrCmp
0042D1A7 . 8BF0 mov esi,eax
0042D1A9 . F7DE neg esi
0042D1AB . 1BF6 sbb esi,esi
0042D1AD . 46 inc esi
0042D1AE . 8D4D EC lea ecx,dword ptr ss:[ebp-14]
0042D1B1 . F7DE neg esi
0042D1B3 . FF15 5C124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0042D1B9 . 66:3BF3 cmp si,bx
0042D1BC . B9 04000280 mov ecx,80020004
0042D1C1 . 74 71 je short all2text.0042D234
0042D1C3 . B8 0A000000 mov eax,0A
0042D1C8 . 894D A0 mov dword ptr ss:[ebp-60],ecx
0042D1CB . 894D B0 mov dword ptr ss:[ebp-50],ecx
0042D1CE . 894D C0 mov dword ptr ss:[ebp-40],ecx
0042D1D1 . 8D95 48FFFFFF lea edx,dword ptr ss:[ebp-B8]
0042D1D7 . 8D4D C8 lea ecx,dword ptr ss:[ebp-38]
0042D1DA . 8945 98 mov dword ptr ss:[ebp-68],eax
0042D1DD . 8945 A8 mov dword ptr ss:[ebp-58],eax
0042D1E0 . 8945 B8 mov dword ptr ss:[ebp-48],eax
0042D1E3 . C785 50FFFFFF >mov dword ptr ss:[ebp-B0],all2text.004085A4 ; congratulations! registration succeeded! please quit and run it again.
0042D1ED . C785 48FFFFFF >mov dword ptr ss:[ebp-B8],8
0042D1F7 . FF15 F8114000 call dword ptr ds:[<&MSVBVM60.__vbaVarDup>] ; MSVBVM60.__vbaVarDup
0042D1FD . 8D45 98 lea eax,dword ptr ss:[ebp-68]
0042D200 . 50 push eax
0042D201 . 8D4D A8 lea ecx,dword ptr ss:[ebp-58]
0042D204 . 51 push ecx
0042D205 . 8D55 B8 lea edx,dword ptr ss:[ebp-48]
0042D208 . 52 push edx
0042D209 . 53 push ebx
0042D20A . 8D45 C8 lea eax,dword ptr ss:[ebp-38]
0042D20D . 50 push eax
0042D20E . FF15 AC104000 call dword ptr ds:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox
跟进算法call到这里:
0042D5F0 > \55 push ebp
0042D5F1 . 8BEC mov ebp,esp
0042D5F3 . 83EC 0C sub esp,0C
0042D5F6 . 68 161B4000 push <jmp.&MSVBVM60.__vbaExceptHandler> ; SE 处理程序安装
0042D5FB . 64:A1 0000000>mov eax,dword ptr fs:[0]
0042D601 . 50 push eax
0042D602 . 64:8925 00000>mov dword ptr fs:[0],esp
0042D609 . 81EC 38010000 sub esp,138
0042D60F . 53 push ebx
0042D610 . 56 push esi
0042D611 . 57 push edi
0042D612 . 8965 F4 mov dword ptr ss:[ebp-C],esp
0042D615 . C745 F8 B01A4>mov dword ptr ss:[ebp-8],all2text.00401AB0
0042D61C . 33F6 xor esi,esi
0042D61E . 8975 FC mov dword ptr ss:[ebp-4],esi
0042D621 . 8B45 08 mov eax,dword ptr ss:[ebp+8]
0042D624 . 8B08 mov ecx,dword ptr ds:[eax]
0042D626 . 50 push eax
0042D627 . FF51 04 call dword ptr ds:[ecx+4]
0042D62A . 8B55 10 mov edx,dword ptr ss:[ebp+10]
0042D62D . 8B45 0C mov eax,dword ptr ss:[ebp+C]
0042D630 . 8932 mov dword ptr ds:[edx],esi
0042D632 . 8B10 mov edx,dword ptr ds:[eax] ; 注册名tigerisme送edx
0042D634 . 8D4D C0 lea ecx,dword ptr ss:[ebp-40]
0042D637 . 8975 DC mov dword ptr ss:[ebp-24],esi
0042D63A . 8975 CC mov dword ptr ss:[ebp-34],esi
0042D63D . 8975 C4 mov dword ptr ss:[ebp-3C],esi
0042D640 . 8975 C0 mov dword ptr ss:[ebp-40],esi
0042D643 . 8975 B8 mov dword ptr ss:[ebp-48],esi
0042D646 . 8975 A8 mov dword ptr ss:[ebp-58],esi
0042D649 . 8975 98 mov dword ptr ss:[ebp-68],esi
0042D64C . 8975 88 mov dword ptr ss:[ebp-78],esi
0042D64F . 89B5 78FFFFFF mov dword ptr ss:[ebp-88],esi
0042D655 . 89B5 68FFFFFF mov dword ptr ss:[ebp-98],esi
0042D65B . 89B5 58FFFFFF mov dword ptr ss:[ebp-A8],esi
0042D661 . 89B5 48FFFFFF mov dword ptr ss:[ebp-B8],esi
0042D667 . 89B5 38FFFFFF mov dword ptr ss:[ebp-C8],esi
0042D66D . 89B5 28FFFFFF mov dword ptr ss:[ebp-D8],esi
0042D673 . 89B5 18FFFFFF mov dword ptr ss:[ebp-E8],esi
0042D679 . 89B5 08FFFFFF mov dword ptr ss:[ebp-F8],esi
0042D67F . 89B5 F8FEFFFF mov dword ptr ss:[ebp-108],esi
0042D685 . 89B5 E8FEFFFF mov dword ptr ss:[ebp-118],esi
0042D68B . 89B5 D8FEFFFF mov dword ptr ss:[ebp-128],esi
0042D691 . FF15 C4114000 call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>] ; MSVBVM60.__vbaStrCopy
0042D697 . 8B55 C0 mov edx,dword ptr ss:[ebp-40] ; tigerisme放入ebp-40,并送edx
0042D69A . 8B3D 30104000 mov edi,dword ptr ds:[<&MSVBVM60.__vbaLenBstr>>; MSVBVM60.__vbaLenBstr
0042D6A0 . 8D4D C0 lea ecx,dword ptr ss:[ebp-40]
0042D6A3 . BE 08000000 mov esi,8 ; esi=8
0042D6A8 . BB 08400000 mov ebx,4008 ; ebx=4008
0042D6AD . 52 push edx ; tigerisme
0042D6AE . C785 20FFFFFF>mov dword ptr ss:[ebp-E0],all2text.00408710 ; i送ebp-E0**********************
——————————————————————————
我们停在这里看一下:
下d 00408710命令,则看到数据处显示:
00008710 49 00 00 00 02 00 00 00 I......
这里是将固定值I放入注册名中,后面还有两处
00008718 56 00 00 00 02 00 00 00 V......
00008720 59 00 00 00 08 00 00 00 Y......
——————————————————————————
0042D6B8 . 89B5 18FFFFFF mov dword ptr ss:[ebp-E8],esi ; ebp-E8=8
0042D6BE . 898D 30FFFFFF mov dword ptr ss:[ebp-D0],ecx
0042D6C4 . 899D 28FFFFFF mov dword ptr ss:[ebp-D8],ebx ; ebp-D8=4008
0042D6CA . FFD7 call edi ; <&MSVBVM60.__vbaLenBstr>
0042D6CC . 83C0 01 add eax,1 ; 这里是注册名位数9与1相加,等于A
0042D6CF . 0F80 07060000 jo all2text.0042DCDC
0042D6D5 . 99 cdq
0042D6D6 . 2BC2 sub eax,edx ; A-0
0042D6D8 . D1F8 sar eax,1 ; A与1进行sar运算,结果为5
0042D6DA . 50 push eax ; eax为5
0042D6DB . 8D85 28FFFFFF lea eax,dword ptr ss:[ebp-D8]
0042D6E1 . 50 push eax
0042D6E2 . 8D4D A8 lea ecx,dword ptr ss:[ebp-58]
0042D6E5 . 51 push ecx
0042D6E6 . FF15 18124000 call dword ptr ds:[<&MSVBVM60.#617>] ; MSVBVM60.rtcLeftCharVar
0042D6EC . 8B4D C0 mov ecx,dword ptr ss:[ebp-40] ; tigerisme送ecx
0042D6EF . 8D85 78FFFFFF lea eax,dword ptr ss:[ebp-88]
0042D6F5 . 50 push eax
0042D6F6 . 8D55 C0 lea edx,dword ptr ss:[ebp-40]
0042D6F9 . 51 push ecx ; ecx为tigerisme
0042D6FA . C785 10FFFFFF>mov dword ptr ss:[ebp-F0],all2text.00408718 ; v送ebp-F0**********************
0042D704 . 89B5 08FFFFFF mov dword ptr ss:[ebp-F8],esi ; ebp-F8等于8
0042D70A . C745 80 04000>mov dword ptr ss:[ebp-80],80020004 ; [ebp-80]等于80020004
0042D711 . C785 78FFFFFF>mov dword ptr ss:[ebp-88],0A ; [ebp-88]等于0A
0042D71B . 8995 00FFFFFF mov dword ptr ss:[ebp-100],edx ; ebp-100等于tigerisme
0042D721 . 899D F8FEFFFF mov dword ptr ss:[ebp-108],ebx ; ebx=4008
0042D727 . FFD7 call edi ; <&MSVBVM60.__vbaLenBstr>
0042D729 . 8B1D E4104000 mov ebx,dword ptr ds:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar
0042D72F . 83C0 01 add eax,1 ; 9+1=A
0042D732 . 0F80 A4050000 jo all2text.0042DCDC
0042D738 . 99 cdq
0042D739 . 2BC2 sub eax,edx ; A-0
0042D73B . D1F8 sar eax,1 ; A与1进行sar运算
0042D73D . 50 push eax ; 5
0042D73E . 8D95 F8FEFFFF lea edx,dword ptr ss:[ebp-108]
0042D744 . 52 push edx
0042D745 . 8D85 68FFFFFF lea eax,dword ptr ss:[ebp-98]
0042D74B . 50 push eax
0042D74C . FFD3 call ebx ; <&MSVBVM60.#632>
0042D74E . 8D8D 18FFFFFF lea ecx,dword ptr ss:[ebp-E8]
0042D754 . 51 push ecx
0042D755 . 8D55 A8 lea edx,dword ptr ss:[ebp-58]
0042D758 . 52 push edx
0042D759 . 8D45 98 lea eax,dword ptr ss:[ebp-68]
0042D75C . 89B5 D8FEFFFF mov dword ptr ss:[ebp-128],esi ; ebp-128等于8
0042D762 . 8B35 84114000 mov esi,dword ptr ds:[<&MSVBVM60.__vbaVarCat>] ; MSVBVM60.__vbaVarCat
0042D768 . 50 push eax
0042D769 . C785 E0FEFFFF>mov dword ptr ss:[ebp-120],all2text.00408720 ; y送ebp-120**********************
0042D773 . FFD6 call esi ; <&MSVBVM60.__vbaVarCat>
0042D775 . 50 push eax
0042D776 . 8D8D 08FFFFFF lea ecx,dword ptr ss:[ebp-F8]
0042D77C . 51 push ecx
0042D77D . 8D55 88 lea edx,dword ptr ss:[ebp-78]
0042D780 . 52 push edx
0042D781 . FFD6 call esi ; <&MSVBVM60.__vbaVarCat>
0042D783 . 50 push eax
0042D784 . 8D85 68FFFFFF lea eax,dword ptr ss:[ebp-98]
0042D78A . 50 push eax
0042D78B . 8D8D 58FFFFFF lea ecx,dword ptr ss:[ebp-A8]
0042D791 . 51 push ecx
0042D792 . FFD6 call esi ; <&MSVBVM60.__vbaVarCat>
0042D794 . 50 push eax
0042D795 . 8D95 D8FEFFFF lea edx,dword ptr ss:[ebp-128]
0042D79B . 52 push edx
0042D79C . 8D85 48FFFFFF lea eax,dword ptr ss:[ebp-B8]
0042D7A2 . 50 push eax
0042D7A3 . FFD6 call esi ; <&MSVBVM60.__vbaVarCat>
0042D7A5 . 50 push eax
0042D7A6 . FF15 2C104000 call dword ptr ds:[<&MSVBVM60.__vbaStrVarMove>>; MSVBVM60.__vbaStrVarMove
0042D7AC . 8BD0 mov edx,eax ; 结果为ItigerVrismeY
0042D7AE . 8D4D C0 lea ecx,dword ptr ss:[ebp-40]
0042D7B1 . FF15 24124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMove>] ; MSVBVM60.__vbaStrMove
0042D7B7 . 8D8D 48FFFFFF lea ecx,dword ptr ss:[ebp-B8]
0042D7BD . 51 push ecx
0042D7BE . 8D95 58FFFFFF lea edx,dword ptr ss:[ebp-A8]
0042D7C4 . 52 push edx
0042D7C5 . 8D85 68FFFFFF lea eax,dword ptr ss:[ebp-98]
0042D7CB . 50 push eax
0042D7CC . 8D4D 88 lea ecx,dword ptr ss:[ebp-78]
0042D7CF . 51 push ecx
0042D7D0 . 8D95 78FFFFFF lea edx,dword ptr ss:[ebp-88]
0042D7D6 . 52 push edx
0042D7D7 . 8D45 98 lea eax,dword ptr ss:[ebp-68]
0042D7DA . 50 push eax
0042D7DB . 8D4D A8 lea ecx,dword ptr ss:[ebp-58]
0042D7DE . 51 push ecx
0042D7DF . 6A 07 push 7
0042D7E1 . FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>; MSVBVM60.__vbaFreeVarList
0042D7E7 . 83C4 20 add esp,20
0042D7EA . 8D95 28FFFFFF lea edx,dword ptr ss:[ebp-D8]
0042D7F0 . 8D4D CC lea ecx,dword ptr ss:[ebp-34]
0042D7F3 . C785 30FFFFFF>mov dword ptr ss:[ebp-D0],all2text.00406834
0042D7FD . C785 28FFFFFF>mov dword ptr ss:[ebp-D8],8
0042D807 . FF15 04124000 call dword ptr ds:[<&MSVBVM60.__vbaVarCopy>] ; MSVBVM60.__vbaVarCopy
0042D80D . 8B55 C0 mov edx,dword ptr ss:[ebp-40] ; ItigerVrismeY送edx
0042D810 . 52 push edx ; ItigerVrismeY等于edx
0042D811 . FFD7 call edi ; <&MSVBVM60.__vbaLenBstr>
0042D813 . 8BC8 mov ecx,eax ; eax=ecx
0042D815 . FF15 0C114000 call dword ptr ds:[<&MSVBVM60.__vbaI2I4>] ; MSVBVM60.__vbaI2I4
0042D81B . BF 02000000 mov edi,2 ; 2送edi
0042D820 . 8985 D0FEFFFF mov dword ptr ss:[ebp-130],eax ; ebp-130等于D
0042D826 . B8 01000000 mov eax,1
0042D82B . 8945 C8 mov dword ptr ss:[ebp-38],eax ; ebp-38等于1
0042D82E > 66:3B85 D0FEF>cmp ax,word ptr ss:[ebp-130] ; 循环与D进行比较,即与13比较
0042D835 . 0F8F 0B010000 jg all2text.0042D946 ; 大于D则跳转
0042D83B . 8D55 A8 lea edx,dword ptr ss:[ebp-58] ; ebp-58等于ItigerVrismeY
0042D83E . 52 push edx
0042D83F . 0FBFC0 movsx eax,ax
0042D842 . 8D4D C0 lea ecx,dword ptr ss:[ebp-40]
0042D845 . 898D 30FFFFFF mov dword ptr ss:[ebp-D0],ecx
0042D84B . 50 push eax
0042D84C . 8D8D 28FFFFFF lea ecx,dword ptr ss:[ebp-D8]
0042D852 . 51 push ecx
0042D853 . 8D55 98 lea edx,dword ptr ss:[ebp-68]
0042D856 . 52 push edx
0042D857 . C745 B0 01000>mov dword ptr ss:[ebp-50],1 ; ebp-50=tiger,即字符传的前半部分
0042D85E . 897D A8 mov dword ptr ss:[ebp-58],edi
0042D861 . C785 28FFFFFF>mov dword ptr ss:[ebp-D8],4008
0042D86B . FFD3 call ebx
0042D86D . 6A 01 push 1
0042D86F . 8D45 CC lea eax,dword ptr ss:[ebp-34]
0042D872 . 50 push eax
0042D873 . 8D8D 08FFFFFF lea ecx,dword ptr ss:[ebp-F8]
0042D879 . 51 push ecx
0042D87A . 8D55 88 lea edx,dword ptr ss:[ebp-78]
0042D87D . 52 push edx
0042D87E . C785 10FFFFFF>mov dword ptr ss:[ebp-F0],8 ; ebp-F0等于8
0042D888 . 89BD 08FFFFFF mov dword ptr ss:[ebp-F8],edi
0042D88E . FFD6 call esi
0042D890 . 50 push eax
0042D891 . 8D85 78FFFFFF lea eax,dword ptr ss:[ebp-88]
0042D897 . 50 push eax
0042D898 . FF15 18124000 call dword ptr ds:[<&MSVBVM60.#617>] ; MSVBVM60.rtcLeftCharVar
0042D89E . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042D8A1 . 51 push ecx
0042D8A2 . 8D55 B8 lea edx,dword ptr ss:[ebp-48]
0042D8A5 . 52 push edx
0042D8A6 . FF15 80114000 call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>] ; MSVBVM60.__vbaStrVarVal
0042D8AC . 50 push eax
0042D8AD . FF15 50104000 call dword ptr ds:[<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
0042D8B3 . 0FBFD8 movsx ebx,ax ; ItigerVrismeY字符逐个送ebx
0042D8B6 . 8D85 78FFFFFF lea eax,dword ptr ss:[ebp-88]
0042D8BC . 50 push eax
0042D8BD . FF15 54124000 call dword ptr ds:[<&MSVBVM60.__vbaI4ErrVar>] ; MSVBVM60.__vbaI4ErrVar
0042D8C3 . 0FAFD8 imul ebx,eax ; ItigerVrismeY字符的ascii码与8相乘
0042D8C6 . 8D4D CC lea ecx,dword ptr ss:[ebp-34]
0042D8C9 . 51 push ecx
0042D8CA . 8D95 F8FEFFFF lea edx,dword ptr ss:[ebp-108]
0042D8D0 . 52 push edx
0042D8D1 . 8D85 68FFFFFF lea eax,dword ptr ss:[ebp-98]
0042D8D7 . 0F80 FF030000 jo all2text.0042DCDC
0042D8DD . 50 push eax
0042D8DE . 899D 00FFFFFF mov dword ptr ss:[ebp-100],ebx ; ebx=codeB,送ebp-100
0042D8E4 . C785 F8FEFFFF>mov dword ptr ss:[ebp-108],3 ; ebp-108等于3
0042D8EE . FFD6 call esi
0042D8F0 . 8BD0 mov edx,eax
0042D8F2 . 8D4D CC lea ecx,dword ptr ss:[ebp-34]
0042D8F5 . FF15 14104000 call dword ptr ds:[<&MSVBVM60.__vbaVarMove>] ; MSVBVM60.__vbaVarMove
0042D8FB . 8D4D B8 lea ecx,dword ptr ss:[ebp-48]
0042D8FE . FF15 5C124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0042D904 . 8D8D 78FFFFFF lea ecx,dword ptr ss:[ebp-88]
0042D90A . 51 push ecx
0042D90B . 8D95 78FFFFFF lea edx,dword ptr ss:[ebp-88]
0042D911 . 52 push edx
0042D912 . 8D45 88 lea eax,dword ptr ss:[ebp-78]
0042D915 . 50 push eax
0042D916 . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042D919 . 51 push ecx
0042D91A . 8D55 A8 lea edx,dword ptr ss:[ebp-58]
0042D91D . 52 push edx
0042D91E . 6A 05 push 5
0042D920 . FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>; MSVBVM60.__vbaFreeVarList
0042D926 . 8B1D E4104000 mov ebx,dword ptr ds:[<&MSVBVM60.#632>] ; codeB送ebx
0042D92C . B8 01000000 mov eax,1
0042D931 . 83C4 18 add esp,18
0042D934 . 66:0345 C8 add ax,word ptr ss:[ebp-38] ; 1+1
0042D938 . 0F80 9E030000 jo all2text.0042DCDC
0042D93E . 8945 C8 mov dword ptr ss:[ebp-38],eax ; 2
0042D941 .^ E9 E8FEFFFF jmp all2text.0042D82E
0042D946 > 8D95 28FFFFFF lea edx,dword ptr ss:[ebp-D8]
0042D94C . 8D4D DC lea ecx,dword ptr ss:[ebp-24]
0042D94F . C785 30FFFFFF>mov dword ptr ss:[ebp-D0],all2text.00406834
0042D959 . C785 28FFFFFF>mov dword ptr ss:[ebp-D8],8
0042D963 . FF15 04124000 call dword ptr ds:[<&MSVBVM60.__vbaVarCopy>] ; MSVBVM60.__vbaVarCopy
0042D969 . 8D45 CC lea eax,dword ptr ss:[ebp-34]
0042D96C . 50 push eax
0042D96D . 8D4D A8 lea ecx,dword ptr ss:[ebp-58]
0042D970 . 51 push ecx
0042D971 . 89BD 30FFFFFF mov dword ptr ss:[ebp-D0],edi
0042D977 . 89BD 28FFFFFF mov dword ptr ss:[ebp-D8],edi
0042D97D . FF15 84104000 call dword ptr ds:[<&MSVBVM60.__vbaLenVar>] ; MSVBVM60.__vbaLenVar
0042D983 . 50 push eax
0042D984 . 8D95 28FFFFFF lea edx,dword ptr ss:[ebp-D8]
0042D98A . 52 push edx
0042D98B . 8D45 98 lea eax,dword ptr ss:[ebp-68]
0042D98E . 50 push eax
0042D98F . FF15 38104000 call dword ptr ds:[<&MSVBVM60.__vbaVarIdiv>] ; MSVBVM60.__vbaVarIdiv
0042D995 . 50 push eax
0042D996 . FF15 88114000 call dword ptr ds:[<&MSVBVM60.__vbaI2Var>] ; MSVBVM60.__vbaI2Var
0042D99C . 8985 C8FEFFFF mov dword ptr ss:[ebp-138],eax ; ebp-138等于13
0042D9A2 . B8 01000000 mov eax,1
0042D9A7 . 8945 C8 mov dword ptr ss:[ebp-38],eax
0042D9AA > 66:3B85 C8FEF>cmp ax,word ptr ss:[ebp-138] ; 循环到大于13
0042D9B1 . 0F8F 47010000 jg all2text.0042DAFE ; 大于13则跳转
0042D9B7 . 0FBFD0 movsx edx,ax
0042D9BA . 8D4D A8 lea ecx,dword ptr ss:[ebp-58]
0042D9BD . 51 push ecx
0042D9BE . 52 push edx
0042D9BF . 8D45 CC lea eax,dword ptr ss:[ebp-34]
0042D9C2 . 50 push eax
0042D9C3 . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042D9C6 . 51 push ecx
0042D9C7 . C745 B0 01000>mov dword ptr ss:[ebp-50],1
0042D9CE . 897D A8 mov dword ptr ss:[ebp-58],edi
0042D9D1 . FFD3 call ebx
0042D9D3 . 66:8B55 C8 mov dx,word ptr ss:[ebp-38]
0042D9D7 . 8D85 58FFFFFF lea eax,dword ptr ss:[ebp-A8]
0042D9DD . 50 push eax
0042D9DE . 8D4D CC lea ecx,dword ptr ss:[ebp-34]
0042D9E1 . 66:8995 10FFF>mov word ptr ss:[ebp-F0],dx
0042D9E8 . 51 push ecx
0042D9E9 . 8D55 88 lea edx,dword ptr ss:[ebp-78]
0042D9EC . 52 push edx
0042D9ED . C785 60FFFFFF>mov dword ptr ss:[ebp-A0],1
0042D9F7 . 89BD 58FFFFFF mov dword ptr ss:[ebp-A8],edi ; ebp-A8等于2
0042D9FD . 89BD 20FFFFFF mov dword ptr ss:[ebp-E0],edi ; ebp-E0等于2
0042DA03 . 89BD 18FFFFFF mov dword ptr ss:[ebp-E8],edi ; ebp-E8等于2
0042DA09 . 89BD 08FFFFFF mov dword ptr ss:[ebp-F8],edi ; ebp-F8等于2
0042DA0F . FF15 84104000 call dword ptr ds:[<&MSVBVM60.__vbaLenVar>] ; MSVBVM60.__vbaLenVar
0042DA15 . 50 push eax
0042DA16 . 8D85 18FFFFFF lea eax,dword ptr ss:[ebp-E8]
0042DA1C . 50 push eax
0042DA1D . 8D8D 78FFFFFF lea ecx,dword ptr ss:[ebp-88]
0042DA23 . 51 push ecx
0042DA24 . FF15 38104000 call dword ptr ds:[<&MSVBVM60.__vbaVarIdiv>] ; MSVBVM60.__vbaVarIdiv
0042DA2A . 50 push eax
0042DA2B . 8D95 08FFFFFF lea edx,dword ptr ss:[ebp-F8]
0042DA31 . 52 push edx
0042DA32 . 8D85 68FFFFFF lea eax,dword ptr ss:[ebp-98]
0042DA38 . 50 push eax
0042DA39 . FF15 F0114000 call dword ptr ds:[<&MSVBVM60.__vbaVarAdd>] ; MSVBVM60.__vbaVarAdd
0042DA3F . 50 push eax
0042DA40 . FF15 E8114000 call dword ptr ds:[<&MSVBVM60.__vbaI4Var>] ; MSVBVM60.__vbaI4Var
0042DA46 . 50 push eax ; 14
0042DA47 . 8D4D CC lea ecx,dword ptr ss:[ebp-34]
0042DA4A . 51 push ecx
0042DA4B . 8D95 48FFFFFF lea edx,dword ptr ss:[ebp-B8]
0042DA51 . 52 push edx
0042DA52 . FFD3 call ebx
0042DA54 . 8B1D 54124000 mov ebx,dword ptr ds:[<&MSVBVM60.__vbaI4ErrVar>; MSVBVM60.__vbaI4ErrVar
0042DA5A . 8D85 48FFFFFF lea eax,dword ptr ss:[ebp-B8]
0042DA60 . 50 push eax
0042DA61 . FFD3 call ebx ; <&MSVBVM60.__vbaI4ErrVar>
0042DA63 . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042DA66 . 8BD0 mov edx,eax
0042DA68 . 51 push ecx
0042DA69 . 8995 B4FEFFFF mov dword ptr ss:[ebp-14C],edx
0042DA6F . FFD3 call ebx ; <&MSVBVM60.__vbaI4ErrVar>
0042DA71 . 8B95 B4FEFFFF mov edx,dword ptr ss:[ebp-14C]
0042DA77 . 03D0 add edx,eax
0042DA79 . 8D85 E8FEFFFF lea eax,dword ptr ss:[ebp-118]
0042DA7F . 0F80 57020000 jo all2text.0042DCDC
0042DA85 . 50 push eax
0042DA86 . 8D4D DC lea ecx,dword ptr ss:[ebp-24]
0042DA89 . 8995 F0FEFFFF mov dword ptr ss:[ebp-110],edx
0042DA8F . 51 push ecx
0042DA90 . 8D95 38FFFFFF lea edx,dword ptr ss:[ebp-C8]
0042DA96 . 52 push edx
0042DA97 . C785 E8FEFFFF>mov dword ptr ss:[ebp-118],3
0042DAA1 . FFD6 call esi
0042DAA3 . 8BD0 mov edx,eax
0042DAA5 . 8D4D DC lea ecx,dword ptr ss:[ebp-24]
0042DAA8 . FF15 14104000 call dword ptr ds:[<&MSVBVM60.__vbaVarMove>] ; MSVBVM60.__vbaVarMove
0042DAAE . 8D85 48FFFFFF lea eax,dword ptr ss:[ebp-B8]
0042DAB4 . 50 push eax
0042DAB5 . 8D8D 48FFFFFF lea ecx,dword ptr ss:[ebp-B8]
0042DABB . 51 push ecx
0042DABC . 8D95 58FFFFFF lea edx,dword ptr ss:[ebp-A8]
0042DAC2 . 52 push edx
0042DAC3 . 8D85 68FFFFFF lea eax,dword ptr ss:[ebp-98]
0042DAC9 . 50 push eax
0042DACA . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042DACD . 51 push ecx
0042DACE . 8D55 98 lea edx,dword ptr ss:[ebp-68]
0042DAD1 . 52 push edx
0042DAD2 . 8D45 A8 lea eax,dword ptr ss:[ebp-58]
0042DAD5 . 50 push eax
0042DAD6 . 6A 07 push 7
0042DAD8 . FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>; MSVBVM60.__vbaFreeVarList
0042DADE . 8B1D E4104000 mov ebx,dword ptr ds:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar
0042DAE4 . B8 01000000 mov eax,1
0042DAE9 . 83C4 20 add esp,20
0042DAEC . 66:0345 C8 add ax,word ptr ss:[ebp-38]
0042DAF0 . 0F80 E6010000 jo all2text.0042DCDC
0042DAF6 . 8945 C8 mov dword ptr ss:[ebp-38],eax
0042DAF9 .^ E9 ACFEFFFF jmp all2text.0042D9AA
0042DAFE > 8D55 DC lea edx,dword ptr ss:[ebp-24]
0042DB01 . 8D4D CC lea ecx,dword ptr ss:[ebp-34]
0042DB04 . FF15 04124000 call dword ptr ds:[<&MSVBVM60.__vbaVarCopy>] ; MSVBVM60.__vbaVarCopy
0042DB0A . BA 34684000 mov edx,all2text.00406834 ; 32
0042DB0F . 8D4D C0 lea ecx,dword ptr ss:[ebp-40]
0042DB12 . FF15 C4114000 call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>] ; MSVBVM60.__vbaStrCopy
0042DB18 . 8D4D CC lea ecx,dword ptr ss:[ebp-34]
0042DB1B . 51 push ecx
0042DB1C . 8D55 A8 lea edx,dword ptr ss:[ebp-58]
0042DB1F . 52 push edx
0042DB20 . 89BD 30FFFFFF mov dword ptr ss:[ebp-D0],edi
0042DB26 . 89BD 28FFFFFF mov dword ptr ss:[ebp-D8],edi
0042DB2C . FF15 84104000 call dword ptr ds:[<&MSVBVM60.__vbaLenVar>] ; MSVBVM60.__vbaLenVar
0042DB32 . 50 push eax
0042DB33 . 8D85 28FFFFFF lea eax,dword ptr ss:[ebp-D8]
0042DB39 . 50 push eax
0042DB3A . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042DB3D . 51 push ecx
0042DB3E . FF15 38104000 call dword ptr ds:[<&MSVBVM60.__vbaVarIdiv>] ; MSVBVM60.__vbaVarIdiv
0042DB44 . 50 push eax
0042DB45 . FF15 88114000 call dword ptr ds:[<&MSVBVM60.__vbaI2Var>] ; MSVBVM60.__vbaI2Var
0042DB4B . 8985 C0FEFFFF mov dword ptr ss:[ebp-140],eax ; C送ebp-140************************
0042DB51 . B8 01000000 mov eax,1
0042DB56 . 8945 C8 mov dword ptr ss:[ebp-38],eax
0042DB59 > /66:3B85 C0FEFF>cmp ax,word ptr ss:[ebp-140] ; ax逐个与C即12比较
0042DB60 . |0F8F CF000000 jg all2text.0042DC35
0042DB66 . |66:6BC0 02 imul ax,ax,2 ; imul运算
0042DB6A . |0F80 6C010000 jo all2text.0042DCDC
0042DB70 . |66:2D 0100 sub ax,1 ; 结果分别为2,4,6,8……
0042DB74 . |0F80 62010000 jo all2text.0042DCDC
0042DB7A . |8D55 A8 lea edx,dword ptr ss:[ebp-58]
0042DB7D . |52 push edx
0042DB7E . |0FBFC0 movsx eax,ax ; 1,3,5,7,9……送eax
0042DB81 . |50 push eax
0042DB82 . |8D4D CC lea ecx,dword ptr ss:[ebp-34] ; ecx为C
0042DB85 . |51 push ecx
0042DB86 . |8D55 98 lea edx,dword ptr ss:[ebp-68]
0042DB89 . |52 push edx
0042DB8A . |897D B0 mov dword ptr ss:[ebp-50],edi ; 2送ebp-50
0042DB8D . |897D A8 mov dword ptr ss:[ebp-58],edi ; 2送ebp-58
0042DB90 . |FFD3 call ebx
0042DB92 . |8D45 98 lea eax,dword ptr ss:[ebp-68]
0042DB95 . |50 push eax
0042DB96 . |FF15 88114000 call dword ptr ds:[<&MSVBVM60.__vbaI2Var>] ; 经过运算eax分别得出54,C,33……记做codeA
0042DB9C . |8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042DB9F . |51 push ecx
0042DBA0 . |8D55 A8 lea edx,dword ptr ss:[ebp-58] ; edx分别为54,C,33……
0042DBA3 . |52 push edx
0042DBA4 . |57 push edi
0042DBA5 . |8945 BC mov dword ptr ss:[ebp-44],eax ; ebp-44分别等于54,C……,记做codeA
0042DBA8 . |FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>>; MSVBVM60.__vbaFreeVarList
0042DBAE . |66:8B45 BC mov ax,word ptr ss:[ebp-44]
0042DBB2 . |66:99 cwd
0042DBB4 . |66:B9 1A00 mov cx,1A ; 1A送cx
0042DBB8 . |66:F7F9 idiv cx ; codeA的ascii码除1A,余数记做codeB,余数放在edx中
0042DBBB . |83C4 0C add esp,0C
0042DBBE . |8D45 A8 lea eax,dword ptr ss:[ebp-58]
0042DBC1 . |66:83C2 41 add dx,41 ; codeB分别与41相加,结果转成字符即分别为G,M……
0042DBC5 . |0F80 11010000 jo all2text.0042DCDC
0042DBCB . |0FBFD2 movsx edx,dx
0042DBCE . |52 push edx
0042DBCF . |50 push eax
0042DBD0 . |FF15 68114000 call dword ptr ds:[<&MSVBVM60.#608>] ; MSVBVM60.rtcVarBstrFromAnsi
0042DBD6 . |8B4D C0 mov ecx,dword ptr ss:[ebp-40]
0042DBD9 . |8D55 A8 lea edx,dword ptr ss:[ebp-58]
0042DBDC . |52 push edx
0042DBDD . |8D85 28FFFFFF lea eax,dword ptr ss:[ebp-D8]
0042DBE3 . |898D 30FFFFFF mov dword ptr ss:[ebp-D0],ecx
0042DBE9 . |50 push eax
0042DBEA . |8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042DBED . |51 push ecx
0042DBEE . |C785 28FFFFFF >mov dword ptr ss:[ebp-D8],8
0042DBF8 . |FFD6 call esi
0042DBFA . |50 push eax
0042DBFB . |FF15 2C104000 call dword ptr ds:[<&MSVBVM60.__vbaStrVarMove>] ; 算法call
0042DC01 . |8BD0 mov edx,eax ; 这里逐个出现注册码MG……,最后出现的是UMGZKMGNFZMG,即为真正注册码
0042DC03 . |8D4D C0 lea ecx,dword ptr ss:[ebp-40]
0042DC06 . |FF15 24124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMove>] ; MSVBVM60.__vbaStrMove
0042DC0C . |8D55 98 lea edx,dword ptr ss:[ebp-68]
0042DC0F . |52 push edx
0042DC10 . |8D45 A8 lea eax,dword ptr ss:[ebp-58]
0042DC13 . |50 push eax
0042DC14 . |57 push edi
0042DC15 . |FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>>; MSVBVM60.__vbaFreeVarList
0042DC1B . |B8 01000000 mov eax,1
0042DC20 . |83C4 0C add esp,0C
0042DC23 . |66:0345 C8 add ax,word ptr ss:[ebp-38]
0042DC27 . |0F80 AF000000 jo all2text.0042DCDC
0042DC2D . |8945 C8 mov dword ptr ss:[ebp-38],eax
0042DC30 .^\E9 24FFFFFF jmp all2text.0042DB59
0042DC35 > 8B55 C0 mov edx,dword ptr ss:[ebp-40]
0042DC38 . 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0042DC3B . FF15 C4114000 call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>] ; MSVBVM60.__vbaStrCopy
0042DC41 . 68 B5DC4200 push all2text.0042DCB5
0042DC46 . EB 53 jmp short all2text.0042DC9B
0042DC48 . F645 FC 04 test byte ptr ss:[ebp-4],4
0042DC4C . 74 09 je short all2text.0042DC57
0042DC4E . 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0042DC51 . FF15 5C124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0042DC57 > 8D4D B8 lea ecx,dword ptr ss:[ebp-48]
0042DC5A . FF15 5C124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0042DC60 . 8D8D 38FFFFFF lea ecx,dword ptr ss:[ebp-C8]
0042DC66 . 51 push ecx
0042DC67 . 8D95 48FFFFFF lea edx,dword ptr ss:[ebp-B8]
0042DC6D . 52 push edx
0042DC6E . 8D85 58FFFFFF lea eax,dword ptr ss:[ebp-A8]
0042DC74 . 50 push eax
0042DC75 . 8D8D 68FFFFFF lea ecx,dword ptr ss:[ebp-98]
0042DC7B . 51 push ecx
0042DC7C . 8D95 78FFFFFF lea edx,dword ptr ss:[ebp-88]
0042DC82 . 52 push edx
0042DC83 . 8D45 88 lea eax,dword ptr ss:[ebp-78]
0042DC86 . 50 push eax
0042DC87 . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042DC8A . 51 push ecx
0042DC8B . 8D55 A8 lea edx,dword ptr ss:[ebp-58]
0042DC8E . 52 push edx
0042DC8F . 6A 08 push 8
0042DC91 . FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>>; MSVBVM60.__vbaFreeVarList
0042DC97 . 83C4 24 add esp,24
0042DC9A . C3 retn
总结:算法基本思路我是有了,但还是在关键的地方没有弄清楚,还请高人指点
0042DB59 > /66:3B85 C0FEFF>cmp ax,word ptr ss:[ebp-140] ; ax逐个与C即12比较
0042DB60 . |0F8F CF000000 jg all2text.0042DC35
0042DB66 . |66:6BC0 02 imul ax,ax,2 ; imul运算
0042DB6A . |0F80 6C010000 jo all2text.0042DCDC
0042DB70 . |66:2D 0100 sub ax,1 ; 结果分别为2,4,6,8……
0042DB74 . |0F80 62010000 jo all2text.0042DCDC
0042DB7A . |8D55 A8 lea edx,dword ptr ss:[ebp-58]
0042DB7D . |52 push edx
0042DB7E . |0FBFC0 movsx eax,ax ; 1,3,5,7,9……送eax
0042DB81 . |50 push eax
0042DB82 . |8D4D CC lea ecx,dword ptr ss:[ebp-34] ; ecx为C
0042DB85 . |51 push ecx
0042DB86 . |8D55 98 lea edx,dword ptr ss:[ebp-68]
0042DB89 . |52 push edx
0042DB8A . |897D B0 mov dword ptr ss:[ebp-50],edi ; 2送ebp-50
0042DB8D . |897D A8 mov dword ptr ss:[ebp-58],edi ; 2送ebp-58
0042DB90 . |FFD3 call ebx
0042DB92 . |8D45 98 lea eax,dword ptr ss:[ebp-68]
0042DB95 . |50 push eax
0042DB96 . |FF15 88114000 call dword ptr ds:[<&MSVBVM60.__vbaI2Var>] ; 经过运算eax分别得出54,C,33……记做codeA
这里的eax是如何运算得到的54,C,33……,我是菜鸟,向兄弟们学习!
[ 本帖最后由 tigerisme 于 2006-9-9 14:29 编辑 ] |
|