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的底...