和大家分享一下自己的想法,錯誤之處請指出,話不多說:
學習目的:除錯過程中你能夠靈活的利用斷點,幾乎可以事半功倍,斷點包括(硬體斷點 記憶體斷點,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,eax2 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指令。當...