1. 程式人生 > >Windows下如何除錯驅動程式

Windows下如何除錯驅動程式

Windows核心分析索引目錄:https://www.cnblogs.com/onetrainee/p/11675224.html

 

一、配置Windbg使用雙機除錯

  win10中“windbg+vmware+win7雙機除錯”設定:https://blog.51cto.com/duallay/1982741

 

二、設定好Windbg符號表

  注意:不同的符號表項之間使用 引號(;) 分割。

    

  1) 表中填寫如下內容:

    srv*d:\symbolslocal*http://msdl.microsoft.com/download/symbols;

    C:\Users\97905\source\repos\KMDF Driver1\Debug

    第一項是作業系統所除錯的符號,當在 "d:\symbolslocal" 找不到時,其會前往微軟官方 "http://msdl.microsoft.com/download/symbols"下載該符號表。

    第二項是被除錯軟體所使用的符號,在生成 驅動檔案.sys 時還對應生成一個很大的 驅動.pdb 檔案,該檔案就是用來除錯驅動程式的符號檔案。

  2)在windbg中使用 ".reload" 命令載入符號表,等待一段時間使其載入完成。

 

三、在驅動程式碼中新增 `int 3` 斷點

  

 1 #include <ntifs.h>
 2 
 3 //提供一個解除安裝函式,讓程式能解除安裝,如果沒有這個函式,驅動將不能解除安裝。
 4 VOID UnDriver(PDRIVER_OBJECT driver)
 5 {
 6     KdPrint(("解除安裝驅動成功"));
 7 }
 8 //入口函式,相當於main。
 9 NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
10 {
11     __asm {
12         int 3
13         xor eax,eax
14         xor eax,eax
15         xor eax,eax
16     }
17 
18     KdPrint(("Hello World!"));
19     driver->DriverUnload = UnDriver;
20     return STATUS_SUCCESS;
21 }

 

 

四、生成 驅動.sys 檔案,在虛擬機器中開啟。如果配置正確,其作業系統會自動暫停,並且Windbg顯示如下畫面,這樣就可以對驅動進行除錯。

&n