问题标签 [driver-signing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 使用 WDK 10 签署适用于 Windows 10 的现有 DLL
我在 USB 3 上使用赛普拉斯 FX3 控制器,通过修改赛普拉斯的驱动程序 .inf 文件以识别我的设备,然后签署驱动程序包,我在 Windows 7 上取得了成功。不幸的是,这种方法不符合 Windows 10 [1] 中对驱动程序更严格的签名要求。
我下载了 Windows 的新 WDK 10,并一直在尝试使用这个新工具对驱动程序进行签名,但它似乎不想对预构建的 DLL 进行签名。相反,它希望我拥有可以构建到我自己的 DLL 中的源代码文件,但我不能完全期望赛普拉斯交出他们的源代码。
有谁知道 WDK 10 是否支持对现有驱动程序 DLL 进行签名,或者该功能是否已被删除以关闭安全漏洞?我是否只需要等待赛普拉斯发布与 Windows 10 v1607+ 兼容的驱动程序?
对于任何想知道的人,我已经在我的机器上禁用了安全启动和驱动程序签名验证以进行测试。Cypress 的 1.2.3 版驱动程序可在 Windows 10 上与我的设备一起使用,但驱动程序签名问题除外 - 但如果我不必要求客户禁用安全启动来为我的设备安装驱动程序,我会更愿意。
提前致谢,
谢尔顿
c - Windows 7 x64 驱动程序 ERROR_INVALID_IMAGE_HASH
我最近一直在尝试使用带有 Visual Studio 2015 的 WDK 创建我的第一个驱动程序,到目前为止,我能够生成一个 .sys 文件,以及默认生成的 .cert 和其他文件。
当我尝试动态加载驱动程序时,我的问题出现了,该函数失败,代码为 577,ERROR_INVALID_IMAGE_HASH。
这是我用来加载驱动程序的代码:
一旦我在调用 StartService 函数后立即调用 GetLastError 函数,就会出现错误。
到目前为止,我所了解的是我要测试的驱动程序没有有效的证书,或者至少 windows 不知道它的存在。
因此,我尝试在 vs2015 的开发人员命令提示符中使用 signtool,并且能够成功签署我的驱动程序。
不幸的是,我回去尝试加载它,但仍然遇到同样的错误。
解决此问题的最佳行动方案是什么?
谢谢
visual-studio - Windows 驱动程序构建 - 传递给 Inf2Cat.exe 的路径不正确
我是 Windows 驱动程序主题的新手。我正在尝试在 Visual Studio 2015 中构建Windows 驱动程序示例之一。编译和链接步骤顺利通过,然后出现以下错误:
(注意 /driver 参数中的相对路径)。如果我使用驱动程序的完整路径从命令提示符手动调用 Inf2Cat,它将顺利通过:
因此,在我看来,VS 以某种方式未能在 Inf2Cat 的参数中提供驱动程序的完整路径。
我怎样才能解决这个问题?我的项目的哪个配置属性不正确?
windows - Windows 10 企业版的 inf2cat 驱动程序签名?
除了 Windows 10 企业版之外,我可以对驱动程序文件进行很好的签名。10_X86、服务器和 X64 似乎不适用于 Enterprise。
它有特定的代码可以使用吗?
提前致谢!
windows - Windows 7,数字签名驱动程序显示警告:Windows 无法验证此驱动程序软件的发布者
我正在尝试安装一个结构简单的 Windows USB 驱动程序(仅包含以下内容 -
- 应用程序.inf,
- 应用程序.cat
- WdfCoInstaller01005.dll
- WinUSBCoInstaller.dll
)。该驱动程序使用Digicert 颁发的有效标准内核模式代码签名证书进行sha 256签名。当我看到文件的属性时,我可以在app.cat文件中看到数字签名。我正在尝试在安装了所有最新更新(包括KB3033929)的 Windows 7 SP1 64 位机器中通过install-shield setup 安装驱动程序。它仍然显示警告Windows 无法验证此驱动程序软件的发布者。
为了解决这个问题,我尝试按照 Stackoverflow 链接之一的建议在目标机器中安装证书。还是没有希望。
在生成 .cat 文件和签署 .cat 文件的过程中,我使用了以下命令。(没有 .sys 文件)
编辑添加更多信息。
我也尝试过 Sha256 签名(来自https://www.digicert.com/code-signing/driver-signing-in-windows-using-signtool.htm (部分:Internet Explorer 或 Chrome for Windows)
我仍然遇到同样的错误。
编辑 2-添加 Inf 文件的源
请参考下面的.inf 文件的来源(可能有点旧)。
我也验证了反签名的详细信息。请参考下图。
- 用于交叉签名的证书指纹(指纹:2f 25 13 af 39 92 db 0a 3f 79 70 9f f8 14 3b 3f 7b d2 d1 43 DigiCert High Assurance EV Root CA 的交叉证书)
- 从签名文件的属性可以看出交叉签名证书的指纹是40 01 91 47 5c 98 89 1d eb a1 04 af 47 09 1b 5e b6 d4 cb cb(我不知道它是否正确)
请帮忙。我花了很多时间在这上面,但最终还是没有结果。对此的任何帮助都将非常可观。
visual-studio-2013 - 在 Windows 7 SP1 上手动安装 KMDF Sample-Driver
我刚刚在 Windows 7(64 位)计算机上使用带有 WDK 8.1 的 Visual Studio 2013 Express 创建了一个 KMDF 示例驱动程序。当我构建解决方案时,我没有收到任何错误。因为我想稍后检查我的驱动程序是否正在运行,所以我将通用调试线插入到我的 DriverEntry-Routine 中:
通过 Windows 设备管理器,我可以通过添加旧设备手动安装驱动程序。当然,Windows 会抱怨驱动程序未签名的事实。但无论如何,稍后我可以在设备管理器中看到已安装的驱动程序,前面有一个警告符号:

使用 DebugView(来自 Sysinternals Suite)我正在等待我的调试消息出现,但没有任何反应。我在驱动程序安装期间收到的唯一调试消息是:
所以这让我想到为什么我的驱动程序没有运行?我想这与司机的签名有关,但我也不知道如何签名。或者也许 DebugView 是错误的工具?
windows - 驱动程序签名:如何让 MakeCert 测试证书在 x64 上工作
我正在尝试加载使用 MakeCert.exe 生成的证书签名的内核驱动程序。
我按照 Windows Driver Kit 文档中的说明进行操作:
- 使用 MakeCert.exe 对驱动程序进行签名
- 用 验证签名
SignTool verify /v /pa DriverFileName.sys。 - 使用CertMgr.exe将证书安装到测试计算机的 Trusted Root Certification Authorities store 和 Trusted Publishers store
当我SignTool verify /v /pa DriverFileName.sys按照 WDK Microsoft Docs 中所述验证签名时,SignTool 报告签名正常。我已经在开发计算机和应该加载驱动程序的测试机器上完成了这项工作。
但是,驱动程序实际上并没有加载。Windows CodeIntegrity 日志说3004: Windows is unable to verify the image integrity of the file \Device\HarddiskVolume3\path\DriverFileName.sys because file hash could not be found on the system. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source.
我看了这个类似的问题。当我运行SignTool verify /v /kp DriverFileName.sys. 它说: SignTool Error: Signing Cert does not chain to a Microsoft Root Cert.
链接问题的解决方法涉及使用真实的非测试证书,并更改签名设置,以便正确链接到 Microsoft 根证书。我还没有到那个阶段;我只想让我的测试基础设施“正常”工作。
我有兴趣让内核加载我的驱动程序,并使用我在测试机器上手动安装的证书验证签名。我知道我可以用来bcdedit -set testsigning yes完全禁用签名验证,但这似乎有点过头了——它允许任何签名的驱动程序运行,即使它没有使用我在机器上安装的测试证书进行签名。是否可以关闭“测试签名”模式(因此驱动程序签名实际上仍根据已安装的证书进行验证),但仍使用我内部自行生成的 MakeCert.exe 测试证书?
windows - Windows 10:设备管理器中的错误代码 52,交叉签名驱动程序中的签名正确
我们开发了一个驱动程序,并使用我们公司的 Verisign 签名(SHA1 + SHA256,包括证书链)对 cat 和 sys 文件进行了签名。我们在 32 位和 64 位版本的 Windows 7 和 10 下对其进行了测试。现在我们有一些随机客户报告说我们的设备在设备管理器中无法正确识别,并且出现错误 52:
Windows 无法验证此设备所需驱动程序的数字签名。最近的硬件或软件更改可能安装了签名不正确或损坏的文件,或者可能是来自未知来源的恶意软件。(代码 52)
Setupapi.dev.log 显示此错误:
_!!! dvi:设备未启动:设备有问题:0x34 (CM_PROB_UNSIGNED_DRIVER),问题状态:0xc0000428
但是 Setupapi.dev.log 中的这条消息也出现在工作安装中。
签名工具显示签名有效,windows资源管理器的属性页也是如此。
这种行为的原因是什么?
windows - 在 Windows 10 上永久允许(单个)未签名的驱动程序
我是一名现场技术人员,使用一些较旧的软件/设备。该设备仍在制造中,但软件堆栈较旧,并且没有可用于通过 LCT 与设备通信所需的软件调制解调器的签名驱动程序。
我需要将未签名的驱动程序永久安装到 Windows 10 中以用于某些设备。每个插入的 USB 调制解调器都具有不同的 ID,因此需要安装不同的驱动程序,因为计算机将其视为新设备。
虽然驱动程序可通过“在我的 PC 上查找驱动程序”获得,但一旦我在 Windows 10 中重新启用驱动程序签名强制,“新”调制解调器就会安装,但由于驱动程序签名问题而无法运行。
有没有办法为要多次安装的特定驱动程序添加永久豁免?目前我必须重新启动进入高级恢复模式以禁用驱动程序签名强制并每次重新安装驱动程序。这反过来意味着我无法正确启用安全启动等。
c++ - StartService FAILED 577 自签名内核驱动程序,如何修复?
我正在尝试在 Windows 10 (10.0.18362) 上安装自签名内核驱动程序,这是我遵循的步骤和我得到的错误。如何解决这个问题?谢谢


