2024 Windows驱动签名

提示:本篇文章旨在记录个人学习笔记,如有错误欢迎各位大佬指出。未经许可,不可擅自转载!

概要

我们都知道驱动一般有三个文件(sys\inf\cat),但是呢,我们自己写的驱动一般是没办法运行在微软的系统上的,所以这时候就需要拿到微软的驱动签名,系统才认为你这驱动是安全的,本文就是介绍如何获取微软的签名。


驱动签名流程

1.准备

  • 驱动要签名,首先驱动要符合微软签名的驱动程序的要求,保证你的驱动是安全的;其次需要微软EV证书以及WDK工具包。这里提供测试驱动:signaturetest驱动程序
  • 路径:.\signaturetest\signturetest\x64\Release

2.创建CAB文件

典型的 CAB 文件提交必须包含:

  • 驱动程序本身,例如 signaturetest.sys
  • 驱动程序 INF 文件,仪表板使用它来简化签名过程。
  • 符号文件,用于调试信息。 例如,Echo.pdb。 Microsoft 自动崩溃分析工具需要使用 .pdb 文件。
  • 目录 .CAT 文件是必需的,仅用于公司验证。 Microsoft 会重新生成目录文件,并替换已提交的任何目录文件。

1.以管理员身份启动CMD,执行命令“MakeCab /?”验证工具是否存在,例如:
在这里插入图片描述2.创建一个以.ddf后缀的文件,以我提供的样例写法如下:

;***  signaturetest.ddf example
;
.OPTION EXPLICIT     ; Generate errors
.Set CabinetFileCountThreshold=0
.Set FolderFileCountThreshold=0
.Set FolderSizeThreshold=0
.Set MaxCabinetSize=0
.Set MaxDiskFileCount=0
.Set MaxDiskSize=0
.Set CompressionType=MSZIP
.Set Cabinet=on
.Set Compress=on
;Specify file name for new cab file
.Set CabinetNameTemplate= signaturetest.cab
; Specify the subdirectory for the files.
; Your cab file should not have files at the root level,
; and each driver package must be in a separate subfolder.
.Set DestinationDir= signaturetest
;Specify files to be included in cab file
D:\Project\signaturetest.inf  
D:\Project\signaturetest.sys

当存在多个驱动需要签名时,样例如下:

;*** Submission.ddf multiple driver example
;
.OPTION EXPLICIT     ; Generate errors
.Set CabinetFileCountThreshold=0
.Set FolderFileCountThreshold=0
.Set FolderSizeThreshold=0
.Set MaxCabinetSize=0
.Set MaxDiskFileCount=0
.Set MaxDiskSize=0
.Set CompressionType=MSZIP
.Set Cabinet=on
.Set Compress=on
;Specify file name for new cab file
.Set CabinetNameTemplate=Echo.cab
;Specify files to be included in cab file
; First Driver
.Set DestinationDir=DriverPackage1
C:\DriverFiles\DriverPackage1\Driver1.sys
C:\DriverFiles\DriverPackage1\Driver1.inf
; Second driver
.Set DestinationDir=DriverPackage2
C:\DriverFiles\DriverPackage2\Driver2.sys
C:\DriverFiles\DriverPackage2\Driver2.inf

3.输入以下命令以创建 CAB 文件

D:\Project> MakeCab /f "D:\Project\signaturetest.ddf

4.MakeCab 的输出应显示创建的 CAB 文件中的文件数。 在本例中,应该有两个文件。

D:\Project> MakeCab /f "D:\Project\signaturetest.ddf
Cabinet Maker - Lossless Data Compression Tool

17,682 bytes in 2 files
Total files:              2
Bytes before:        17,682
Bytes after:          7,374
After/Before:            41.70% compression
Time:                     0.20 seconds ( 0 hr  0 min  0.20 sec)
Throughput:              86.77 Kb/second

5.在 Disk1 子目录中找到 CAB 文件。 可以在文件资源管理器中选择 CAB 文件,以验证它是否包含所需的文件。

3.对CAB文件进行签名

由于需要用到公司的EV证书进行CAB文件签名,这里就不向大家展示了。以下命令使用 SHA256 证书/摘要算法/时间戳对 CAB 文件进行签名:

D:\Project> SignTool sign /f certificateName.pfx /p password /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "D:\Project\signaturetest\Disk1\signaturetest.cab"

4.登录微软合作伙伴中心提交CAB文件

1.转到微软合作伙伴中心硬件仪表板并使用凭据登录。

在这里插入图片描述
2.选择“提交新硬件”。
在这里插入图片描述3.在“包和签名属性”部分,输入驱动程序提交的产品名称。 此名称可用于搜索和整理驱动程序提交。

在这里插入图片描述4.取消选中这两个测试签名选项。

5.对于“请求的签名”,选择希望包含在驱动程序包中的签名。
在这里插入图片描述6.向下浏览页面,然后选择“提交”。

7.签名过程完成后,请从硬件仪表板下载已签名的驱动程序。
在这里插入图片描述8.如果需要微软推送,则要创建一个“New shipping label”的流程进行推送。
在这里插入图片描述

5.下载并验证驱动

完成以下步骤以确保驱动程序已正确签名。

  1. 下载提交文件后,解压缩驱动程序文件。
  2. 以管理员身份打开命令提示符窗口。
  3. 输入以下命令来验证驱动程序是否已按预期签名。D:\Project> SignTool verify signaturetest.Sys
  4. 若要列出其他信息,并让 SignTool 验证包含多个签名的文件中的所有签名,请输入以下命令:
D:\Project> SignTool verify /pa /ph /v /d signaturetest.Sys
  1. 要确认驱动程序的 EKU,请完成以下步骤。
  • 打开 Windows 资源管理器,找到二进制文件。 选择并按住(或右键单击)该文件并选择“属性”。
  • 在“数字签名”选项卡上,选择签名列表中列出的项目。
  • 选择“详细信息”,然后选择“查看证书”。
  • 在“详细信息”选项卡上,选择“增强型密钥用法”。

总结

以上就是本次的驱动签名的教程,MSDN上记录的也很详细,有是推荐去微软原博文学习。对了,微软宣布自 2023 年 3 月 1 日起,Windows Update 不再发布针对零售受众的验证签名驱动程序。以前可以单个单个的驱动提交给微软(非cab文件),现在不行了,系统在升级,驱动签名也在变化,还有很长的道路要走,再接再厉,慢慢成长!

参考

【1】对Windows驱动程序进行签名
【2】SignTool的使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值