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显示如下画面,这样就可以对驱动进行调试。

 

posted @ 2019-10-15 15:23  OneTrainee  阅读(4359)  评论(0编辑  收藏  举报