作者:康林(qq:16614119)

开发环境搭建

预备

需要下列硬件:

  • 调试主机:运行windows10 系统(本文为x64)
  • 调试目标机:运行windows10 x64 系统主机(本文为x64)(或虚拟机)
  • 两台机器之间的有互通的网络
  • 有internet,可以下载符号文件

需要下列软件

  • windows10 SDK
  • windows10 wdk(本文为10)
  • Visual Studio 2015

搭建

连通网络

打开调试目标机系统盘还原

  • 电脑->属性->高级系统设置->系统保护
    这里写图片描述

安装 WDK Test Target Setup

  • 根据调试目标机的系统类型,选择相应的安装包。其位置在 wdk 安装位置:
    C:\Program Files (x86)\Windows Kits\10\Remote\
    这里写图片描述
  • 选择 x64 安装包:
    C:\Program Files (x86)\Windows Kits\10\Remote\x64\WDK Test Target Setup x64-x64_en-us.msi
  • 复制安装包到调试目标机,并安装
  • 安装成功后,会启动在TCP 端口 50005 上启动服务WdkCommSvc
    这里写图片描述

设置MSVC2015

  • 打开vc2015
  • 打开菜单:Driver->Test->Configure Devices…
    点 Add New Device
  • 点 Add New Device
    这里写图片描述
  • 点NEXT
    这里写图片描述
  • 点下一步,开始安装
    这里写图片描述
    • 安装下面内容
      Installing necessary components…
      Copying required files
      Task “Copying required files” completed successfully
      Configuring WDK Remote User Account
      Task “Configuring WDK Remote User Account” completed successfully
      Installing .NET Framework (possible reboot)
      Task “Installing .NET Framework (possible reboot)” completed successfully
      Installing VC Redist (x64)
      Task “Installing VC Redist (x64)” completed successfully
      Installing test automation (x86)
      Task “Installing test automation (x86)” completed successfully
      Installing test automation (x64)
      Task “Installing test automation (x64)” completed successfully
      Installing debuggers (x86)
      Task “Installing debuggers (x86)” completed successfully
      Installing debuggers (x64)
      Task “Installing debuggers (x64)” completed successfully
      Installing driver test framework
      Task “Installing driver test framework” completed successfully
      Registering logging components
      Task “Registering logging components” completed successfully
      Configuring TAEF test service to start automatically
      Task “Configuring TAEF test service to start automatically” completed successfully
      Configuring kernel debugger settings (possible reboot)
      Task “Configuring kernel debugger settings (possible reboot)” completed successfully
      Configuring computer settings (possible reboot)
      Task “Configuring coreboot)” completed successmputer settings (possible fully
      Creating system restore point
      Task “Creating stem restore point” compld successfully
      Complete

开发

从现有项目转换成MSVC2015项目

新建项目

KMDF(Kernel Mode Driver)
  • 打开文件->新建->项目
    这里写图片描述

  • 设置调试:在项目上点右键->属性
    这里写图片描述

  • 设置安装
    这里写图片描述
    这个硬件ID可从inf文件中得到

    [Standard.NT ARCH ]
    %KMDFDriver2.DeviceDesc%=KMDFDriver2_Device, Root\KMDFDriver2 ; TODO: edit hw-id

  • 编写代码

    • 修改硬件ID

    [Standard.NT ARCH ]
    %KMDFDriver2.DeviceDesc%=KMDFDriver2_Device, Root\KMDFDriver2 ; TODO: edit hw-id

  • 设置断点
    这里写图片描述

  • 调试
    选择 “Debugging Tools for Windows - Kernel Debugger”
    这里写图片描述

    • 点中断按钮,这样调试主机才能附加调试目标机上的 kernel 进程
    • 再点继续按钮,运行调试
      这里写图片描述
    • 再在调试目标机器上禁用,启用设备
      这里写图片描述
    • 中断
      这里写图片描述
UMDF(User Mode Driver)
  • 打开文件->新建->项目
    这里写图片描述

  • 设置调试:在项目上点右键->属性
    这里写图片描述

  • 设置安装
    这里写图片描述

这个硬件ID可从inf文件中得到

[Standard.NT$ARCH$]
%DeviceName%=VirtualSerial_Install, UMDF\VitrualSerialDriver
  • 编写代码

    • 修改硬件ID

    [Standard.NT ARCH ]
    %DeviceName%=VirtualSerial_Install, UMDF\VitrualSerialDriver

  • 设置断点
    这里写图片描述

  • 调试
    选择 “Debugging Tools for Windows - Remote Debugger”
    调试原理是,调试器附加了远程主机上的wudfhost.exe 进程
    这里写图片描述

调试

KMDF 调试

这里写图片描述

这里写图片描述

UMDF 调试

这里写图片描述

这里写图片描述

签名

驱动无签名

禁用系统签名检查
  • 在桌面开始菜单中击右键,在弹出的菜单中选择“以管理员身份运行命令行窗口”页面。
  • 接下来,我们在打开的窗口页面中输入以下命令,

    bcdedit.exe /set nointegritychecks on

  • 接下来,当我们按下回车键之后,该程序将立即被执行完毕,同时窗口页面中弹出“操作成功完成”的信息提示,到这个时候,我们就可以点击关闭该命令行窗口啦。

启用系统签名检查
  • 如果想重新启用系统检查签名,只要输入:

    bcdedit.exe /set nointegritychecks off

为驱动签名

它们可以在wdk安装目录下找到。C:\Program Files (x86)\Windows Kits\10\bin\x64

其它

UDMF2 的 API 与 KMDF API 大多数相同,所以可以重新设置编译就可以互换。当然也有不同的API,所以在项目中需要注意。

参考:
How to write your first USB client driver (UMDF)

在基于 UMDF 的驱动程序中使用 WPP 软件跟踪

Tracelog
TraceView

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐