硬件斷點檢測與繞過


此時Dr0為4271B5,表示4271B5地址處被設置了硬件斷點。現在我們來看看CONTEXT結構。

這里我們可以看到context結構中Dr0~Dr3寄存器的內容。黃色標注的4271B5是我們設置了硬件斷點的地址。其他三個粉紅色標注的位零,因為我們只設置了一個硬件斷點,所以它們是空的。

當異常處理完畢以后,context中的值將被清零,我們一起來看一看,直接運行起來,斷在第二個斷點處。

我們可以看到經過了異常處理以后,Dr0被清零了,我們可以編寫腳本來恢復它。這里我們有兩種方案,

第一種方案:

  在斷在KiUserExceptionDispatcher入口處時將context中調試寄存器的值保存一份。當斷在下面的ZwContinue的調用處時將調試寄存器的值恢復。

第二種方案:

  在context中定位到程序的返回地址,在返回地址處設置一個斷點,當斷在返回地址處時恢復硬件斷點,相當於重新設置了一次硬件斷點。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM