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

sli*_*kin 7 c windows debugging kernel visual-studio

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

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

有我的步骤(目标机器):

  1. 将 Windows 10 安装到虚拟机(VirtualBox);
  2. 打开测试模式并将BCDEdit设置为本地
  3. 安装WDK
  4. 下载OSR 加载器
  5. 将构建后的文件复制到 VM (C:\DriverTest\TestKernelDriver2\; .cer , .inf , .pdb , .sys );
  6. 创建跟踪文件夹;C:\DriverTest\TestKernelDriver2\traces\
  7. 安装证书 - TestKernelDriver2.sys;(签名模式测试签名
  8. 运行OSR Driver Loader,选择驱动,点击注册服务成功)。
  9. 使用参数运行跟踪日志(GUID 是由模板生成的;没有通过Tools->Create 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. 打开事件查看器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.sysWdfLdr.sysmsrpc.sysEXT-MS- WIN- ### .DLL)。这些文件位于 C:\Windows\System32\drivers。我将文件复制到 C:\Windows\System32 并且Dependency Walker平静下来。EXT-MS-WIN-*.DLL 怎么样 - 我在这个主题中读到这些文件可能会被遗漏。

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

在此处输入图片说明

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

!load wdfkd.dll
!wdfkd.wdfldr
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我正在尝试从这个 Microsoft ttutoriall 中制作 Session 1 的步骤。

sli*_*kin 1

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

\n\n

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

\n\n
tracefmt \xd0\xa1:\\TestDriver\\TestKernelDriver2\\TestKernelDriver2.etl -i \xd0\xa1:\\TestDriver\\TestKernelDriver2\\TestKernelDriver2.sys -r \xd0\xa1:\\TestDriver\\TestKernelDriver2\\TestKernelDriver2 -p \xd0\xa1:\\TestDriver\\TestKernelDriver2\\tmfs -o \xd0\xa1:\\TestDriver\\TestKernelDriver2\\TestKernelDriver2.txt -v\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n

步骤3接下来,填写日志会话名称并选中实时显示。结束

\n\n

跟踪视图设置

\n