發新話題

[分享] VB輸入限制的記憶體破解

VB輸入限制的記憶體破解

破解的程序: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處中斷。修改記憶體,收工。
本人水準不高,不能破解輸入限制,只能改記憶體。麻煩哪位高手看看怎麼破解,我等也好學習。
輸入註冊碼的控件是在form7中的第5個控件text1
作者沒有用text1.enabled=false來限制輸入;
而是用了text1.locked=true下套。
所以用ultraedit在Form7區域中定位至offset 33523H
注意這裡
offset 3353dH 2D FF --> text1.locked=true
改為 2D 00 --> text1.locked=false
job done!

BTW:看了這個軟體,才發現vbde對很多控件內容並沒有反編譯;但要編程實現這個,也真的很煩;懶人於我也就手工完成了。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。