Windows Kernel Way 1:Windows核心調試技術

來源:互聯網
上載者:User

標籤:

掌握Windows核心調試技術是學習與研究Windows核心的基礎,調試Windows核心的方式大致分為兩種:

(1)通過Windbg工具在Windows系統運行之初串連到Windows核心,串連成功之後便可以調試,此時即可以調試Windows核心啟動過程,又可以在Windows啟動之後調試某核心組件或應用程式。或使用Windbg的Kernel debugging of the local mechine功能,在Windows系統完全啟動之後,調試Windows核心組件或應用程式。這種方式需要配置Windows系統以DEBUG模式啟動。

(2)通過Bochs來運行Windows系統,可以在Windows啟動並執行任意時刻調試任意資訊,但最大的缺點就是,這種方式目前不支援使用Windows Symbols,與第一種方式相比,彙編代碼讀起來並不直觀。

本文介紹方式(1)即通過Windbg工具調試Windows核心。

1、Windbg工具簡介及擷取方式

Windbg工具是微軟團隊開發和公布的一款專門用於調試Windows核心及應用程式的調試器,既支援核心級(Ring0)調試,也支援應用程式級(Ring3)調試。如今的Windows系統調試器有多種,出了Windbg以外,還有Olldbg、Immunity Debugger等。Olldbg和Immunity Debugger不支援核心級調試。

Windbg工具包含在Windows Driver Kit(WDK,Windows驅動開發包)中,當然也可以單獨下載。

(1)如果要通過WDK方式擷取的話,Windows XP及之前的環境只要下載WDK即可,整個資源大約300M~500M,但是在Windows Vista/Windows 7等系統之後,微軟將WDK與Visual Studio環境整合到一起,因此整個下載資源大約6.0G~7.0G。由於Windows XP系統不再支援,並且筆者的實驗環境為Windows 7系統,在後續的文章中也會涉及到Windows驅動開發,所以筆者建議下載WDK與VS整合套件,雖然資源比較大。

(2)如果只是暫時學習Windows核心調試的話,可以單獨下載Windbg工具,整個資源大約150M。

以上資源皆可以在MSDN上擷取,擷取連結為:http://msdn.microsoft.com/zh-cn/windows/hardware/hh852365.aspx

2、Windows Symbols簡介及擷取方式

Windows Symbols是微軟公開的Windows系統符號表,使用Windbg調試WIndows核心和應用程式時可以很直觀地看到部分變數名稱、結構體結構、函數名稱等。

Windows Symbols可以直接在MSDN上擷取,其擷取頁面與上述給出的擷取Windbg工具的頁面連結相同。

但是筆者不建議直接下載並安裝Windows Symbols,因為在使用Windbg工具調試時,可以根據需要即時擷取相關模組的符號資訊(如果網路正常的話)。

3、Windows核心調試方法

通過虛擬機器調試Windows系統是種常見的方式,即首先搭建虛擬機器環境,即將Windows系統安裝在虛擬機器中,然後配置虛擬機器Windows系統的啟動模式為DEBUG模式,並且配置好Windbg工具與虛擬機器Windows系統之間的通訊通道,在Windbg進入等待調試通訊的時候,重啟虛擬機器Windows系統,雙方的調試連結建立以後,即可使用Windbg工具調試/控制Windows核心,詳細步驟如下:

(1)配置虛擬機器Windows系統以DEBUG模式啟動。

進入虛擬機器Windows系統,以管理員身份運行cmd.exe,執行以下命令:

bcdedit /debug on    //啟用Windows核心調試支援

bcdedit /bootdebug on  //啟用應用程式的啟動過程調試支援

關於bcdedit命令的詳細資料,可以在MSDN中瞭解:http://msdn.microsoft.com/zh-cn/library/dn653986(v=vs.85).aspx

上述方式僅在Windows Vista/7系統及以後版本的Windows系統中有效,如不做特殊說明,筆者的實驗環境預設為VirtualBox/Windows 7系統。

對於Windows XP系統的配置,請自行GOOGLE。

(2)配置Windbg與虛擬機器Windows系統的調試通訊通道。

關閉虛擬機器Windows系統,在虛擬機器“串口配置”中,啟用某個串口,比如COM1,並將該串口的連接埠模式設定為“主機管道”,並選擇“建立通道”,在“連接埠/檔案位置”中輸入待建立的虛擬管道裝置名稱,比如“\\.\pipe\comdbg”(注意格式,“comdbg”名稱使用者自訂):

開啟Windbg,在“Kernel Debug”(Ctrl+K)對話方塊的“COM”標籤頁中將“Port”也配置為“\\.\pipe\comdbg”:

點擊確定後,Windbg進入嘗試與目標建立通訊通道狀態:

此時啟動虛擬機器的Windows系統,一段時間以後,調式通訊通道建立成功:

此時,在Windbg中按快速鍵“Ctrl+Break”即可中斷虛擬機器Windows的啟動/運行過程(第一次一般會下載符號表,需要耐心等待):

此時便可以輸入各種調試指令,比如輸入“g”命令就可以繼續虛擬機器Windows的運行過程。

由於Windbg的核心調試指令與Windows核心原理相關,所以在後面的Windows核心原理分析時會詳細說明Windbg使用及相關指令。

Windows Kernel Way 1:Windows核心調試技術

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.