OD: Windows Kernel Debug

來源:互聯網
上載者:User

標籤:ar   使用   sp   strong   on   代碼   bs   as   管理   

核心調試入門

核心程式運行在核心態,因此不能像對使用者態應用程式那樣來調試。關於核心調試方面的知識請參考《軟體調試》這本書。目前核心調試主要有以下三種方法。

一是使用硬體調試器,它通過特定的介面(如 JTAG)與 CPU 建立串連並讀取它的狀態,例如 ITP 調試器。

二是在核心中插入專門用於調試的中斷處理函數和驅動程式。當作業系統核心被中斷時,這些中斷處理函數和驅動程式接管系統的硬體,營造一個可以供調試器啟動並執行簡單環境,並用自己的驅動程式來處理使用者輸入、輸出,例如 SoftICE 和 Syser 等調試器。

三是在系統核心中加入調試支援,當需要中斷到調試器中時,只保留這部分支援調試的代碼還在運行,因為正常的核心服務都已經停止,所以調試器程式是不可能運行在同一個系統中的,因此這種方法需要調試器運行在另一個系統中,二者通過通訊電纜交流資訊。

Windows作業系統推薦的核心調試方式是第三種,這種方法需要在被調試系統和調試系統之間建立串連,迄今為止共有三種串連方式:串列口、1394 和 USB2.0。

起初,核心調試大多通過雙機調試進行。隨著虛擬機器技術的廣泛使用,雙機調試逐漸被虛擬機器調試所取代。本節介紹一種非常方便的虛擬機器核心調試方法—— "利用具名管道(Named Pipe)類比序列埠"。具體地說,就是在虛擬機器中虛擬一個序列埠,並且把這個串口映射到宿主機的具名管道上。這樣一來,虛擬機器中所有對該串口的讀寫操作都會被虛擬機器管理軟體轉換為對宿主系統中的具名管道的讀寫,運行在宿主系統中的調試器便可以通過這個具名管道來與虛擬機器中的核心偵錯引擎進行通訊。

這種虛擬機器調試核心的方法實現了單機調試,其優點是簡單方便,但也存在一些缺點,一是難以調試硬體相關的驅動程式;二是當對某些涉及底層操作(中斷、異常或者 I/O)的函數或指令設定斷點時,可能導致虛擬機器意外重啟;三是當將目標系統中斷到調試器中時,目前的虛擬機器管理軟體會佔用非常高的 CPU,超過 90%。不過總的來說,這種調試方法足以調試目前公布的核心漏洞了。

下面我們來介紹一下,如何使用 WinDbg 和 VMware 來實現這種方法的調試。VMware Support 中提到,自 4.0.18.0 版本之後的 WinDbg 都支援了通過 pipe 來進行調試。

 

OD: Windows Kernel Debug

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.