int 3 斷點原理

2022-08-19 19:33:11 字數 2440 閱讀 7638

和大家分享一下自己的想法,錯誤之處請指出,話不多說:

學習目的:除錯過程中你能夠靈活的利用斷點,幾乎可以事半功倍,斷點包括(硬體斷點 記憶體斷點,int3斷點...)

從原理+實踐出發,更好.更深入的了解int3 斷點原理  (int3 機器碼為  cc)

環境配置

先講筆者現在的電腦環境吧還是:windows7 旗艦版

實驗環境:windows xp 虛擬機器 (筆者用vmware 12虛擬機器軟體)

此時工具已經完備,下面講正題:

準備工作:

1.vc++6.0 建工程寫c程式:

#include

int main(void)

getchar();

return 0;

}2.在工程目錄下找到 可執行檔案(即..exe 檔案,常說的黑視窗)

4. 單擊ollydbg吾愛專版 後將 剛才編譯的 exe 拖進 ollydbg 就可以啦  

5. 此時只需要點選右鍵-》 查詢 -》所有參考文字字串 ;

6.接下來 單擊右鍵  查詢文字-》輸入hello 即可

單擊hello world 即可來到

1 0040102d  |.  85c0          |test eax,eax

2 0040102f |. 74 0f |je short t.00401040

3 00401031 |. 68 1c204200 |push t.0042201c ; ascii "hello world" 點選後 程式停留在此處

4 00401036 |. e8 35000000 |call t.00401070

5 0040103b |. 83c4 04 |add esp,0x4

6 0040103e |.^ eb e8 \jmp short t.00401028 迴圈跳轉

700401040 |>33c0 xor eax,eax 此處下 int3 斷點即可 (f2 即可)

800401042 |. 5f pop edi ; kernel32.7c817077

900401043 |. 5e pop esi ; kernel32.7c817077

1000401044 |. 5b pop ebx ; kernel32.7c817077

1100401045 |. 83c4 40 add esp,0x40

1200401048 |. 3bec cmp ebp,esp

13 0040104a |. e8 a1000000 call t.004010f0

14 0040104f |. 8be5 mov esp,ebp

1500401051 |. 5d pop ebp ; kernel32.7c817077

1600401052 \. c3 retn

7. 接下來就是用 loadpe dump (操作方法,開啟無礙破解工具包,單擊 pe 工具 找到 吾愛破解專版開啟即可)

8. 找到 相應的程序 (即 ...exe 的程序)然後單擊右鍵完整轉存即可

9.將完整轉存後的 可執行檔案(exe)拖進 olldbg  重複  4 5  6步驟即可,,,找到 ascii helloworld 

此時下斷點的地方 可以看出已變成 cc  int3 啦  實驗完成

知識補充:

3.不足之處請大家知無不言,

斷點的本質 INT 3

2 int 3 int 3 是中斷指令的一種特殊形式,僅有乙個位元組長。偵錯程式將該指令當作軟體中斷指令來用。除錯的時候,當程式中的某一位置加斷點的時候,偵錯程式會把斷點處指令編碼的第乙個位元組替換為int 3指令的編碼。當程式執行到int 3,回向偵錯程式申請系統呼叫,偵錯程式因此獲得cpu控制權...

ollydbg原理分析 硬體斷點與int3

今天繼續接著上次的分析,來繼續分析od原理,這次先分析od最基本的功能,斷點,單步和執行到指定位置。類似的文章前輩們已經寫了很多了,這裡只是將前輩們的思路實踐了一下,順便加入一點自己的理解和認識!一般載入od之後,往往大家會先下斷點,或者直接單步執行。一般當我們著手分析乙個程式的時候總是會下乙個in...

自己寫的assert巨集,使用int3斷點

ifdef mtk assert define assert p do while 0 else define assert p endif 摘自百科片段 int3斷點是斷點的一種,在諸如ollydbg中的快捷鍵是f2,是一種很常用的斷點型別。int3指令的機器碼為cc,所以通常也稱之為cc指令。當...