VB輸入限制的記憶體破解 (2千字)

看雪資料發表於2003-04-28

破解的程式:Windows超級設定723。
前幾天在論壇上看了一篇破解文字框輸入限制的文章,得到些啟示,於是有了這篇破文。
執行程式,提示註冊,可輸入框竟不能輸入,嘗試用貼上法也行。註冊碼很容易找到,用__vbastrcomp比較,

ollydbg跟蹤即可看到。可無論如何無法輸入。555!!!
跟蹤regform_load,發現不像是text1.enabled=false,因為如果那樣,輸入框沒有游標閃動,且不接受右鍵點

擊。反彙編找__vbaobjectset,看看前面是否有push 00(enabled=false)沒找到。用vbded反編譯也沒看出什麼

東西。看來是另做了手腳。
沒辦法,只好想辦法改記憶體來給它資料。以下用另一VB程式來模擬輸入。
00413013  LEA ECX,DWORD PTR SS:[EBP-38]      --->文字框指標
00413016  PUSH ECX
00413017  PUSH EDI
00413018  MOV EAX,DWORD PTR DS:[EDI]
0041301A  CALL DWORD PTR DS:[EAX+A0]        --->讀文字框資料
00413020  TEST EAX,EAX
00413022  FCLEX
00413024  JGE SHORT EX611.00413038
00413026  PUSH 0A0
0041302B  PUSH EX611.00411A48
00413030  PUSH EDI
00413031  PUSH EAX
00413032  CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>;                             

MSVBVM60.__vbaHresultCheckObj
00413038  MOV EDX,DWORD PTR SS:[EBP-38]      --->得到輸入碼
0041303B  LEA ECX,DWORD PTR SS:[EBP-34]
0041303E  MOV DWORD PTR SS:[EBP-38],0
00413045  CALL ESI
00413047  LEA ECX,DWORD PTR SS:[EBP-48]
0041304A  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>;                             

MSVBVM60.__vbaFreeObj
00413050  MOV EDX,DWORD PTR SS:[EBP-30]
00413053  MOV EAX,DWORD PTR SS:[EBP-34]
00413056  PUSH EDX                          --->輸入碼
00413057  PUSH EAX                          --->正確碼
00413058  PUSH 0
0041305A  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCo>;                             

MSVBVM60.__vbaStrComp              --->比較是否相等

在0041301A處跟入,裡面還有個call,再跟入,直到:
****CED2  PUSH DWORD PTR SS:[EBP+10]
****CED5  PUSH DWORD PTR SS:[EBP+C]          --->輸入碼。在OllyDbg中轉存跟隨數值,如果輸入為空,

可能顯示ABEF0108等亂碼。將其改為正確註冊碼即可。注意不要用寬字元,輸完後以00結束(98中好像用0001結

束)。
****CED8  CALL MSVBVM60.733BD01B
(以上地址前四位可能不同,但後四位應該是一樣的。)
再次執行Windows超級設定723,出現註冊提示直接點選確定,在****CED5處中斷。修改記憶體,收工。
本人水平不高,不能破解輸入限制,只能改記憶體。麻煩哪位高手看看怎麼破解,我等也好學習。

相關文章