C语言 对 Windows x64 驱动程序进行签名 - 系统找不到指定的文件



我有包含 2 个证书(私钥未导出)的 SafeNet 令牌,一个是 sha256 EV 代码证书,另一个是 sha1 EV 代码证书。

我使用 signtool 对驱动程序进行了签名:

符号

工具符号/v/s 我的/n "my_company"/sha1 my_sha256_hash/t http://timestamp.verisign.com/scripts/timestamp.dll 我的司机.sys

当我尝试加载驱动程序时,出现错误,说系统找不到指定的文件,我使用Depends查看驱动程序,一切正常。

当我运行符号工具验证我的驱动程序时.sys我收到以下错误: SignTool 错误:证书链已处理,但在不受信任提供程序信任的根证书中终止。

我试图用我相关的二进制文件对我的猫文件进行签名,但仍然没有运气。

我读过有一个名为WHQL的程序,在最终过程中Microsoft给我"好"签名的驱动程序,它仅适用于Windows Update发行版吗? 还是没有必要在 Windows 7 x64 及更高版本中运行我的驱动程序?

使用 globalsign,我需要对带有/ac 参数的内核驱动程序使用根证书(更多信息在这里 https://support.globalsign.com/customer/portal/articles/1491089-kernel-mode-driver-signing-%E2%80%93-windows-7-8) 也许你需要类似的veriysign。

"...视窗 7 x64 及更高版本": 这取决于你在驱动程序中使用的 API,以及它是否为 x64。 对于 win32,您需要构建一个 win32 驱动程序。 在大多数Windows版本上,您可以在启动选项中禁用驱动程序符号检查。这样做会告诉你它是否真的与签名相关。 使用未签名和已签名的驱动程序运行此命令。

"当我尝试加载驱动程序时...": 首先检查注册表 (HKLM:\system\currentcontrolset\services\)。

您需要对驱动程序进行签名Microsoft才能在任何地方运行,但是如果您自己正确签名,那么您几乎可以在任何地方运行。在安全启动模式下运行的 Windows 10/Server 2016 将需要 MSFT 已签名的驱动程序,这将需要使用 WHQL 或 Windows 10 证明签名。查看 sysdev.microsoft.com 上的仪表板,了解有关这两者的更多信息。

未签名的驱动程序通常不会给您"找不到文件"错误,因此您可能在那里查看了错误的内容。确保驱动程序已正确注册,以便从正确的路径加载。使用 procmon 检查它是否可以正确找到该文件。

一旦你确定这些东西,这个链接可能是让你开始签名的好地方:https://www.osr.com/nt-insider/2016-issue1/today-in-driver-signing/

不幸的是,找出司机签名是一条漫长而痛苦的道路。 :(

相关内容

  • 没有找到相关文章

最新更新