news 2026/5/25 8:12:15

为自己的驱动程序签名

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为自己的驱动程序签名

为自己的驱动程序签名

在Windows内核驱动开发中,微软不允许运行未签名的服务。我们可以给自己的驱动签名,这样我们就可以运行自己的驱动程序了。

1. 将Windows设置为测试模式

使用管理员身份运行power shell,执行以下命令并重启:

bcdedit /set testsigning on

2. 生成自己的数字证书

以管理员身份运行powershell,并执行以下命令(将 MyDriverTest替换为你喜欢的名字):

$cert=New-SelfSignedCertificate-TypeCodeSigningCert-Subject"CN=MyDriverTest"-KeyUsageDigitalSignature-CertStoreLocation"Cert:\LocalMachine\My"

将证书导出以便后续使用:

Export-Certificate-Cert$cert-FilePath"C:\MyDriverTest.cer"

3. 让系统信任这个证书

  1. 按 Win + R,输入 certmgr.msc并回车,打开证书管理器。
  2. 在左侧展开 “受信任的根证书颁发机构”​ -> 点击 “证书”。
  3. 在右侧右键点击 “所有任务” -> “导入”。
  4. 在向导中,选择你刚才导出的 C:\MyDriverTest.cer文件。
  5. 依次点击“下一步”完成导入,将其放入“受信任的根证书颁发机构”存储中。

4. 使用signtool给驱动签名

使用管理员身份运行power shell:

Get-ChildItem-PathCert:\LocalMachine\My|Where-Object{$_.HasPrivateKey}|ForEach-Object{Write-Host"主题:$($_.Subject)"Write-Host"友好名称:$($_.FriendlyName)"Write-Host"指纹:$($_.Thumbprint)"Write-Host"---"}

使用如下命令进行签名:

signtool sign /v /fd SHA256 /sm /n"MyDriverTest"/t http://timestamp.digicert.com"驱动路径"

好的,这是一条用于驱动程序签名的完整命令。我们逐项拆解,特别是那些对您当前任务至关重要的选项。


命令结构分解

signtool sign /v /fd SHA256 /sm /n "MyDriverTest" /t http://timestamp.digicert.com "驱动路径"
1.signtool sign
  • 功能:调用signtool.exe程序的sign子命令,指示其核心操作是“对文件进行数字签名”,而不是验证(verify)或其他操作。
2./v
  • 全称:Verbose
  • 功能启用详细输出模式。执行此命令时,signtool会将其查找证书、计算哈希、联系时间戳服务器、写入签名等每一步的详细信息打印到终端。如果签名失败,它能提供最直接的错误线索。调试时必备
3./fd SHA256
  • 全称:File Digest algorithm
  • 功能指定生成“文件数字指纹”所使用的哈希算法SHA256是当前安全标准,它会对您的整个驱动文件进行计算,生成一个唯一且不可逆的256位摘要(指纹)。此指纹将被您的私钥加密,形成签名的核心。旧系统可能用SHA1,但现代 Windows 驱动签名必须使用SHA256
4./sm
  • 全称:Store in the Machine store
  • 功能指定在“本地计算机”证书存储区中查找证书,而不是“当前用户”存储区。这是极其关键的选项。
    • 如果没有/sm参数,signtool默认在Cert:\CurrentUser\My(当前用户的“个人”存储)中找证书。
    • 有了/sm参数,signtool则在Cert:\LocalMachine\My(本地计算机的“个人”存储)中找证书。
  • 为什么重要:您创建的用于驱动签名的自签名证书,通常(也应该)安装在“本地计算机”账户下,因为驱动程序是系统级服务,不依赖特定用户登录。如果您的证书确实在“本地计算机”下,而您不加/smsigntool就会在“当前用户”下找,必然找不到,从而引发No certificates were found...错误。
5./n "MyDriverTest"
  • 全称:Name of the certificate
  • 功能指定用于签名的证书的“主题”或“通用名称”"MyDriverTest"应与您创建证书时指定的Subject(例如CN=MyDriverTest完全匹配signtool用这个名称在指定的存储区(由/s/sm决定)中定位唯一的证书及其关联的私钥。
  • 注意/n按名称模糊匹配,如果存储中有多个名称相似的证书,可能会导致选错。更精确的选择方式是使用/sha1参数指定证书的指纹(Thumbprint)。
6./t http://timestamp.digicert.com
  • 全称:Timestamp server URL
  • 功能向指定的时间戳服务器请求一个权威的时间戳,并将其嵌入签名中
  • 为什么必须:这是保证签名长期有效的核心机制。您的自签名证书有有效期(比如1年)。如果没有时间戳,一旦证书过期,即使文件从未被修改,签名也会因“证书过期”而被判定为无效。添加了时间戳后,验证时会检查“在签名时刻(由时间戳服务器证明)证书是否有效”,而不是“当前时刻证书是否有效”。这样,只要签名时证书有效,即使日后证书过期,签名依然有效。digicert.com是常用的公共时间戳服务器。
7."驱动路径"
  • 功能指定要签名的目标文件路径。必须用双引号包裹,特别是路径中包含空格时。这是命令的最后一个参数,signtool会将前面所有选项确定的签名信息写入此文件。

总结:这条命令在“做什么”?

这条命令指示signtool执行以下操作:

  1. 准备:以详细模式执行。
  2. 定位:在本地计算机的证书存储中,找到一个名为MyDriverTest的证书,并使用其关联的私钥
  3. 计算:使用SHA256 算法计算“驱动路径”所指文件的哈希值。
  4. 加戳:联系DigiCert 的时间戳服务器,获取当前签名时间的权威证明。
  5. 生成签名:用第2步找到的私钥,加密第3步计算出的哈希值,并将此加密结果、证书公钥信息、以及第4步得到的时间戳,打包成一个“数字签名”数据块
  6. 写入:将第5步生成的签名数据块,嵌入到驱动文件的特定位置(通常是文件的“安全目录”节中)。

如果成功,可以得到如下输出:

The following certificate was selected: Issued to: MyDriverTest Issued by: MyDriverTest Expires: Wed Mar 31 20:23:15 2027 SHA1 hash: 8FB7008E9A64FA92939ECDCCxxxxxxxxxxxxxxxxxxxxxx Done Adding Additional Store Successfully signed: C:\Users\lxz\Desktop\computer\driver\First.sys Number of files successfully Signed: 1 Number of warnings: 0 Number of errors: 0
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 8:11:18

深入解析Android以太网服务与SystemServer的协同启动机制

1. Android以太网服务启动全景图 当你把网线插入Android设备的以太网接口时,系统背后其实经历了一场精密的"交响乐"协作。作为Android网络架构的核心枢纽,SystemServer就像乐队的指挥,协调着以太网服务(EthernetService)、连接管理…

作者头像 李华
网站建设 2026/4/3 5:07:16

StructBERT中文情感识别效果展示:电影评论情感极性与票房相关性验证

StructBERT中文情感识别效果展示:电影评论情感极性与票房相关性验证 1. 项目概述与背景 StructBERT 情感分类 - 中文 - 通用 base 是百度基于 StructBERT 预训练模型微调后的中文通用情感分类模型,专门用于识别中文文本的情感倾向。这个模型在中文 NLP…

作者头像 李华
网站建设 2026/4/1 10:50:41

千问3.5-2B在物流场景:运单图片自动识别+收发件信息结构化

千问3.5-2B在物流场景:运单图片自动识别收发件信息结构化 1. 物流行业的痛点与机遇 每天,物流企业需要处理数以百万计的运单信息录入工作。传统的人工录入方式存在三个明显问题: 效率低下:一个熟练的录入员每小时最多处理50-80…

作者头像 李华
网站建设 2026/4/1 10:50:35

cool-admin(midway版)前端构建优化:tree-shaking与sideEffects全攻略

cool-admin(midway版)前端构建优化:tree-shaking与sideEffects全攻略 【免费下载链接】cool-admin-midway 🔥 cool-admin(midway版)一个很酷的后台权限管理框架,模块化、插件化、CRUD极速开发,永久开源免费,基于midway…

作者头像 李华
网站建设 2026/4/7 16:34:00

Kandinsky-5.0-I2V-Lite-5s后端集成:Node.js环境下的高性能API服务构建

Kandinsky-5.0-I2V-Lite-5s后端集成:Node.js环境下的高性能API服务构建 1. 引言 想象一下,你正在开发一个创意设计平台,用户上传一张图片,几秒钟后就能看到它变成了一段生动的视频。这种从静态图像到动态视频的转换能力&#xf…

作者头像 李华