如何破解VB5程式的密碼保護... ( By DMA-48!!! )
文章翻譯:KanKer
呵呵,這是一個破解VB5程式密碼保護的快捷方法(甚至包括一些DLL動態連結庫)...
我現在假設你已有了SoftIce... (或從 CrackStore.com 下載)
...
首先... 讓我們討論一下VB5程式的結構...
從機器的可執行程式碼開始吧... 當你在一個系統上寫你自己的程式碼時,叫原始碼 ( 你不可能直接用16進位制編吧?尤其在WinXX的系統上 ) ,因為用程式語言來測試和除錯要容易的多...
在該階段你的原始碼要在機器上執行,有兩種方式, 第一種方式(慢)是取一行翻譯一行執行, 叫解釋執行 (因為此時有一種可以將你的原始碼翻譯為機器能識別的形式的程式在執行,當然在程式執行最後也是可以完成一些任務的...);第二種方式(快)是將整個原始碼直接翻譯為機器能識別的形式(機器不需再將程式取一行翻譯一行再執行)...
這種方式叫編譯執行... 在執行時不需要任何別的程式做翻譯工作!...
微軟又一次模糊了這個概念 -或者說又在盡力欺騙!- 正象他們經常做的 (總在隱藏真相!)...
好了... 讓我們回到原話題―破解VB5的東西! (EXE或DLL)...
VB5 程式是不會單獨執行的!... 它總是需要 MSVBm50.DLL 來解釋執行,即使微軟說“現在VB的程式碼可以完全編譯!” ... (BULL S.ITT!)
這意味著 EXE 或別的由VB5編譯的東西將不得不呼叫MSVBm50.DLL 來了解下一步該幹什麼!... 甚至在字串比較上! 它呼叫一個函式或一段程式叫
__VbaStrComp 來進行比較 (你能相信嗎?!!?)...
可能你以前曾破解過Win9x下的東東,對如何設斷也有了一定的思路,但自從VB5呼叫MSVBm50.DLL來解釋執行程式後便行不通了(程式碼將不會按它自己寫的方式進行處理,而是按MSVBm50.DLL解釋的方式進行),
也使系統變得很慢!... 不過也使我們知道了函式 (GetDlgItemText), 不管是16位或32位的都不會被使用了 !... 或即使被使用了,也不會被連線到源程式中去!...
要記住... 如果你想當程式設計師千萬不要寫VB程式!...
這個也告訴我們,必須在softice目錄下的softice.dat或winice.dat的exp部分加上MSVBm50.DLL, 你將不得不在該檔案中加入下面一行:
EXP=C:\***你安裝windows的目錄***\System\MSVBm50.DLL
當你加完這一行後,你要重啟機器...
重啟後...
執行要破解的程式,直到出現讓你輸入密碼的對話方塊...
按 CTRL+D 進入SoftIce...
鍵入
bpx __vbaStrComp
該斷點將攔住發生在VB5程式內的字串比較動作...
好現在按CTRL+X ,你將回到VB程式中... 鍵入一些字元並按回車... 發生了什麼!?!... 程式將被斷住並回到 SoftIce中...
清除所有斷點. 向下翻屏(用 CTRL+DownArrow) ,直到看到如下程式碼:
F003585: MOV ECX, [EBP+0C]
F003588: MOV EDI, [ECX-04]
F00358B: CMP EDI, ESI
在 F00358B處設一個斷點 ( 便是 CMP EDI, ESI 的位置). 只需在該位置雙擊即可。 按 F5 返回程式... 將在該位置攔住...
在該點呼叫該函式的程式段將要比較的資料壓入到記憶體中 ... 結果是第一個位置存放源資料,其指標存在 EAX 中,第二個位置是目標資料,其指標在ECX中...
要看這兩處的資料,只需鍵入...
DEAX
這個是檢視EAX指向的資料,
DECX
這個是檢視ECX指向的資料...
如果你找到了你要找的,呵呵!... 清除斷點,回到原程式,並填上找到的資料... ( Piece of cake! )... 如果沒找到... 不要灰心...
再按一下 F5 ,因為你可能處在另一個字串比較處或在系統裡(比如象變數存貯什麼的!)... 按了 F5 後你將攔在同一位置,此時鍵入
DEAX
DECX
檢視記憶體資料,你將發現尋找其密碼是如此的容易!... ( 如果沒有再按 F5 ... )...
這種方法可100% 的用於 Visual Basic5編譯的程式 ( EXE, DLL, 我認為也可以用於OCX檔案,但我從沒試過! - :)
如果你不能發現你要找的, 也可以在MSVBm50.DLL中別的地方下斷...
(*你可以停在該連結庫中有比較操作的任何地方, 你也可以在攔住後看該連結庫中所有的函式, 你只需鍵入:
( 由於我也是剛接觸SoftIce, 我只知道這樣做是一種很快的方法 :)
EXP
這樣將看到所有在系統連結庫中的所有函式,當然也包含MSVBm50.DLL了,不過是列在最後了,因為我把MSVBm50.DLL給包含在 WinIce.Dat的最後了
:)
*)
好了, 下面是用來比較的幾個主要的函式:
針對字串:
__vbaStrComp
__vbaStrCmp
__vbaStrCompVar
__vbaStrLike
__vbaStrTextComp
__vbaStrTextLike
針對變數:
__vbaVarCompEq
__vbaVarCompLe
__vbaVarCompLt
__vbaVarCompGe
__vbaVarCompGt
__vbaVarCompNe
.
.
.
我相信你會發現的更多... 但在VB中比較的主要物件是字串 !.. 因為任何文字框返回的都是字串! (除非他們以值的方式取,不過不太可能的!). 因為他們經常自以為是的把字母、數字、特殊符號都作為密碼!....
這就導致結果便是字串!...
好... 祝賀一下...
Thunder23: (我真的很感激你給我的這個東東... 沒有你的幫助我真的沒法下手,真的很感謝你,千萬次的感謝,我的朋友!..., 你希望你改日能再寫一篇!!!
哈哈哈!...
SnakeHead: (我希望你能走出那個血腥的領域並認真的開始!)...
+ORC ... (兄弟, 當我讀到你這篇文章時我是如此的感動,我想哭... 我記得熬過的這些日子!... 我要回去睡個大覺!)... 上帝保佑你!,
你已經說過了!
ED!SON: 這是我陷入windows迷霧後讀到的第一篇文章... 因為你,我現在喜歡 SoftIce 了!... 我在用Turbo Debugger前先用它
... 我希望還有類似的關於win95下破解的文章出現!...
非常非常的感謝 CrackStore.Com 救了我們這些蠢人!... I Owe it 2 U Budy!.
祝全世界的駭客好運 !...
使我重新破解的原因是因我要用VB5來設計一個預訂系統,此係統需要跟電話系統聯合,一些程式設計師出售該程式要?000! 沒門!... 他所做的便是在其VB DLL檔案中輸入一個密碼並把檔案寄給我們,他只寄他的密碼!...我花了4天的時候來研究windows,然後又花了10分鐘破解了該程式,並得到了密碼!...我想我既然又來這裡了...
索性便花點時間把水平趕上去...
再次感謝世上所有的駭客...
DMA-48!!!