admin 管理员组

文章数量: 887006

前言

笔者在做windows 64位驱动开发的时候,同很多驱动初学者一样,发现 64位驱动不做数字签名在win7 64位上无法加载 即使将 关闭驱动强制签名 仍会 “Windows 无法验证此文件的数字签名。”的提示,这样的话我们开发者就无法进行驱动测试了!。由于在网上没找一篇满意的解决方案,故有此博文的诞生。这里笔者也是参考微软官方手册进行的操作,能达到 在windows vista 64位、win7 64位、win10 64位 进行64位驱动测试的效果。

为啥关闭驱动强制签名失效了?

从 Windows Vista 开始,基于 x64 的 Windows 版本要求在内核模式下运行的所有软件(包括驱动程序)进行数字签名才能加载。 也就是说在开发期间对驱动程序进行测试签名才能进行测试。

具体操作

这里我们明确我们手上有2台机器,分别做如下任务。

  1. 驱动开发机:安装有WDK开发环境可以进行,64位驱动文件生成、测试证书生成、使用测试证书进行驱动文件签名。
  2. 驱动测试机:64位Windows操作系统 进行 64位驱动测试。

在驱动开发机上的操作:

  1. 创建测试证书

打开WDK开发环境命令行窗口,输入如下命令进行测试证书的创建。

makecert -r -pe -ss PrivateCertStore -n CN=Contoso(Test) -eku 1.3.6.1.5.5.7.3.3 ContosoTest.cer

其中,下面2个参数比较重要,在进行签名的时候会使用到。

  • -Ss 选项指定包含测试证书的证书存储的名称
  • -N CN = option 指定证书的名称,Contoso (Test) 。

此时会在当前目录下生成一张ContosoTest.cer证书。双击安装或者通过命令certmgr.msc到证书管理创建 将该证书导入到 受信任的根证书颁发机构。

  1. 使用测试证书进行驱动文件签名
SignTool sign /v /s PrivateCertStore /n Contoso(Test) /t http://timestamp.digicert F:\00_DriverTest.sys
  1. 验证已进行测试签名的驱动程序文件的签名 (可省略)
SignTool verify /v /pa F:\00_DriverTest.sys

在驱动测试机上的操作

  1. 安装前面创建的测试证书。
  2. 开启测试签名打开, 重启电脑生效。
 bcdedit  /set  testsigning  on
  1. 使用Driver Monitor测试或者其他驱动加载工具也可以。

笔者在win7 64和win10 64测试均可以正常加载。这里用一个未签名和一个带有测试签名的驱动测试。


结语

路漫漫其修远兮,吾将上下而求索,与诸君共勉。如果对上述操作有疑问可参阅微软官方介绍。

本文标签: 测试 Windows amp