常用斷點總結

2021-08-26 09:24:27 字數 1991 閱讀 6281

常用的斷點有int 3斷點、硬體斷點、記憶體斷點等。

一、int 3斷點

詳細介紹參考《int 3 軟中斷指令》一文。

二、硬體斷點

1. 硬體斷點與drx除錯暫存器有關

2)dr4~dr5:保留,未公開具體作用;

3)dr6:除錯暫存器組狀態暫存器;

4)dr7:除錯暫存器組控制暫存器。

2. 硬體斷點的原理

使用4個除錯暫存器(dr0~dr3)來設定位址,dr7來設定狀態。最多只能設定4個斷點。

3. 硬體斷點設定和取消

1)設定:右擊需要設定的**行,選擇「斷點/硬體執行」命令;

2)取消:單擊選單「除錯/硬體斷點」,在彈出的硬體斷點面板中進行刪除操作。

4. 硬體斷點的優缺點

1)優點:速度快,在int 3容易被發現的地方,使用硬體斷點來代替會有很好的效果;

2)缺點:最多只能使用4個斷點。

三、記憶體斷點

1. 包括:記憶體寫入斷點和記憶體訪問斷點;

2.原理

對所設的位址設為不可訪問/不可寫屬性,這樣當訪問/寫入的時候就會產生異常,ollydbg截獲異常後比較異常位址是不是斷點位址,如果是就中斷。

3. 優缺點

1)優點:記憶體斷點不修改原**。不會像int 3斷點那樣,因為修改**被程式校驗而導致中斷失敗,因此在遇到**校驗,並且硬體斷點失靈情況下,可以用記憶體斷點來代替。

四、 記憶體訪問一次性斷點

1. 設定方法

在od中按「alt + m」開啟記憶體視窗,然後在要設定斷點的段(.data , .text等)上按f2或者右擊選擇「在訪問上設定斷點」命令。

2.特點

該斷點是一次性斷點,當所在段被讀取或執行時就中斷,中斷發生以後,斷點將被刪除。

3.用途

用來捕捉呼叫或返回到某個模組(如,脫殼時該類斷點就非常有用)。

4. 與記憶體訪問斷點的區別

與記憶體訪問斷點的功能一樣,但是記憶體訪問斷點不是一次性斷點。

五、訊息斷點

1. 定義

訊息斷點使得當某個特定視窗函式接收到某個特定訊息時程式中斷。

2. 設定訊息斷點

1)必須有個視窗(由定義可知),一般是輸入序列號的視窗;

2)單擊選單「檢視/視窗」開啟視窗介面,選擇要設定訊息斷點的物件,右擊,在彈出的選單中選擇「在classproc上設定訊息斷點」,在彈出的視窗中選擇相應的訊息型別即可;

3. 從系統**段返回使用者領空的方法:對應用程式的**段.text區塊(注意可能有多個.text區一定要選應用程式的.text區)設定記憶體斷點。

六、條件斷點

1. 定義

1)在除錯過程中,經常希望斷點滿足一定條件時才中斷,這類斷點稱為條件斷點;

2)條件斷點是乙個帶有條件表示式的普通int 3斷點;

2. 原理

當偵錯程式遇到條件斷點時,它將計算表示式的值,如果結果非零或者表示式無效,則斷點生效,被除錯程式暫停執行。

3. 常見設定條件斷點的物件:暫存器、儲存器、訊息等。

4. 設定條件斷點的方法

1)按條件斷點的快捷鍵「shift + f2」開啟條件斷點設定視窗,輸入條件;

2)在命令列直接輸入條件斷點語句,如bp 401476 eax == 040000。(前提是已經安裝了命令列外掛程式)

七、條件記錄斷點

1. 定義

條件記錄斷點除了具有條件斷點作用,還能記錄斷點處函式表示式或引數的值。

2. 快捷鍵

「shift + f4」開啟條件記錄斷點視窗。

WinDBG常用斷點命令

windbg提供了多種設斷點的命令 還bu 可以對還不能識別的符號設定斷點,當系統中有新模組載入進來時,偵錯程式會對未定斷點再次進行識別,如果找到了匹配的符號則會設定它。而bp 斷點會失敗 因為函式位址不存在 bu 斷點則可以成功。新版的windbg中 bp失敗後會自動被轉成bu 以上三個命令是對 ...

WinDBG常用斷點命令

windbg提供了多種設斷點的命令 還bu 可以對還不能識別的符號設定斷點,當系統中有新模組載入進來時,偵錯程式會對未定斷點再次進行識別,如果找到了匹配的符號則會設定它。而bp 斷點會失敗 因為函式位址不存在 bu 斷點則可以成功。新版的windbg中 bp失敗後會自動被轉成bu 以上三個命令是對 ...

PHP常用除錯打斷點

php專案開發過程中,經常要自測各種返回資料,這就經常用到了 error log這個函式 我常用的 error log print r parameters,true n 3,tmp myerror.log 語法 error log message,type,destination,headers ...