如何正确调试Windows内核驱动程序?

时间:2019-02-20 13:08:43

标签: c windows visual-studio debugging kernel

我正在尝试设置 Windows VM的环境以调试内核驱动程序。

我在Visual Studio 2017中创建了一个内核驱动程序示例。文件->新建项目->内核模式驱动程序基本项目;仅用于测试-自动生成的跟踪宏,所需的程序等),并想在目标计算机上对其进行测试。

有我的步骤(目标计算机):

  1. 将Windows 10安装到虚拟机(VirtualBox);
  2. Turn on Test mode并设置BCDEdit as local;
  3. 安装WDK;
  4. 下载OSR Loader;
  5. 将构建后的文件复制到VM(C:\ DriverTest \ TestKernelDriver2 \; .cer .inf .pdb .sys );
  6. 创建迹线文件夹; C:\ DriverTest \ TestKernelDriver2 \ traces \
  7. 安装证书- TestKernelDriver2.sys ; (签名模式测试签名
  8. 运行 OSR驱动程序加载程序,选择驱动程序,然后按注册服务成功)。
  9. 使用参数运行tracelog(GUID由模板生成;不通过工具->创建GUID 进行)-成功

    tracelog -start TestKernelDriver2 -guid #0f4fbb98-1569-495b-88d1-f654b1e2d68e -f C:\DriverTest\TestKernelDriver2\traces\trace.etl -flag 2 -level 0xFFFF

  10. 检查C:\ DriverTest \ TestKernelDriver2 \ traces \ trace.etl; (存在- 64KB 大小)

  11. OSR驱动程序加载程序:按启动服务失败)。错误消息:找不到指定的过程。
  12. 停止跟踪日志-成功

    tracelog -stop TestKernelDriver2

  13. 打开Event Viewer Windows日志->系统。最后一个错误:

    The TestKernelDriver2 service failed to start due to the following error: The specified procedure could not be found.

    Details: EventData param1 TestKernelDriver2 param2 %%127 54006500730074004B00650072006E0065006C0044007200690076006500720032000000

  14. 通过事件查看器打开C:\ DriverTest \ TestKernelDriver2 \ traces \ trace.etl,并且看不到任何日志。

我如何找出错过了什么程序?

我试图通过Dependency Walker对其进行调查,结果发现缺少某些 .sys 文件( WppRecorder.sys WdfLdr.sys msrpc.sys EXT-MS-WIN- ### .DLL )。这些文件位于C:\ Windows \ System32 \ drivers中。我将文件复制到C:\ Windows \ System32, Dependency Walker 平静下来。 EXT-MS-WIN-*。DLL怎么办?我在this topic中读到,这些文件可能会丢失。

感谢@ magicandre1981。我通过PnPUtil安装了驱动程序。但是现在,我在 pnputil / enum-drivers 命令的列表中看到了它。

enter image description here

但是当我在 WinDbg 中运行以下命令时,在列表中没有看到我的驱动程序:

!load wdfkd.dll
!wdfkd.wdfldr

enter image description here

我正在尝试从this Microsoft ttutoriall开始会话1的操作。

1 个答案:

答案 0 :(得分:0)

我通过tracefmt生成器和TraceView应用程序找到了解决方案。

步骤0 :通过命令生成tmf文件:

tracefmt С:\TestDriver\TestKernelDriver2\TestKernelDriver2.etl -i С:\TestDriver\TestKernelDriver2\TestKernelDriver2.sys -r С:\TestDriver\TestKernelDriver2\TestKernelDriver2 -p С:\TestDriver\TestKernelDriver2\tmfs -o С:\TestDriver\TestKernelDriver2\TestKernelDriver2.txt -v

步骤1 :在TraceView中创建会话: 文件-> 创建新会话。填写手动输入的控制GUID 。 ( 0f4fbb98-1569-495b-88d1-f654b1e2d68e

第2步选择WPP格式信息的来源设置TMF搜索路径选项)并填写路径: C:\ DriverTest \ TestKernelDriver2 \ tmfs

第3步下一步,填写日志会话名称,然后选中实时显示完成

TraceView settings