【破文标题】菜鸟maomaoma的算法练习破文五
【破文作者】maomaoma
【作者邮箱】
【作者主页】无
【破解工具】OD、PEiD
【破解平台】winxp
【软件名称】**休闲五子棋
【软件大小】926K
【原版下载】
【保护方式】无
【软件简介】五子棋游戏
【破解声明】我是菜鸟,学写破文,还请大侠多多指教:)
【 关键词 】 VB VBExplorer 浮点运算 硬件写入(用关键词我觉得方便大家整理查阅)
------------------------------------------------------------------------
【破解过程】
1、PEiD扫描该软件,为Microsoft Visual Basic 5.0 / 6.0编译
2、VBExplorer反编译,得注册过程起始地址00464FD0
3、OD载入,Ctrl+G,跟随至00464FD0,F2下断点,F9运行,OD断下
(1)真假码比较
00464FD0 55 push ebp ; OD断在此处
00464FD1 8BEC mov ebp, esp
00464FD3 83EC 0C sub esp, 0C
00464FD6 68 16164000 push
00464FDB 64:A1 00000000 mov eax, fs:[0]
00464FE1 50 push eax
00464FE2 64:8925 0000000>mov fs:[0], esp
00464FE9 81EC 1C010000 sub esp, 11C
00464FEF 53 push ebx
00464FF0 56 push esi
00464FF1 57 push edi
00464FF2 8965 F4 mov [ebp-C], esp
00464FF5 C745 F8 0016400>mov dword ptr [ebp-8], 00401600
00464FFC 8B75 08 mov esi, [ebp+8]
00464FFF 8BC6 mov eax, esi
00465001 83E0 01 and eax, 1
00465004 8945 FC mov [ebp-4], eax
00465007 83E6 FE and esi, FFFFFFFE
0046500A 56 push esi
0046500B 8975 08 mov [ebp+8], esi
0046500E 8B0E mov ecx, [esi]
00465010 FF51 04 call [ecx+4]
00465013 8B15 5C704600 mov edx, [46705C]
00465019 8B0D 58704600 mov ecx, [467058] ; 真注册码入ECX
0046501F 33C0 xor eax, eax
00465021 3BD1 cmp edx, ecx
00465023 8945 E8 mov [ebp-18], eax
00465026 8945 E4 mov [ebp-1C], eax
00465029 8945 E0 mov [ebp-20], eax
0046502C 8945 DC mov [ebp-24], eax
0046502F 8945 CC mov [ebp-34], eax
00465032 8945 BC mov [ebp-44], eax
00465035 8945 AC mov [ebp-54], eax
00465038 8945 9C mov [ebp-64], eax
0046503B 8945 8C mov [ebp-74], eax
0046503E 8985 7CFFFFFF mov [ebp-84], eax
00465044 8985 6CFFFFFF mov [ebp-94], eax
0046504A 8985 5CFFFFFF mov [ebp-A4], eax
00465050 8985 4CFFFFFF mov [ebp-B4], eax
00465056 8985 3CFFFFFF mov [ebp-C4], eax
0046505C 8985 2CFFFFFF mov [ebp-D4], eax
00465062 0F84 C8090000 je 00465A30
00465068 8B06 mov eax, [esi]
0046506A 56 push esi
0046506B FF90 00030000 call [eax+300]
00465071 8B1D 7C104000 mov ebx, [<&MSVBVM60.__vbaObjSet>] ; MSVBVM60.__vbaObjSet
00465077 8D4D E0 lea ecx, [ebp-20]
0046507A 50 push eax
0046507B 51 push ecx
0046507C FFD3 call ebx
0046507E 8BF8 mov edi, eax
00465080 8D45 E8 lea eax, [ebp-18]
00465083 50 push eax
00465084 57 push edi
00465085 8B17 mov edx, [edi]
00465087 FF92 A0000000 call [edx+A0] ; 取假码
0046508D 85C0 test eax, eax
0046508F DBE2 fclex
00465091 7D 12 jge short 004650A5
00465093 68 A0000000 push 0A0
00465098 68 2C134500 push 0045132C
0046509D 57 push edi
0046509E 50 push eax
0046509F FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
004650A5 8B4D E8 mov ecx, [ebp-18]
004650A8 51 push ecx
004650A9 68 04064500 push 00450604
004650AE FF15 BC104000 call [<&MSVBVM60.__vbaStrCmp>] ; MSVBVM60.__vbaStrCmp
004650B4 8BF8 mov edi, eax
004650B6 8D4D E8 lea ecx, [ebp-18]
004650B9 F7DF neg edi
004650BB 1BFF sbb edi, edi
004650BD F7DF neg edi
004650BF F7DF neg edi
004650C1 FF15 BC114000 call [<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
004650C7 8D4D E0 lea ecx, [ebp-20]
004650CA FF15 B8114000 call [<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
004650D0 66:85FF test di, di
004650D3 0F84 22080000 je 004658FB
004650D9 8B16 mov edx, [esi]
004650DB 56 push esi
004650DC FF92 00030000 call [edx+300]
004650E2 50 push eax
004650E3 8D45 E0 lea eax, [ebp-20]
004650E6 50 push eax
004650E7 FFD3 call ebx
004650E9 8BF8 mov edi, eax
004650EB 8D55 E8 lea edx, [ebp-18]
004650EE 52 push edx
004650EF 57 push edi
004650F0 8B0F mov ecx, [edi]
004650F2 FF91 A0000000 call [ecx+A0] ; 取假码
004650F8 85C0 test eax, eax
004650FA DBE2 fclex
004650FC 7D 12 jge short 00465110
004650FE 68 A0000000 push 0A0
00465103 68 2C134500 push 0045132C
00465108 57 push edi
00465109 50 push eax
0046510A FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
00465110 8B45 E8 mov eax, [ebp-18]
00465113 C745 E8 0000000>mov dword ptr [ebp-18], 0
0046511A 8945 D4 mov [ebp-2C], eax
0046511D 8D45 CC lea eax, [ebp-34]
00465120 50 push eax
00465121 C745 CC 0800000>mov dword ptr [ebp-34], 8
00465128 FF15 C4104000 call [<&MSVBVM60.#561>] ; MSVBVM60.rtcIsNumeric
0046512E 66:8BF8 mov di, ax
00465131 8D4D E0 lea ecx, [ebp-20]
00465134 F7D7 not edi
00465136 FF15 B8114000 call [<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
0046513C 8D4D CC lea ecx, [ebp-34]
0046513F FF15 24104000 call [<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
00465145 66:85FF test di, di
00465148 0F84 9D010000 je 004652EB
0046514E BF 0A000000 mov edi, 0A
00465153 B8 04000280 mov eax, 80020004
00465158 897D 9C mov [ebp-64], edi
0046515B 897D AC mov [ebp-54], edi
0046515E 8B3D 80114000 mov edi, [<&MSVBVM60.__vbaVarDup>] ; MSVBVM60.__vbaVarDup
00465164 8D95 3CFFFFFF lea edx, [ebp-C4]
0046516A 8D4D BC lea ecx, [ebp-44]
0046516D 8945 A4 mov [ebp-5C], eax
00465170 8945 B4 mov [ebp-4C], eax
00465173 C785 44FFFFFF 3>mov dword ptr [ebp-BC], 0045093C
0046517D C785 3CFFFFFF 0>mov dword ptr [ebp-C4], 8
00465187 FFD7 call edi
00465189 8D95 4CFFFFFF lea edx, [ebp-B4]
0046518F 8D4D CC lea ecx, [ebp-34]
00465192 C785 54FFFFFF 4>mov dword ptr [ebp-AC], 00451340
0046519C C785 4CFFFFFF 0>mov dword ptr [ebp-B4], 8
004651A6 FFD7 call edi
004651A8 8D4D 9C lea ecx, [ebp-64]
004651AB 8D55 AC lea edx, [ebp-54]
004651AE 51 push ecx
004651AF 8D45 BC lea eax, [ebp-44]
004651B2 52 push edx
004651B3 50 push eax
004651B4 8D4D CC lea ecx, [ebp-34]
004651B7 6A 30 push 30
004651B9 51 push ecx
004651BA FF15 80104000 call [<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox
004651C0 8D55 9C lea edx, [ebp-64]
004651C3 8D45 AC lea eax, [ebp-54]
004651C6 52 push edx
004651C7 8D4D BC lea ecx, [ebp-44]
004651CA 50 push eax
004651CB 8D55 CC lea edx, [ebp-34]
004651CE 51 push ecx
004651CF 52 push edx
004651D0 6A 04 push 4
004651D2 FF15 38104000 call [<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
004651D8 8B06 mov eax, [esi]
004651DA 83C4 14 add esp, 14
004651DD 56 push esi
004651DE FF90 00030000 call [eax+300]
004651E4 8D4D E0 lea ecx, [ebp-20]
004651E7 50 push eax
004651E8 51 push ecx
004651E9 FFD3 call ebx
004651EB 8BF8 mov edi, eax
004651ED 57 push edi
004651EE 8B17 mov edx, [edi]
004651F0 FF92 04020000 call [edx+204]
004651F6 85C0 test eax, eax
004651F8 DBE2 fclex
004651FA 7D 12 jge short 0046520E
004651FC 68 04020000 push 204
00465201 68 2C134500 push 0045132C
00465206 57 push edi
00465207 50 push eax
00465208 FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
0046520E 8D4D E0 lea ecx, [ebp-20]
00465211 FF15 B8114000 call [<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
00465217 8B06 mov eax, [esi]
00465219 56 push esi
0046521A FF90 00030000 call [eax+300]
00465220 8D4D E0 lea ecx, [ebp-20]
00465223 50 push eax
00465224 51 push ecx
00465225 FFD3 call ebx
00465227 8BF8 mov edi, eax
00465229 6A 00 push 0
0046522B 57 push edi
0046522C 8B17 mov edx, [edi]
0046522E FF92 14010000 call [edx+114]
00465234 85C0 test eax, eax
00465236 DBE2 fclex
00465238 7D 12 jge short 0046524C
0046523A 68 14010000 push 114
0046523F 68 2C134500 push 0045132C
00465244 57 push edi
00465245 50 push eax
00465246 FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
0046524C 8D4D E0 lea ecx, [ebp-20]
0046524F FF15 B8114000 call [<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
00465255 8B06 mov eax, [esi]
00465257 56 push esi
00465258 FF90 00030000 call [eax+300]
0046525E 8D4D DC lea ecx, [ebp-24]
00465261 50 push eax
00465262 51 push ecx
00465263 FFD3 call ebx
00465265 8B16 mov edx, [esi]
00465267 56 push esi
00465268 8BF8 mov edi, eax
0046526A FF92 00030000 call [edx+300]
00465270 50 push eax
00465271 8D45 E0 lea eax, [ebp-20]
00465274 50 push eax
00465275 FFD3 call ebx
00465277 8BF0 mov esi, eax
00465279 8D55 E8 lea edx, [ebp-18]
0046527C 52 push edx
0046527D 56 push esi
0046527E 8B0E mov ecx, [esi]
00465280 FF91 A0000000 call [ecx+A0]
00465286 85C0 test eax, eax
00465288 DBE2 fclex
0046528A 7D 12 jge short 0046529E
0046528C 68 A0000000 push 0A0
00465291 68 2C134500 push 0045132C
00465296 56 push esi
00465297 50 push eax
00465298 FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
0046529E 8B45 E8 mov eax, [ebp-18]
004652A1 8B37 mov esi, [edi]
004652A3 50 push eax
004652A4 FF15 28104000 call [<&MSVBVM60.__vbaLenBstr>] ; MSVBVM60.__vbaLenBstr
004652AA 50 push eax
004652AB 57 push edi
004652AC FF96 1C010000 call [esi+11C]
004652B2 85C0 test eax, eax
004652B4 DBE2 fclex
004652B6 7D 12 jge short 004652CA
004652B8 68 1C010000 push 11C
004652BD 68 2C134500 push 0045132C
004652C2 57 push edi
004652C3 50 push eax
004652C4 FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
004652CA 8D4D E8 lea ecx, [ebp-18]
004652CD FF15 BC114000 call [<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
004652D3 8D4D DC lea ecx, [ebp-24]
004652D6 8D55 E0 lea edx, [ebp-20]
004652D9 51 push ecx
004652DA 52 push edx
004652DB 6A 02 push 2
004652DD FF15 4C104000 call [<&MSVBVM60.__vbaFreeObjList>] ; MSVBVM60.__vbaFreeObjList
004652E3 83C4 0C add esp, 0C
004652E6 E9 43070000 jmp 00465A2E
004652EB 8B06 mov eax, [esi]
004652ED 56 push esi
004652EE FF90 00030000 call [eax+300]
004652F4 8D4D E0 lea ecx, [ebp-20]
004652F7 50 push eax
004652F8 51 push ecx
004652F9 FFD3 call ebx
004652FB 8BF8 mov edi, eax
004652FD 8D45 E8 lea eax, [ebp-18]
00465300 50 push eax
00465301 57 push edi
00465302 8B17 mov edx, [edi]
00465304 FF92 A0000000 call [edx+A0] ; 取假码
0046530A 85C0 test eax, eax
0046530C DBE2 fclex
0046530E 7D 12 jge short 00465322
00465310 68 A0000000 push 0A0
00465315 68 2C134500 push 0045132C
0046531A 57 push edi
0046531B 50 push eax
0046531C FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
00465322 8B4D E8 mov ecx, [ebp-18]
00465325 51 push ecx
00465326 FF15 40114000 call [<&MSVBVM60.__vbaR8Str>] ; MSVBVM60.__vbaR8Str
0046532C DB05 58704600 fild dword ptr [467058] ; 真码装入st0
00465332 DD9D E0FEFFFF fstp qword ptr [ebp-120] ; 真码装入st7
00465338 DC9D E0FEFFFF fcomp qword ptr [ebp-120] ; 真假码比较
0046533E DFE0 fstsw ax ; 保存状态子到AX
00465340 F6C4 40 test ah, 40
00465343 74 07 je short 0046534C
00465345 BF 01000000 mov edi, 1
0046534A EB 02 jmp short 0046534E
0046534C 33FF xor edi, edi
0046534E 8D4D E8 lea ecx, [ebp-18]
00465351 FF15 BC114000 call [<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
00465357 8D4D E0 lea ecx, [ebp-20]
0046535A FF15 B8114000 call [<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
00465360 F7DF neg edi
00465362 66:85FF test di, di
00465365 0F84 71030000 je 004656DC
0046536B A1 68744600 mov eax, [467468]
00465370 85C0 test eax, eax
00465372 75 10 jnz short 00465384
00465374 68 68744600 push 00467468 ; ASCII ",沐"
00465379 68 F4084500 push 004508F4
0046537E FF15 44114000 call [<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
00465384 8B3D 68744600 mov edi, [467468]
0046538A 8D45 E0 lea eax, [ebp-20]
0046538D 50 push eax
0046538E 57 push edi
0046538F 8B17 mov edx, [edi]
00465391 FF52 14 call [edx+14]
00465394 85C0 test eax, eax
00465396 DBE2 fclex
00465398 7D 0F jge short 004653A9
0046539A 6A 14 push 14
0046539C 68 90054500 push 00450590
004653A1 57 push edi
004653A2 50 push eax
004653A3 FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
004653A9 8B45 E0 mov eax, [ebp-20]
004653AC 8D55 E8 lea edx, [ebp-18]
004653AF 52 push edx
004653B0 50 push eax
004653B1 8B08 mov ecx, [eax]
004653B3 8BF8 mov edi, eax
004653B5 FF51 58 call [ecx+58]
004653B8 85C0 test eax, eax
004653BA DBE2 fclex
004653BC 7D 0F jge short 004653CD
004653BE 6A 58 push 58
004653C0 68 04094500 push 00450904
004653C5 57 push edi
004653C6 50 push eax
004653C7 FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
004653CD 8B06 mov eax, [esi]
004653CF 56 push esi
004653D0 FF90 00030000 call [eax+300]
004653D6 8D4D DC lea ecx, [ebp-24]
004653D9 50 push eax
004653DA 51 push ecx
004653DB FFD3 call ebx
004653DD 8BF8 mov edi, eax
004653DF 8D45 E4 lea eax, [ebp-1C]
004653E2 50 push eax
004653E3 57 push edi
004653E4 8B17 mov edx, [edi]
004653E6 FF92 A0000000 call [edx+A0]
004653EC 85C0 test eax, eax
004653EE DBE2 fclex
004653F0 7D 12 jge short 00465404
004653F2 68 A0000000 push 0A0
004653F7 68 2C134500 push 0045132C
004653FC 57 push edi
004653FD 50 push eax
004653FE FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
00465404 8B4D E4 mov ecx, [ebp-1C]
00465407 8B55 E8 mov edx, [ebp-18]
0046540A 51 push ecx
0046540B 68 5C0A4500 push 00450A5C ; hawk wzq ma
00465410 68 500A4500 push 00450A50 ; zc
00465415 52 push edx
00465416 FF15 08104000 call [<&MSVBVM60.#690>] ; MSVBVM60.rtcSaveSetting
0046541C 8D45 E4 lea eax, [ebp-1C]
0046541F 8D4D E8 lea ecx, [ebp-18]
00465422 50 push eax
00465423 51 push ecx
00465424 6A 02 push 2
00465426 FF15 5C114000 call [<&MSVBVM60.__vbaFreeStrList>] ; MSVBVM60.__vbaFreeStrList
0046542C 8D55 DC lea edx, [ebp-24]
0046542F 8D45 E0 lea eax, [ebp-20]
00465432 52 push edx
00465433 50 push eax
00465434 6A 02 push 2
00465436 FF15 4C104000 call [<&MSVBVM60.__vbaFreeObjList>] ; MSVBVM60.__vbaFreeObjList
0046543C 83C4 18 add esp, 18
0046543F BF 0A000000 mov edi, 0A
00465444 8D4D CC lea ecx, [ebp-34]
00465447 57 push edi
00465448 51 push ecx
00465449 FF15 18114000 call [<&MSVBVM60.#608>] ; MSVBVM60.rtcVarBstrFromAnsi
0046544F 8D55 AC lea edx, [ebp-54]
00465452 57 push edi
00465453 52 push edx
00465454 FF15 18114000 call [<&MSVBVM60.#608>] ; MSVBVM60.rtcVarBstrFromAnsi
0046545A 89BD 5CFFFFFF mov [ebp-A4], edi
00465460 89BD 6CFFFFFF mov [ebp-94], edi
00465466 B8 04000280 mov eax, 80020004
0046546B BF 08000000 mov edi, 8
00465470 8D95 2CFFFFFF lea edx, [ebp-D4]
00465476 8D8D 7CFFFFFF lea ecx, [ebp-84]
0046547C 8985 64FFFFFF mov [ebp-9C], eax
00465482 8985 74FFFFFF mov [ebp-8C], eax
00465488 C785 34FFFFFF C>mov dword ptr [ebp-CC], 004505C8 ; ASCII "衏:y"
00465492 89BD 2CFFFFFF mov [ebp-D4], edi
00465498 FF15 80114000 call [<&MSVBVM60.__vbaVarDup>] ; MSVBVM60.__vbaVarDup
0046549E 8D85 5CFFFFFF lea eax, [ebp-A4]
004654A4 8D8D 6CFFFFFF lea ecx, [ebp-94]
004654AA 50 push eax
004654AB 8D95 7CFFFFFF lea edx, [ebp-84]
004654B1 51 push ecx
004654B2 52 push edx
004654B3 8D85 4CFFFFFF lea eax, [ebp-B4]
004654B9 6A 40 push 40
004654BB 8D4D CC lea ecx, [ebp-34]
004654BE 50 push eax
004654BF 8D55 BC lea edx, [ebp-44]
004654C2 89BD 4CFFFFFF mov [ebp-B4], edi
004654C8 89BD 3CFFFFFF mov [ebp-C4], edi
004654CE 8B3D 7C114000 mov edi, [<&MSVBVM60.__vbaVarAdd>] ; MSVBVM60.__vbaVarAdd
004654D4 51 push ecx
004654D5 52 push edx
004654D6 C785 54FFFFFF 6>mov dword ptr [ebp-AC], 00451368
004654E0 C785 44FFFFFF 7>mov dword ptr [ebp-BC], 00451378
004654EA FFD7 call edi
004654EC 50 push eax
004654ED 8D45 AC lea eax, [ebp-54]
004654F0 8D4D 9C lea ecx, [ebp-64]
004654F3 50 push eax
004654F4 51 push ecx
004654F5 FFD7 call edi
004654F7 50 push eax
004654F8 8D95 3CFFFFFF lea edx, [ebp-C4]
004654FE 8D45 8C lea eax, [ebp-74]
00465501 52 push edx
00465502 50 push eax
00465503 FFD7 call edi
00465505 50 push eax
00465506 FF15 80104000 call [<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox
0046550C 8D8D 5CFFFFFF lea ecx, [ebp-A4]
00465512 8D95 6CFFFFFF lea edx, [ebp-94]
00465518 51 push ecx
00465519 8D85 7CFFFFFF lea eax, [ebp-84]
0046551F 52 push edx
00465520 8D4D 8C lea ecx, [ebp-74]
00465523 50 push eax
00465524 51 push ecx
00465525 8D55 9C lea edx, [ebp-64]
00465528 8D45 AC lea eax, [ebp-54]
0046552B 52 push edx
0046552C 8D4D BC lea ecx, [ebp-44]
0046552F 50 push eax
00465530 8D55 CC lea edx, [ebp-34]
00465533 51 push ecx
00465534 52 push edx
00465535 6A 08 push 8
00465537 FF15 38104000 call [<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
0046553D A1 10704600 mov eax, [467010]
00465542 83C4 24 add esp, 24
00465545 85C0 test eax, eax
00465547 75 10 jnz short 00465559
00465549 68 10704600 push 00467010
0046554E 68 F4F04400 push 0044F0F4
00465553 FF15 44114000 call [<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
00465559 A1 10704600 mov eax, [467010]
0046555E 8985 F8FEFFFF mov [ebp-108], eax
00465564 A1 68744600 mov eax, [467468]
00465569 85C0 test eax, eax
0046556B 75 10 jnz short 0046557D
0046556D 68 68744600 push 00467468 ; ASCII ",沐"
00465572 68 F4084500 push 004508F4
00465577 FF15 44114000 call [<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
0046557D 8B3D 68744600 mov edi, [467468]
00465583 8D55 E0 lea edx, [ebp-20]
00465586 52 push edx
00465587 57 push edi
00465588 8B0F mov ecx, [edi]
0046558A FF51 14 call [ecx+14]
0046558D 85C0 test eax, eax
0046558F DBE2 fclex
00465591 7D 0F jge short 004655A2
00465593 6A 14 push 14
00465595 68 90054500 push 00450590
0046559A 57 push edi
0046559B 50 push eax
0046559C FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
004655A2 8B45 E0 mov eax, [ebp-20]
004655A5 8D55 E8 lea edx, [ebp-18]
004655A8 52 push edx
004655A9 50 push eax
004655AA 8B08 mov ecx, [eax]
004655AC 8BF8 mov edi, eax
004655AE FF51 60 call [ecx+60]
004655B1 85C0 test eax, eax
004655B3 DBE2 fclex
004655B5 7D 0F jge short 004655C6
004655B7 6A 60 push 60
004655B9 68 04094500 push 00450904
004655BE 57 push edi
004655BF 50 push eax
004655C0 FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
004655C6 8B4D E8 mov ecx, [ebp-18]
004655C9 8B85 F8FEFFFF mov eax, [ebp-108]
004655CF 51 push ecx
004655D0 68 800A4500 push 00450A80 ; UNICODE "========>"
004655D5 8B38 mov edi, [eax]
004655D7 FF15 58104000 call [<&MSVBVM60.__vbaStrCat>] ; MSVBVM60.__vbaStrCat
004655DD 8BD0 mov edx, eax
004655DF 8D4D E4 lea ecx, [ebp-1C]
004655E2 FF15 94114000 call [<&MSVBVM60.__vbaStrMove>] ; MSVBVM60.__vbaStrMove
004655E8 8BD7 mov edx, edi
004655EA 8BBD F8FEFFFF mov edi, [ebp-108]
004655F0 50 push eax
004655F1 57 push edi
004655F2 FF52 54 call [edx+54]
004655F5 85C0 test eax, eax
004655F7 DBE2 fclex
004655F9 7D 0F jge short 0046560A
004655FB 6A 54 push 54
004655FD 68 64014500 push 00450164
00465602 57 push edi
00465603 50 push eax
00465604 FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
0046560A 8D45 E4 lea eax, [ebp-1C]
0046560D 8D4D E8 lea ecx, [ebp-18]
00465610 50 push eax
00465611 51 push ecx
00465612 6A 02 push 2
00465614 FF15 5C114000 call [<&MSVBVM60.__vbaFreeStrList>] ; MSVBVM60.__vbaFreeStrList
0046561A 83C4 0C add esp, 0C
0046561D 8D4D E0 lea ecx, [ebp-20]
00465620 FF15 B8114000 call [<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
00465626 8B16 mov edx, [esi]
00465628 56 push esi
00465629 FF92 00030000 call [edx+300]
0046562F 50 push eax
00465630 8D45 E0 lea eax, [ebp-20]
00465633 50 push eax
00465634 FFD3 call ebx
00465636 8BF8 mov edi, eax
00465638 8D55 E8 lea edx, [ebp-18]
0046563B 52 push edx
0046563C 57 push edi
0046563D 8B0F mov ecx, [edi]
0046563F FF91 A0000000 call [ecx+A0]
00465645 85C0 test eax, eax
00465647 DBE2 fclex
00465649 7D 12 jge short 0046565D
0046564B 68 A0000000 push 0A0
00465650 68 2C134500 push 0045132C
00465655 57 push edi
00465656 50 push eax
00465657 FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
0046565D 8B45 E8 mov eax, [ebp-18]
00465660 50 push eax
00465661 FF15 58114000 call [<&MSVBVM60.__vbaI4Str>] ; MSVBVM60.__vbaI4Str
00465667 8D4D E8 lea ecx, [ebp-18]
0046566A A3 5C704600 mov [46705C], eax
0046566F FF15 BC114000 call [<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
00465675 8B1D B8114000 mov ebx, [<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
0046567B 8D4D E0 lea ecx, [ebp-20]
0046567E FFD3 call ebx
00465680 A1 68744600 mov eax, [467468]
00465685 85C0 test eax, eax
00465687 75 10 jnz short 00465699
00465689 68 68744600 push 00467468 ; ASCII ",沐"
0046568E 68 F4084500 push 004508F4
00465693 FF15 44114000 call [<&MSVBVM60.__vbaNew2>] ; MSVBVM60.__vbaNew2
00465699 8B3D 68744600 mov edi, [467468]
0046569F 8D4D E0 lea ecx, [ebp-20]
004656A2 56 push esi
004656A3 51 push ecx
004656A4 8B17 mov edx, [edi]
004656A6 8995 D8FEFFFF mov [ebp-128], edx
004656AC FF15 88104000 call [<&MSVBVM60.__vbaObjSetAddref>] ; MSVBVM60.__vbaObjSetAddref
004656B2 8B95 D8FEFFFF mov edx, [ebp-128]
004656B8 50 push eax
004656B9 57 push edi
004656BA FF52 10 call [edx+10]
004656BD 85C0 test eax, eax
004656BF DBE2 fclex
004656C1 7D 0F jge short 004656D2
004656C3 6A 10 push 10
004656C5 68 90054500 push 00450590
004656CA 57 push edi
004656CB 50 push eax
004656CC FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
004656D2 8D4D E0 lea ecx, [ebp-20]
004656D5 FFD3 call ebx
004656D7 E9 52030000 jmp 00465A2E
004656DC 8B06 mov eax, [esi]
004656DE 56 push esi
004656DF FF90 00030000 call [eax+300]
004656E5 8D4D E0 lea ecx, [ebp-20]
004656E8 50 push eax
004656E9 51 push ecx
004656EA FFD3 call ebx
004656EC 8BF8 mov edi, eax
004656EE 8D45 E8 lea eax, [ebp-18]
004656F1 50 push eax
004656F2 57 push edi
004656F3 8B17 mov edx, [edi]
004656F5 FF92 A0000000 call [edx+A0] ; 取假码
004656FB 85C0 test eax, eax
004656FD DBE2 fclex
004656FF 7D 12 jge short 00465713
00465701 68 A0000000 push 0A0
00465706 68 2C134500 push 0045132C
0046570B 57 push edi
0046570C 50 push eax
0046570D FF15 60104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
00465713 8B4D E8 mov ecx, [ebp-18]
00465716 51 push ecx
00465717 FF15 40114000 call [<&MSVBVM60.__vbaR8Str>] ; MSVBVM60.__vbaR8Str
0046571D DB05 58704600 fild dword ptr [467058] ; 真码装入st0
00465723 DD9D D0FEFFFF fstp qword ptr [ebp-130] ; 真码装入st7
00465729 DC9D D0FEFFFF fcomp qword ptr [ebp-130] ; 真假码比较
0046572F DFE0 fstsw ax ; 保存状态子到AX
00465731 F6C4 40 test ah, 40
00465734 75 07 jnz short 0046573D
00465736 B8 01000000 mov eax, 1
0046573B EB 02 jmp short 0046573F
0046573D 33C0 xor eax, eax
0046573F F7D8 neg eax
00465741 8D4D E8 lea ecx, [ebp-18]
00465744 8BF8 mov edi, eax
00465746 FF15 BC114000 call [<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0046574C 8D4D E0 lea ecx, [ebp-20]
0046574F FF15 B8114000 call [<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
00465755 66:85FF test di, di
00465758 0F84 D0020000 je 00465A2E
0046575E BF 0A000000 mov edi, 0A
00465763 B8 04000280 mov eax, 80020004
00465768 897D 9C mov [ebp-64], edi
0046576B 897D AC mov [ebp-54], edi
0046576E 8B3D 80114000 mov edi, [<&MSVBVM60.__vbaVarDup>] ; MSVBVM60.__vbaVarDup
00465774 8D95 3CFFFFFF lea edx, [ebp-C4]
0046577A 8D4D BC lea ecx, [ebp-44]
0046577D 8945 A4 mov [ebp-5C], eax
00465780 8945 B4 mov [ebp-4C], eax
00465783 C785 44FFFFFF 3>mov dword ptr [ebp-BC], 0045093C
0046578D C785 3CFFFFFF 0>mov dword ptr [ebp-C4], 8
00465797 FFD7 call edi
00465799 8D95 4CFFFFFF lea edx, [ebp-B4]
0046579F 8D4D CC lea ecx, [ebp-34]
004657A2 C785 54FFFFFF 4>mov dword ptr [ebp-AC], 00451340
004657AC C785 4CFFFFFF 0>mov dword ptr [ebp-B4], 8
004657B6 FFD7 call edi
004657B8 8D55 9C lea edx, [ebp-64]
004657BB 8D45 AC lea eax, [ebp-54]
004657BE 52 push edx
004657BF 8D4D BC lea ecx, [ebp-44]
004657C2 50 push eax
004657C3 51 push ecx
004657C4 8D55 CC lea edx, [ebp-34]
004657C7 6A 30 push 30
004657C9 52 push edx
004657CA FF15 80104000 call [<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox
004657D0 8D45 9C lea eax, [ebp-64]
004657D3 8D4D AC lea ecx, [ebp-54]
004657D6 50 push eax
004657D7 8D55 BC lea edx, [ebp-44]
004657DA 51 push ecx
004657DB 8D45 CC lea eax, [ebp-34]
004657DE 52 push edx
004657DF 50 push eax
004657E0 6A 04 push 4
(2)追踪真注册码来源
1、根据第一步,得知真码保存于内存[467058],ctrl+F2重新运行程序,在数据窗口,Ctrl+G跟随至00467058,下硬件写入断点
2、F9运行,程序断在系统领空,alt+F9,返回到程序领空如下位置处
0045614D A3 58704600 mov [467058], eax ; eax值(即真码十六进制值)保存于内存00467058处
00456152 FFD6 call esi
00456154 A1 68744600 mov eax, [467468]
00456159 85C0 test eax, eax
0045615B 75 10 jnz short 0045616D
3、向上查看,在
0045612D E8 0EEA0000 call 00464B40 ;
00456132 8BC8 mov ecx, eax
0045612D处下断点
4、重新运行程序,程序断下
0045612D E8 0EEA0000 call 00464B40 ; OD断在此处,此处为机器码计算call
00456132 8BC8 mov ecx, eax
00456134 FF15 74104000 call [<&MSVBVM60.__vbaI4Abs>] ; MSVBVM60.__vbaI4Abs
0045613A 99 cdq
0045613B 2BC2 sub eax, edx ; eax=eax-edx
0045613D 8D4D D4 lea ecx, [ebp-2C]
00456140 D1F8 sar eax, 1 ; eax算术右移
00456142 2D 0EFB2D01 sub eax, 12DFB0E ; eax=eax-12DFB0E
00456147 0F80 45150000 jo 00457692 ; 溢出则跳至程序出错处理部分
0045614D A3 58704600 mov [467058], eax ; eax值(即真码十六进制值)保存于内存00467058处备用
------------------------------------------------------------------------
【破解总结】
1、注册码在程序运行后由机器码计算而来,并保存于内存中;
2、真假码浮点运算比较;
3、注册码以明码形式保存于注册表中。
------------------------------------------------------------------------
【版权声明】本文系作者原创, 转载请注明作者并保持文章的完整, 谢谢!
|