在VB程式尋找下斷點位址的有效方法

2021-08-10 20:34:30 字數 1072 閱讀 7039

1. 通過查詢當前模組中的名稱(標籤),然後查詢輸入函式參考來定位函式位址。

這是最常用的方法之一,但對於有些壓縮過的程式效果可能就不那麼高了。就象飄雲兄剛發的那個《piaoyun's crackme 004 》就不怎麼有效。

2. 通過查詢所有字串來定位斷點位址,這也是最最常用的方法之一,對於沒有對字串加密的程式來說特別有效,但對加密的基本上就無能為力了。

3. 通過查詢對乙個位址的參考來定位斷點位址,這也是乙個好方法,但對於引用該位址的指令中不直接給該位址值時就無能為力了。對於查詢命令序列什麼的都是如此。

4. 對某個記憶體位址下硬體斷點(讀,寫,執行),可以中斷任何對該位址的記憶體操作。但要找到這個位址需要費點功夫的。

***以上4點下斷點的方法針對任何程式都有效的***

下面說說對vb程式下斷點時特別有效的乙個方法:

5. 這裡介紹乙個在vb程式中定位斷點位址特別有效的方法:

在vb程式中查詢二進位制字串:81 6c 24(十六進製制),可以找到如下形式的指令:

004016a0 .   816c24 04 ffff0000 sub     dword ptr [esp+4], 0ffff

004016a8 .   e9 d3510000             jmp     00406880

。。。00401fb8 .   816c24 04 63000000   sub     dword ptr [esp+4], 63

00401fc0 .   e9 0b260000 jmp   004045d0   ; sn編輯框輸入處理函式

其中,0ffff這個值代表的vb程式內定義的乙個函式或著過程,若為其他值(如4b),則代表的是vb程式中某個元件或控制項的方法。其下面的jmp指令就跳到該方法的第一條指令上。

那麼,在該jmp上下斷點,就可直接中斷在處理方法的第一條指令上。非常的快捷方便。

大家可以拿飄雲兄剛發的那個《piaoyun's crackme 004 》練練。

這個crackme是壓縮了的。可以在ollydbg的除錯設定的sfx選項卡中選擇[塊方式跟蹤真正入口處]或[位元組方式跟蹤真正入口處],然後重新load程式,則ollydbg會自動跟蹤並停在真正的入口處的。

在release下尋找程式崩潰原因

在windows平台下用c 開發應用程式,最不想見到的情況恐怕就是程式崩潰,而要想解決引起問題的bug,最困難的應該就是除錯release版本了。因為release版本來就少了很多除錯資訊,更何況一般都是發布出去由使用者使用,crash的現場很難保留和重現。本文將給出幾個解決方案,完成對releas...

VB 讓外部程式在VB程式的窗體裡面執行

option explicit private declare function findwindow lib user32 alias findwindowa byval lpclassname as long,byval lpwindowname as long as long private ...

在程式中設定讀 寫 執行的硬體斷點

作者michael chourdakis,翻譯binhua liu 簡介 1,visual c 只支援硬體寫斷點,而你可能需要在資料讀取時觸發斷點。2,或許你用的不是visual c 而你的偵錯程式使用的是一些速度很慢的基於軟體的斷點機制。3,你可能希望能程式中設定和移除斷點。4,或許你對cpu的底...