Windows驱动程序 - 无法正确签署我自己的驱动程序

时间:2017-09-23 12:37:19

标签: windows cat drive digital-certificate inf

我是Windows驱动程序开发的初学者。我写了一个简单的DbgPrint()。sys驱动程序。

经过大量搜索,我发现在x86架构中,.sys驱动程序的签名是可选的,但在x64中是强制性的。 所以我手动创建了一个证书:

makecert -r -n "CN=MyCompany" -ss MyCompanyCertStore -sr LocalMachine

之后,我将其导出为(例如)GlobalSign.cer并添加到我的证书列表中:

certmgr.exe -add GlobalSign.cer -c -s -r localMachine Root
certmgr.exe -add GlobalSign.cer -c -s -r localMachine TrustedPublisher

然后,我将MyDriver1.sysMyDriver1.inf放在c:\MyDriver1文件夹中并创建了目录文件:

inf2cat /driver:"c:\MyDriver1" /os:7_x64

并签了名:

SignTool sign /s MyCompanyCertStore /n MyCompany /t http://timestamp.verisign.com/scripts/timestamp.dll c:\MyDriver1\mydriver1.cat

完成! 但是当我在MyDriver1.sys程序中加载OSR Driver Loader时,会显示以下错误:

---------------------------
OSRLOADER
---------------------------
Windows cannot verify the digital signature for this file. 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.

---------------------------
OK   
---------------------------

我不知道为什么。

注意目录文件的“安全目录”标签中只有MyDriver1.inf条目,我无法添加MyDriver1.sys条目。

以下是MyDriver1.inf的内容(最初由Visual Studio制作,但我只是将CatalogFile=更改为CatalogFile=mydriver1.cat

;
; MyDriver1.inf
;

[Version]
Signature="$WINDOWS NT$"
Class=
ClassGuid=
Provider=
DriverVer=09/21/2017,21.4.29.698
CatalogFile=

[DestinationDirs]
DefaultDestDir = 12


[SourceDisksNames]
1 = %DiskName%,,,""

[SourceDisksFiles]


[Manufacturer]
%ManufacturerName%=Standard,NTamd64

[Standard.NTamd64]


[Strings]
ManufacturerName=""
ClassName=""
DiskName="MyDriver1 Source Disk"

1 个答案:

答案 0 :(得分:1)

KMCS没有使用证书存储(实现的是用户模式,因此很有意义......)。

安装驱动程序的证书链的根证书必须是Cross-Certificates for Kernel Mode Code Signing页面上列出的证书链。