2017-09-23 25 views
1

Je suis très très débutant dans le développement de pilotes Windows. J'ai écrit un simple pilote DbgPrint() .sys.Windows Driver - Impossible de signer mon propre pilote correctement

Après beaucoup de recherche, j'ai trouvé dans l'architecture x86, la signature du pilote .sys est facultative, mais en x64 est obligatoire. J'ai donc créé un certificat manuellement:

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

Après cela, je l'ai exporté (par exemple) GlobalSign.cer et ajouté à ma liste de certificats:

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

Ensuite, je MyDriver1.sys et putte MyDriver1.inf dans c:\MyDriver1 dossier et créé le fichier de catalogue:

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

Et l'ont signé:

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

Fini! Mais quand je charge MyDriver1.sys dans le programme OSR Driver Loader, il montre cette erreur:

--------------------------- 
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 
--------------------------- 

Je ne sais pas pourquoi.

Remarque Il n'y a qu'une entrée MyDriver1.inf dans l'onglet Catalogue de sécurité du fichier de catalogue et je ne peux pas ajouter une entrée MyDriver1.sys.

Voici le contenu de MyDriver1.inf (origine produit par Visual Studio, mais je n'ai changé 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" 

Répondre

1

KMCS n'utilise pas le magasin de certificats (qui est mise en œuvre est en mode utilisateur, donc Cela a du sens...).

Le certificat racine de la chaîne de certificats signant votre pilote doit figurer parmi ceux listés sur la page Cross-Certificates for Kernel Mode Code Signing.