MSVC2015 进行 windows 驱动开发
作者:康林(qq:16614119)开发环境搭建预备需要下列硬件:调试主机:运行windows10 系统(本文为x64)调试目标机:运行windows10 x64 系统主机(本文为x64)(或虚拟机)两台机器之间的有互通的网络有internet,可以下载符号文件需要下列软件windows10 SDKwindows10 wdk(本文为10)Visual Studio 2015搭建连通
作者:康林(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
- 点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
为驱动签名
- 签名工具
- Makecert.exe:证书创建工具。使用说明:https://msdn.microsoft.com/library/windows/desktop/aa386968.aspx
- pvk2pfx:生成PFX格式的证书文件工具。使用说明:http://technet.microsoft.com/zh-cn/subscriptions/ff550672
- SignTool.exe:签名工具。使用说明:http://msdn.microsoft.com/zh-cn/library/8s9b9yaz.aspx
- MakeAppx.exe:应用包生成工具。使用说明:http://msdn.microsoft.com/zh-cn/library/windows/apps/hh446767.aspx
它们可以在wdk安装目录下找到。C:\Program Files (x86)\Windows Kits\10\bin\x64
工具使用
makecert: http://www.cnblogs.com/aiqingqing/p/4503051.html
makecert -n “CN=Kang Lin studio” -sky signature -r -sv kl.pvk kl.cer
pvk2pfx
pvk2pfx -pvk kl.pvk -spc kl.cer -pfx kl.pfx
- signtool
signtool sign /f “pfx文件的全路径” /p “pfx文件的保护口令” /t “http://timestamp.verisign.com/scripts/timstamp.dll” /d “本次签名的描述” “被签名的程序的全路径”
signtoll sign /f kl.pfx /t “http://timestamp.verisign.com/scripts/timstamp.dll” /d “Virtual Serial Driver” VirtualSerial.sys
其它
UDMF2 的 API 与 KMDF API 大多数相同,所以可以重新设置编译就可以互换。当然也有不同的API,所以在项目中需要注意。
更多推荐
所有评论(0)