交通法規考試系統2005 破解簡析
交通法規考試系統2005 破解簡析
工具: od , VB反編譯器
宣告:高手略過…… 破VB一個字煩.
交通法規考試系統2005 分北京版本,與全國版,破了任何一個,都開始用任何一個~對作者衝擊很大,簡單的分析一下;有錯誤的地方,感謝指出.
軟體介紹:是浮游工作室的主打產品,對使用者透過駕駛執照的理論考試有巨大的幫助,根據兩年來大量使用者的反饋,使用本軟體進行備考,可以明顯縮短備考時間,消除機考的緊張感,並讓您輕鬆透過理論考試。
註冊事件入口:
0045E250 > \55 push ebp
0045E251 . 8BEC mov ebp,esp
0045E253 . 83EC 14 sub esp,14
0045E256 . 68 762A4000 push <jmp.&MSVBVM60.__vbaExceptHandler> ; SE handler installation
0045E25B . 64:A1 00000000 mov eax,dword ptr fs:[0]
0045E261 . 50 push eax
0045E262 . 64:8925 00000000 mov dword ptr fs:[0],esp
0045E269 . 81EC E8000000 sub esp,0E8
……找到關鍵CALL:
0045E4AD . 8D4D C0 lea ecx,dword ptr ss:[ebp-40]
0045E4B0 . 51 push ecx ;指向假註冊嗎
0045E4B1 . 8D55 C4 lea edx,dword ptr ss:[ebp-3C]
0045E4B4 . 52 push edx ;指向使用者名稱
0045E4B5 . E8 160AFDFF call TranExam.0042EED
……函式入口:
0042EED0 $ 55 push ebp
0042EED1 . 8BEC mov ebp,esp
0042EED3 . 83EC 08 sub esp,8
……
q i w e i x u e 長度為:8
71 69 77 65 69 78 75 65 ;16進位制
113 105 119 101 105 120 117 101 ;10進位制
10.6301 10.247 10.9087 10.04988 10.24695 10.95445 10.81665 10.049876 ;平方根
第一個迴圈,8次:
0042EF6B . BE 01000000 mov esi,1 ; esi 計數器=1
0042EF70 . 8975 E8 mov dword ptr ss:[ebp-18],esi ; [ebp-18] =esi=1
0042EF73 > 3BF0 cmp esi,eax ; eax=8,esi=1
0042EF75 . 0F8F C5020000 jg TranExam.0042F240 ;當esi大與eax,跳出迴圈
0042EF7B . 8B45 08 mov eax,dword ptr ss:[ebp+8] ; (*[ebp-8])=qiweixue(0x1747e4)
0042EF7E . 8D8D 78FFFFFF lea ecx,dword ptr ss:[ebp-88] ; [ebp-88]=0
0042EF84 . 8985 40FFFFFF mov dword ptr ss:[ebp-C0],eax ; (*[ebp-c0])=qiweixue(0x1747e4)
0042EF8A . 51 push ecx
0042EF8B . 8D95 38FFFFFF lea edx,dword ptr ss:[ebp-C8] ; [ebp-c8]=0
0042EF91 . 56 push esi ; esi=1 記數為1
0042EF92 . 8D85 68FFFFFF lea eax,dword ptr ss:[ebp-98] ; [ebp-98]=0
0042EF98 . 52 push edx
0042EF99 . 50 push eax
0042EF9A . C745 80 01000000 mov dword ptr ss:[ebp-80],1 ; [ebp-80]=1
0042EFA1 . C785 78FFFFFF 020>mov dword ptr ss:[ebp-88],2 ; [ebp-88]=2
0042EFAB . C785 38FFFFFF 084>mov dword ptr ss:[ebp-C8],4008
0042EFB5 . FF15 BC104000 call dword ptr ds:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar
0042EFBB . 8D8D 68FFFFFF lea ecx,dword ptr ss:[ebp-98]
0042EFC1 . 8D55 A8 lea edx,dword ptr ss:[ebp-58]
0042EFC4 . 51 push ecx
0042EFC5 . 52 push edx
0042EFC6 . FFD3 call ebx
0042EFC8 . 50 push eax
0042EFC9 . FF15 40104000 call dword ptr ds:[<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
0042EFCF . 8BC8 mov ecx,eax ; 返回 q 的ASC=71
0042EFD1 . FFD7 call edi ; 取絕對值
0042EFD3 . 0FBFC0 movsx eax,ax
0042EFD6 . 8985 C8FEFFFF mov dword ptr ss:[ebp-138],eax ; [ebp-138]=71
0042EFDC . DB85 C8FEFFFF fild dword ptr ss:[ebp-138] ; 取實數 q的113
0042EFE2 . DD9D C0FEFFFF fstp qword ptr ss:[ebp-140] ; [ebp-140]為0
0042EFE8 . 8B8D C4FEFFFF mov ecx,dword ptr ss:[ebp-13C] ; [ebp-13c]=405c4000
0042EFEE . 8B95 C0FEFFFF mov edx,dword ptr ss:[ebp-140]
0042EFF4 . 51 push ecx
0042EFF5 . 52 push edx
0042EFF6 . FF15 D4114000 call dword ptr ds:[<&MSVBVM60.#614>] ; MSVBVM60.rtcSqr
0042EFFC . 8B45 08 mov eax,dword ptr ss:[ebp+8] ; qiweixue
0042EFFF . 8D4D 98 lea ecx,dword ptr ss:[ebp-68] ; [ebp-68]=0
0042F002 . DD9D 18FFFFFF fstp qword ptr ss:[ebp-E8] ; [ebp-e8]=78d2d036
0042F008 . 8985 60FFFFFF mov dword ptr ss:[ebp-A0],eax ; (*[ebp-a0])=qiweixue
0042F00E . 51 push ecx
0042F00F . 8D95 58FFFFFF lea edx,dword ptr ss:[ebp-A8] ; [ebp-a8]= 0
0042F015 . 56 push esi
0042F016 . 8D45 88 lea eax,dword ptr ss:[ebp-78] ; [ebp-78]=0
0042F019 . 52 push edx
0042F01A . 50 push eax
0042F01B . C745 A0 01000000 mov dword ptr ss:[ebp-60],1
0042F022 . C745 98 02000000 mov dword ptr ss:[ebp-68],2
0042F029 . C785 58FFFFFF 084>mov dword ptr ss:[ebp-A8],4008
0042F033 . FF15 BC104000 call dword ptr ds:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar
0042F039 . 8D4D 88 lea ecx,dword ptr ss:[ebp-78]
0042F03C . 8D55 AC lea edx,dword ptr ss:[ebp-54]
0042F03F . 51 push ecx
0042F040 . 52 push edx
0042F041 . FFD3 call ebx
0042F043 . 50 push eax
0042F044 . FF15 40104000 call dword ptr ds:[<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
0042F04A . 8BC8 mov ecx,eax
0042F04C . FFD7 call edi
0042F04E . 0FBFC0 movsx eax,ax
0042F051 . 0FAFC6 imul eax,esi ; 使用者名稱*計數數值
0042F054 . 0F80 54060000 jo TranExam.0042F6AE ; 溢位就error
0042F05A . 0FAFC6 imul eax,esi ;eax=eax*esi
0042F05D . 8B4D E4 mov ecx,dword ptr ss:[ebp-1C]
0042F060 . 0F80 48060000 jo TranExam.0042F6AE ;溢位就跳死
0042F066 . 03C1 add eax,ecx ;eax=eax+ecx
0042F068 . 0F80 40060000 jo TranExam.0042F6AE ;溢位就跳死
0042F06E . 8985 BCFEFFFF mov dword ptr ss:[ebp-144],eax
0042F074 . DB85 BCFEFFFF fild dword ptr ss:[ebp-144] ;浮點計算
0042F07A . DD9D B4FEFFFF fstp qword ptr ss:[ebp-14C]
0042F080 . DB45 E8 fild dword ptr ss:[ebp-18]
0042F083 . DD9D ACFEFFFF fstp qword ptr ss:[ebp-154]
0042F089 . DD85 ACFEFFFF fld qword ptr ss:[ebp-154]
0042F08F . DC8D 18FFFFFF fmul qword ptr ss:[ebp-E8]
0042F095 . DC05 50124000 fadd qword ptr ds:[401250]
0042F09B . DC8D B4FEFFFF fmul qword ptr ss:[ebp-14C]
0042F0A1 . DFE0 fstsw ax
0042F0A3 . A8 0D test al,0D ;al與od比較
0042F0A5 . 0F85 FE050000 jnz TranExam.0042F6A9 ; 跳就overflow的
0042F0AB . FF15 E8114000 call dword ptr ds:[<&MSVBVM60.__vbaFpI4>>; MSVBVM60.__vbaFpI4
0042F0B1 . 99 cdq ; eax=522
0042F0B2 . B9 10270000 mov ecx,2710 ; ecx=2710
0042F0B7 . F7F9 idiv ecx ;除以2710
0042F0B9 . 8955 E4 mov dword ptr ss:[ebp-1C],edx ; [ebp-1c]=00000522
0042F0BC . 8D55 A8 lea edx,dword ptr ss:[ebp-58]
0042F0BF . 8D45 AC lea eax,dword ptr ss:[ebp-54]
0042F0C2 . 52 push edx
0042F0C3 . 50 push eax
0042F0C4 . 6A 02 push 2
0042F0C6 . FF15 98114000 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStrList
0042F0CC . 8D8D 68FFFFFF lea ecx,dword ptr ss:[ebp-98]
0042F0D2 . 8D95 78FFFFFF lea edx,dword ptr ss:[ebp-88]
0042F0D8 . 51 push ecx
0042F0D9 . 8D45 88 lea eax,dword ptr ss:[ebp-78]
0042F0DC . 52 push edx
0042F0DD . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042F0E0 . 50 push eax
0042F0E1 . 51 push ecx
0042F0E2 . 6A 04 push 4
0042F0E4 . FF15 34104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList
0042F0EA . 8B55 08 mov edx,dword ptr ss:[ebp+8]
0042F0ED . 83C4 20 add esp,20
0042F0F0 . 8D45 98 lea eax,dword ptr ss:[ebp-68]
0042F0F3 . 8995 60FFFFFF mov dword ptr ss:[ebp-A0],edx
0042F0F9 . 50 push eax
0042F0FA . 8D8D 58FFFFFF lea ecx,dword ptr ss:[ebp-A8]
0042F100 . 56 push esi
0042F101 . 8D55 88 lea edx,dword ptr ss:[ebp-78]
0042F104 . 51 push ecx
0042F105 . 52 push edx
0042F106 . C745 A0 01000000 mov dword ptr ss:[ebp-60],1
0042F10D . C745 98 02000000 mov dword ptr ss:[ebp-68],2
……
0042F21B . 99 cdq
0042F21C . B9 A0860100 mov ecx,186A0
0042F221 . F7F9 idiv ecx ; 除以 186a0
0042F223 . B8 01000000 mov eax,1
0042F228 . 03C6 add eax,esi ; esi計數加一
0042F22A . 0F80 7E040000 jo TranExam.0042F6AE
0042F230 . 8BF0 mov esi,eax
0042F232 . 8B45 DC mov eax,dword ptr ss:[ebp-24] ; eax=8 要8次迴圈
0042F235 . 8975 E8 mov dword ptr ss:[ebp-18],esi
0042F238 . 8955 D8 mov dword ptr ss:[ebp-28],edx ; [ebp-28]=3025
0042F23B .^ E9 33FDFFFF jmp TranExam.0042EF73
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二個迴圈4次:
0042F240 > 8B3D 94114000 mov edi,dword ptr ds:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrCopy
0042F246 . 8B1D 2C104000 mov ebx,dword ptr ds:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrVarMove
0042F24C . 33F6 xor esi,esi
0042F24E > B8 04000000 mov eax,4 ; eax=4 迴圈4次
0042F253 . 3BF0 cmp esi,eax
0042F255 . 0F8F 8C000000 jg TranExam.0042F2E7 ;條件成立調處迴圈
0042F25B . 8BD6 mov edx,esi
0042F25D . 8B45 E4 mov eax,dword ptr ss:[ebp-1C] ; [ebp-1c]=1A8D
0042F260 . 0FAFD6 imul edx,esi ; edx=esi*edx
0042F263 . 0F80 45040000 jo TranExam.0042F6AE
0042F269 . 0FAFD6 imul edx,esi ; edx=esi*edx
0042F26C . 0F80 3C040000 jo TranExam.0042F6AE
0042F272 . 83C0 1F add eax,1F ; eax=eax+1f
0042F275 . 0F80 33040000 jo TranExam.0042F6AE
0042F27B . 03D0 add edx,eax ; edx=edx+eax
0042F27D . 0F80 2B040000 jo TranExam.0042F6AE ; error
verflow
0042F283 . 81E2 7F000080 and edx,8000007F ; edx=edx+8000007f
0042F289 . 79 05 jns short TranExam.0042F290
0042F28B . 4A dec edx
0042F28C . 83CA 80 or edx,FFFFFF80
0042F28F . 42 inc edx
0042F290 > 8D4D 98 lea ecx,dword ptr ss:[ebp-68] ; [ebp-68]=0
0042F293 . 52 push edx ; edx=2c
0042F294 . 51 push ecx ; ecx=0
0042F295 . FF15 48114000 call dword ptr ds:[<&MSVBVM60.#608>] ; MSVBVM60.rtcVarBstrFromAnsi
0042F29B . 83FE 11 cmp esi,11
0042F29E . 72 06 jb short TranExam.0042F2A6
0042F2A0 . FF15 CC104000 call dword ptr ds:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError
0042F2A6 > 8D55 98 lea edx,dword ptr ss:[ebp-68] ; [ebp-68]=120008
0042F2A9 . 52 push edx
0042F2AA . FFD3 call ebx
0042F2AC . 8BD0 mov edx,eax
0042F2AE . 8D4D AC lea ecx,dword ptr ss:[ebp-54] ; [ebp-54]=0
0042F2B1 . FF15 04124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMo>; MSVBVM60.__vbaStrMove
0042F2B7 . 8BD0 mov edx,eax
0042F2B9 . 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
0042F2BC . 8D0CB0 lea ecx,dword ptr ds:[eax+esi*4]
0042F2BF . FFD7 call edi
0042F2C1 . 8D4D AC lea ecx,dword ptr ss:[ebp-54]
0042F2C4 . FF15 30124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
0042F2CA . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042F2CD . FF15 1C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVar
0042F2D3 . B8 01000000 mov eax,1
0042F2D8 . 03C6 add eax,esi ; esi=esi+1 迴圈
0042F2DA . 0F80 CE030000 jo TranExam.0042F6AE
0042F2E0 . 8BF0 mov esi,eax
0042F2E2 .^ E9 67FFFFFF jmp TranExam.0042F24E ; 迴圈
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第三個迴圈也迴圈4次:
0042F2E7 > BE 05000000 mov esi,5 ; esi=5
0042F2EC > B8 09000000 mov eax,9 ; eax=9
0042F2F1 . 3BF0 cmp esi,eax
0042F2F3 . 0F8F 8C000000 jg TranExam.0042F385 ; 比較迴圈 ,當esi大於eax是跳出迴圈
0042F2F9 . 8BCE mov ecx,esi ; cx=5
0042F2FB . 8B55 E0 mov edx,dword ptr ss:[ebp-20] ; [ebp-20]=0
0042F2FE . 0FAFCE imul ecx,esi ; ecx=ecx*esi
0042F301 . 0F80 A7030000 jo TranExam.0042F6AE ; 溢位就死
0042F307 . 0FAFCE imul ecx,esi ; ecx=ecx*esi
0042F30A . 0F80 9E030000 jo TranExam.0042F6AE ; 溢位就死
0042F310 . 83C2 1F add edx,1F ; edx=edx+1f
0042F313 . 0F80 95030000 jo TranExam.0042F6AE
0042F319 . 03CA add ecx,edx ; ecx=ecx+edx
0042F31B . 0F80 8D030000 jo TranExam.0042F6AE ; 溢位就死
0042F321 . 81E1 7F000080 and ecx,8000007F ; ecx=ecx^8000007f
0042F327 . 79 05 jns short TranExam.0042F32E ; S=1 借位就跳
0042F329 . 49 dec ecx
0042F32A . 83C9 80 or ecx,FFFFFF80
0042F32D . 41 inc ecx
0042F32E > 8D45 98 lea eax,dword ptr ss:[ebp-68] ; [ebp-68]=0
0042F331 . 51 push ecx
0042F332 . 50 push eax
0042F333 . FF15 48114000 call dword ptr ds:[<&MSVBVM60.#608>] ; MSVBVM60.rtcVarBstrFromAnsi
0042F339 . 83FE 11 cmp esi,11 ; 比較 esi與11,小就跳
0042F33C . 72 06 jb short TranExam.0042F344
0042F33E . FF15 CC104000 call dword ptr ds:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError
0042F344 > 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042F347 . 51 push ecx
0042F348 . FFD3 call ebx
0042F34A . 8BD0 mov edx,eax
0042F34C . 8D4D AC lea ecx,dword ptr ss:[ebp-54]
0042F34F . FF15 04124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMo>; MSVBVM60.__vbaStrMove
0042F355 . 8BD0 mov edx,eax
0042F357 . 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
0042F35A . 8D0CB0 lea ecx,dword ptr ds:[eax+esi*4]
0042F35D . FFD7 call edi
0042F35F . 8D4D AC lea ecx,dword ptr ss:[ebp-54]
0042F362 . FF15 30124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
0042F368 . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042F36B . FF15 1C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVar
0042F371 . B8 01000000 mov eax,1
0042F376 . 03C6 add eax,esi ; esi=esi +1
0042F378 . 0F80 30030000 jo TranExam.0042F6AE
0042F37E . 8BF0 mov esi,eax
0042F380 .^ E9 67FFFFFF jmp TranExam.0042F2EC ; 迴圈
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第四個迴圈e-a=4次迴圈:
0042F385 > BE 0A000000 mov esi,0A ; esi=0A
0042F38A > B8 0E000000 mov eax,0E ; eax=0e
0042F38F . 3BF0 cmp esi,eax ; 當esi大於eax的時候就調處迴圈
0042F391 . 0F8F 8C000000 jg TranExam.0042F423
0042F397 . 8BCE mov ecx,esi
0042F399 . 8B55 D8 mov edx,dword ptr ss:[ebp-28] ; [ebp-28]=4b22
0042F39C . 0FAFCE imul ecx,esi ; ecx=ecx*esi
0042F39F . 0F80 09030000 jo TranExam.0042F6AE ; 溢位就死
0042F3A5 . 0FAFCE imul ecx,esi ; ecx=ecx*esi
0042F3A8 . 0F80 00030000 jo TranExam.0042F6AE ; 溢位就死
0042F3AE . 83C2 1F add edx,1F ; edx=edx+1f
0042F3B1 . 0F80 F7020000 jo TranExam.0042F6AE ; 溢位就死
0042F3B7 . 03CA add ecx,edx ; ecx=ecx+edx
0042F3B9 . 0F80 EF020000 jo TranExam.0042F6AE ; 溢位就死
0042F3BF . 81E1 7F000080 and ecx,8000007F ; ecx=ecx^8000007f
0042F3C5 . 79 05 jns short TranExam.0042F3CC ; S=1 借位就跳
0042F3C7 . 49 dec ecx
0042F3C8 . 83C9 80 or ecx,FFFFFF80
0042F3CB . 41 inc ecx
0042F3CC > 8D45 98 lea eax,dword ptr ss:[ebp-68]
0042F3CF . 51 push ecx
0042F3D0 . 50 push eax
0042F3D1 . FF15 48114000 call dword ptr ds:[<&MSVBVM60.#608>] ; MSVBVM60.rtcVarBstrFromAnsi
0042F3D7 . 83FE 11 cmp esi,11 ; 比較 esi與11,小就跳
0042F3DA . 72 06 jb short TranExam.0042F3E2
0042F3DC . FF15 CC104000 call dword ptr ds:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError
0042F3E2 > 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042F3E5 . 51 push ecx
0042F3E6 . FFD3 call ebx
0042F3E8 . 8BD0 mov edx,eax
0042F3EA . 8D4D AC lea ecx,dword ptr ss:[ebp-54]
0042F3ED . FF15 04124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMo>; MSVBVM60.__vbaStrMove
0042F3F3 . 8BD0 mov edx,eax
0042F3F5 . 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
0042F3F8 . 8D0CB0 lea ecx,dword ptr ds:[eax+esi*4]
0042F3FB . FFD7 call edi
0042F3FD . 8D4D AC lea ecx,dword ptr ss:[ebp-54]
0042F400 . FF15 30124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStr
0042F406 . 8D4D 98 lea ecx,dword ptr ss:[ebp-68]
0042F409 . FF15 1C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVar
0042F40F . B8 01000000 mov eax,1
0042F414 . 03C6 add eax,esi ; esi=esi+1,計數加一
0042F416 . 0F80 92020000 jo TranExam.0042F6AE
0042F41C . 8BF0 mov esi,eax
0042F41E .^ E9 67FFFFFF jmp TranExam.0042F38A ; 迴圈
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第5個迴圈,迴圈0E次:
0042F423 > 8B3D D0104000 mov edi,dword ptr ds:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrCmp
0042F429 . 33F6 xor esi,esi ; esi=0
0042F42B > B8 0E000000 mov eax,0E ; eax=0e
0042F430 . 3BF0 cmp esi,eax
0042F432 . 0F8F 93010000 jg TranExam.0042F5CB ; 當esi大於eax,跳出迴圈;
0042F438 > 8B1D CC104000 mov ebx,dword ptr ds:[<&MSVBVM60.__vbaGe>; MSVBVM60.__vbaGenerateBoundsError
0042F43E . 83FE 11 cmp esi,11 ; esi與11比較,大與11就BoundsError
0042F441 . 72 02 jb short TranExam.0042F445
0042F443 . FFD3 call ebx ; <&MSVBVM60.__vbaGenerateBoundsError>
0042F445 > 83FE 11 cmp esi,11
0042F448 . 72 1E jb short TranExam.0042F468 ;小與下跳
0042F44A . FFD3 call ebx
0042F44C . 83FE 11 cmp esi,11
0042F44F . 72 17 jb short TranExam.0042F468
0042F451 . FFD3 call ebx
0042F453 . 83FE 11 cmp esi,11
0042F456 . 72 10 jb short TranExam.0042F468
0042F458 . FFD3 call ebx
0042F45A . 83FE 11 cmp esi,11
0042F45D . 72 09 jb short TranExam.0042F468
0042F45F . FFD3 call ebx
0042F461 . 83FE 11 cmp esi,11
0042F464 . 72 02 jb short TranExam.0042F468
0042F466 . FFD3 call ebx
0042F468 > 8B4D C4 mov ecx,dword ptr ss:[ebp-3C]
0042F46B . 8B14B1 mov edx,dword ptr ds:[ecx+esi*4]
0042F46E . 52 push edx
0042F46F . 68 28AD4000 push TranExam.0040AD28
0042F474 . FFD7 call edi
0042F476 . 33DB xor ebx,ebx
0042F478 . 85C0 test eax,eax
0042F47A . 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
0042F47D . 0F9EC3 setle bl
0042F480 . 8B0CB0 mov ecx,dword ptr ds:[eax+esi*4]
0042F483 . 51 push ecx
0042F484 . 68 20AD4000 push TranExam.0040AD20
0042F489 . FFD7 call edi
0042F48B . 33D2 xor edx,edx
0042F48D . 85C0 test eax,eax
0042F48F . 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
0042F492 . 0F9DC2 setge dl
0042F495 . 8B0CB0 mov ecx,dword ptr ds:[eax+esi*4]
0042F498 . 23DA and ebx,edx
0042F49A . F7DB neg ebx
0042F49C . 1BDB sbb ebx,ebx
0042F49E . 51 push ecx
0042F49F . 68 18AD4000 push TranExam.0040AD18
0042F4A4 . F7DB neg ebx
0042F4A6 . FFD7 call edi
0042F4A8 . 8B55 C4 mov edx,dword ptr ss:[ebp-3C]
0042F4AB . 899D 78FEFFFF mov dword ptr ss:[ebp-188],ebx
0042F4B1 . 33DB xor ebx,ebx
0042F4B3 . 85C0 test eax,eax
0042F4B5 . 8B04B2 mov eax,dword ptr ds:[edx+esi*4]
0042F4B8 . 50 push eax
0042F4B9 . 68 10AD4000 push TranExam.0040AD10
0042F4BE . 0F9EC3 setle bl
……
0042F5B2 .^ E9 81FEFFFF jmp TranExam.0042F438
0042F5B7 > B8 01000000 mov eax,1
0042F5BC . 03C6 add eax,esi ;esi=esi+1
0042F5BE . 0F80 EA000000 jo TranExam.0042F6AE
0042F5C4 . 8BF0 mov esi,eax
0042F5C6 .^ E9 60FEFFFF jmp TranExam.0042F42B ;向上迴圈
到這裡第六次迴圈,迴圈0E次:
0042F5CB > 33F6 xor esi,esi ;esi=0
0042F5CD > 8B1D 54104000 mov ebx,dword ptr ds:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrCat
0042F5D3 . BF 01000000 mov edi,1 ;edi=1
0042F5D8 > B8 0E000000 mov eax,0E ;eax=0E
0042F5DD . 3BF0 cmp esi,eax
0042F5DF . 7F 31 jg short TranExam.0042F612 ;大於就跳出迴圈
0042F5E1 . 83FE 11 cmp esi,11
0042F5E4 . 72 06 jb short TranExam.0042F5EC
0042F5E6 . FF15 CC104000 call dword ptr ds:[<&MSVBVM60.__vbaGener>; MSVBVM60.__vbaGenerateBoundsError
0042F5EC > 8B55 C4 mov edx,dword ptr ss:[ebp-3C]
0042F5EF . 8B4D EC mov ecx,dword ptr ss:[ebp-14]
0042F5F2 . 51 push ecx
0042F5F3 . 8B04B2 mov eax,dword ptr ds:[edx+esi*4] ;陣列地址
0042F5F6 . 50 push eax
0042F5F7 . FFD3 call ebx
0042F5F9 . 8BD0 mov edx,eax
0042F5FB . 8D4D EC lea ecx,dword ptr ss:[ebp-14]
0042F5FE . FF15 04124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMo>; MSVBVM60.__vbaStrMove
0042F604 . 8BCF mov ecx,edi
0042F606 . 03CE add ecx,esi
0042F608 . 0F80 A0000000 jo TranExam.0042F6AE ;溢位就跳死
0042F60E . 8BF1 mov esi,ecx
0042F610 .^ EB C6 jmp short TranExam.0042F5D8 ;迴圈
第五次與第六次的迴圈運算好像與資料邊界檢測有關…………
最後把正確的註冊碼搬來搬去,終於把註冊嗎放到了:0017473C
0017473C 4B 00 53 00 34 00 47 00 6C 00 6C 00 47 00 46 00 K.S.4.G.l.l.G.F.
0017474C 6F 00 48 00 73 00 74 00 74 00 56 00 79 00 00 00 o.H.s.t.t.V.y...
……
到這裡真假註冊嗎放在暫存器內比較(弱點):
0042F61A . 50 push eax ;
0042F61B . 51 push ecx ;
0042F61C . 6A 00 push 0
0042F61E . FF15 D0114000 call dword ptr ds:[<&MSVBVM60.__vbaStrCo>; MSVBVM60.__vbaStrComp ;比較
比較完畢,不立即判斷,先回收資源,直到這裡:
0045E4DF . 66:85FF test di,di
0045E4E2 . B9 04000280 mov ecx,80020004
0045E4E7 . 894D 80 mov dword ptr ss:[ebp-80],ecx
……
0045E501 . 0F84 27020000 je TranExam.0045E72E ===這是關鍵跳,即便改了它,還是不能註冊成功,從這裡爆破不行~
它的爆破點很多,每一個功能類都要爆破,很麻煩!
最後一個很用的東西:
qiweixue
KS4GllGFoHsttVy
註冊完畢,輸入到登錄檔,每次啟動啟動,都先比較登錄檔的註冊嗎。
HKEY_LOCAL_MACHINE\SOFTWARE\CNSOFT4U
hongriver REG_SZ KS4GllGFoHsttVy
redriver REG_SZ qiweixue
偷個懶,序號產生器不逆了vb的看了就麻煩。
作者:qIwEiXuE
相關文章
- 交通法規模擬考試系統 官網2007-07-27
- 考試系統案例之 -- 隨機生成考題2019-12-05隨機
- linux檔案系統簡析2017-11-15Linux
- Flash下載工具Flashdown破解簡析!2003-07-10
- 考試系統維護總結2015-09-06
- 10G-OCM考試簡介--考試環境-考試大綱-考試安排2013-11-21
- 系統,物件,角色許可權簡析2015-04-09物件
- CM3除錯系統簡析2024-06-22除錯
- java 考試系統 模組架構方案2021-12-31Java架構
- JAVA 考試系統模組設計方案2021-10-11Java
- Vue-cli@3.0 外掛系統簡析2019-03-04Vue
- 智慧閱卷考試系統解決方案2018-11-08
- 浙江省公務員考試錄用系統2006-11-07
- 考試系統時間自動控制程式2007-11-13
- 駕駛員理論技巧線上模擬考試系統2019-05-11
- 職業認證---系統整合工程師考試2020-09-29工程師
- 資料庫系統工程師考試大綱2009-03-08資料庫工程師
- 終結“黑飛”時代,無人機交通法規或年底出臺2018-03-06無人機
- 2020年A證(安全員)考試題庫及A證(安全員)模擬考試系統2020-10-04
- 線上試題答題考試系統專案開發搭建原始碼2024-03-25原始碼
- 計算機等級考試簡介、考試形式與等級要求 (轉)2008-06-16計算機
- 職業學院線上培訓考試系統開源2022-03-07
- asp線上考試系統,遇到一個問題,請指教2007-11-13
- .NET 8.0 開源線上考試系統(支援移動端)2024-10-30
- ida pro 7破解版!支援mac10.15系統!試試?2020-10-30Mac
- 【sql調優】cardinality測試與簡析2010-09-10SQL
- 美國《關鍵軟體定義規範》簡析2021-07-29
- JSR規範,系統引數測試大全2020-04-06JS
- 2020年電工(高階)考試報名及電工(高階)模擬考試系統2020-11-05
- 2020年低壓電工模擬考試題庫及低壓電工模擬考試系統2020-11-24
- java PC 和 手機 線上考試系統 模組設計方案2021-11-04Java
- 系統整合專案管理工程師考試大綱2013-05-24專案管理工程師
- 一個基於 SpringBoot + Vue 的線上考試系統2024-09-26Spring BootVue
- .NET 8.0 開源線上考試系統(支援移動端)io2024-10-29
- nft質押LP流動性挖礦系統開發規則(系統原始碼參考)2023-03-29原始碼
- 中國計算機軟體水平考試測試系統2.0演算法分析2015-11-15計算機演算法
- 智慧遠端監考方案助力企業考試化繁為簡2023-09-18
- 2020汽車修理工(中級)考試及汽車修理工(中級)模擬考試系統2020-09-26