日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

OD软件断点原理

發布時間:2025/3/21 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OD软件断点原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • int 3
    • OD
    • Hex_Editor
    • 補充

軟件斷點即 int 3----l調試器利用 EXCEPTION_BREAKPOINT異常實現斷點功能。

int 3

設置斷點命令對應的匯編指令為INT3,對應的機器指令的也就是0xCC。CPU運行代碼的過程中若遇到匯編指令INT3,則會觸發EXCEPTION_BREAKPOINT異常。在OllyDbg調試器某個地址設置斷點后,確定該地址處的指令是否真會變為INT3(0xCC)?

OD


接下來我們查看以下數據窗口,

查看到設置斷點的地方,該地址處的指令并未變成INT3(匯編指令),也并未"6A“變成”CC"(機器指令),為什么跟我們想的不一樣呢?

解釋
其實,這是Ollydbg耍的一個小花招,由于Ollydbg中按F2設置的斷點是用戶用來調試的臨時斷點(User Temporary Break Point),所以不需要在調試畫面中顯示。在代碼與內存中顯示出來的話,大大降低了代碼的可讀性,給代碼調試帶來不便。換言之,實際進程內存中0x1003E21的“6A”已經換成“CC”,但為了調試方便,所以呢,OD就沒有顯示出來。我們只需要把這個程序dump出來,然后放進Hex_Editor查看一下這個位置的數據即可。

偏移問題:
此程序的Imagebase為100000,所以VA1003E21對應的RVA 是3E21(RVA=VA-Imagebase)。由于dump程序是直接由這個程序進程內存轉儲而來的,所以RVA就是RAW(文件偏移量)

Hex_Editor



偏移為3E21處的“6A”已經換成“CC”

補充

問題一:,改成int 3,那不就破壞了原來的指令的完整性嗎?
后來,我又仔細想了想,改成int 3,那不就破壞了原來的指令的完整性嗎?而且不改回來,那后面指令解析那就全變了,指令對齊那些,直接影響一大片,也就是以后設置斷點還得找nop地方才能設置?可事實卻根本不是這樣。。

問了一下大佬,這個問題解釋是這樣的:它會先把下斷點的位置的前一句代碼改成int 3 然后 等到運行到這里時,再把它改回來

問題二:什么時機改回來?
然后我又想:啥時候改回來?而且改回來這個時機 既能 引發斷點異常,又能 不改變原來的指令解析?碰到int 3 ,引發異常了,說明把int 3執行完了,然后它有改回來?那它再改回來已經沒意義了吧????它已經執行完那個點了,然后再改回來那個地方的指令,確定沒影響????

這個問題解釋是這樣的:先,調試器把斷點處的第一個字節改成0XCC,當接收到繼續運行的消息時,調試器會先把這個int 3斷點修復成原來的字節,然后會執行eip-1這個操作,把int 3改掉的代碼繼續執行,好家伙,有eip-1的話,那么就很正常了

總結

以上是生活随笔為你收集整理的OD软件断点原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。