Windows内核驱动程序签名和服务创建

时间:2012-06-10 08:37:08

标签: windows windows-services driver wdk driver-signing

在签署我的内核模式驱动程序并为其创建服务时遇到一些麻烦。

所以,我使用makecert创建了一个自签名证书:

  

makecert -r -pe -n“CN = XXX”-ss“XXX”-sr LocalMachine

然后使用证书管理管理单元我将证书导出到.pfx文件并使用signtool签署.sys驱动程序:

  

signtool sign / f myCert.pfx / p xxx / t   http://timestamp.comodoca.com/authenticode driver.sys

哪个成功了。在使用signtool进行验证后,我收到了:

验证:driver.sys 文件散列(sha1):9A ... 7F

Signing Certificate Chain:
    Issued to: XXX
    Issued by: xxx
    Expires:   Sat Dec 31 16:59:59 2039
    SHA1 hash: 12...46

The signature is timestamped: Sun Jun 10 03:35:21 2012
Timestamp Verified by:
    Issued to: UTN-USERFirst-Object
    Issued by: UTN-USERFirst-Object
    Expires:   Tue Jul 09 11:40:36 2019
    SHA1 hash: E1...46

        Issued to: COMODO Time Stamping Signer
        Issued by: UTN-USERFirst-Object
        Expires:   Sun May 10 16:59:59 2015
        SHA1 hash: 3D...C8

Successfully verified: driver.sys

Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0

但是,当我尝试为它创建服务时:

  

sc create ncd binPath = C:\ Windows \ System32 \ drivers \ driver.sys type =   内核

(验证了bin路径存在),服务已创建,但大约10-20秒后,“程序兼容性助手”出现了恼人的“Windows需要数字签名驱动程序”对话框。

Program Compatibility Assistant

是什么给出的?事实证明它已签署。我已经尝试了三次这个过程,没有运气。我已经尝试启动该服务,但是我得到了一个带有BC代码的BSOD,引用了这个问题(未签名的驱动程序在XP / 32-bit 7上工作正常)。

1 个答案:

答案 0 :(得分:0)

您可以在此处找到一些有用的文档: http://msdn.microsoft.com/en-us/library/windows/hardware/dn170454(v=vs.85).aspx

由于卢克说你需要这两个步骤,所提供的链接解释了第2步。 使用从Microsoft获得的交叉证书,您应该签署这些驱动程序。 签名是使用Win sdk工具完成的。