WinDBG 配置內核雙機調試

WinDBG 是在 windows 平臺下,強大的用戶態和內核態調試工具,相比較於 Visual Studio 它是一個輕量級的調試工具,所謂輕量級指的是它的安裝文件大小較小,可是其調試功能,卻比VS更爲強大,WinDBG因爲是微軟的產品因此可以調試Windows系統的內核,另一個用途是能夠用來分析dump數據,本筆記用於記錄WinDBG內核調試的配置過程,並附有經常使用命令的使用方法。windows

WinDBG下載地址:連接:https://pan.baidu.com/s/18VIXKdFdfu7ZuKOql7Z_Iw 提取碼:9se4服務器

1.首先須要安裝VmWare虛擬機,並自行安裝好Windows7系統,虛擬機關閉狀態下添加一個管道虛擬串口,此處須要刪除打印機,不然串口之間衝突。工具

操做步驟:【編輯虛擬機設置】 -> 【添加】 -> 【串行端口】 -> 【完成】 ->並配置如下參數
參數配置:【使用命名管道】 -> 【\.\pipe\com_1】 -> 【該端是服務器,另外一端是應用程序】 -> 【輪詢時主動放棄CPU】->【肯定】命令行

2.開啓虛擬機中的Windows7系統,而後以管理員身份運行CMD命令行,輸入bcdedit命令,能夠查看到系統的當前啓動項,若是是新的系統,則只會有一個 {current} 的啓動項。debug

3.接着咱們連續執行下方的三條命令,依次創建啓動項,並激活調試模式。3d

bcdedit /copy {current} /d "Windwos7"
bcdedit /debug ON
bcdedit /bootdebug ON
bcdedit /timeout 10

4.最後查看一下當前調試配置選項,執行命令 bcdedit /dbgsettings,顯示出使用的第一個串口,波特率爲115200bps,保持默認不須要修改。調試

5.配置完成後,從新啓動系統,在開機的時候選擇Windows7 [啓用調試程序]則系統會黑屏,說明已經正常進入調試模式了。code

6.接着回到物理機上面,咱們在命令行中切換到WinDBG的根目錄下,並執行如下命令,便可鏈接虛擬機串口進行調試了。
執行命令 Windbg.exe -b -k com:port=\\.\pipe\com_1,baud=115200,pipe 以下圖,已經成功鏈接上了。blog

7.爲了方便調試,能夠經過【File菜單】加載一下符號文件,也能夠按下【Ctrl+S】並輸入。
輸入命令 srv*c:\symbols*http://msdl.microsoft.com/download/symbols 自動下載符號保存到C盤下。ip

到此爲止,咱們的內核調試環境已經配置並可以獨立工做了,接下來,咱們將手動編譯一個簡單的驅動文件,並經過WinDBG對其進行調試分析。

1.首先咱們須要編寫一個簡單的驅動程序,因爲咱們的驅動程序比較的簡單,因此咱們只可以從DriverEntry驅動開始執行以前下一個斷點,此處咱們能夠經過內聯彙編的方式手動加入一個斷點,其最終代碼以下所示。

#include <ntddk.h>

VOID UnDriver(PDRIVER_OBJECT driver)
{
    DbgPrint(("Uninstall Driver Is OK \n"));
}

NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver,PUNICODE_STRING RegistryPath)
{
	__asm{ int 3 }                                // 內聯彙編添加 int 3 斷點
    DbgPrint(("hello lyshark \n"));
    Driver->DriverUnload = UnDriver;
    return STATUS_SUCCESS;
}

2.如今咱們啓動Windows7系統,並經過上面的方法使之與WinDBG聯機,當WinDBG斷下時,手動添加符號文件。

按下 Ctrl +S 加入如下符號文件,最後的路徑是你驅動編譯所在路徑。
配置:srvc:\symbolshttp://msdl.microsoft.com/download/symbols ; C:.....\Projects\wdk\

添加符號完成之後,在命令窗口輸入g並按下回車鍵,過程當中可能須要按下屢次g鍵,使Windows系統正常加載並運行。

當Windows系統加載完成之後,拖入咱們的驅動文件wdk.sys,並經過驅動加載工具加載運行,此時Windows系統會卡死,回到WinDBG中發現已經能夠進行源碼調試了哈。

相關文章
相關標籤/搜索