概述
1.inf文件说明
微软说明:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/install/inf-version-section
例子
[Version]
Signature="signature-name"
[Class=class-name]
[ClassGuid={nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}]
[Provider=%INF-creator%]
[ExtensionId={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}]
[LayoutFile=filename.inf [,filename.inf]... ] (Windows 2000 and Windows XP)
[CatalogFile=filename.cat]
[CatalogFile.nt=unique-filename.cat]
[CatalogFile.ntx86=unique-filename.cat]
[CatalogFile.ntia64=unique-filename.cat] (Windows XP and later versions of Windows)
[CatalogFile.ntamd64=unique-filename.cat] (Windows XP and later versions of Windows)
[CatalogFile.ntarm=unique-filename.cat] (Windows 8 and later versions of Windows)
[CatalogFile.ntarm64=unique-filename.cat] (Windows XP and later versions of Windows)
DriverVer=mm/dd/yyyy,w.x.y.z
[PnpLockDown=0|1] (Windows Vista and later versions of Windows)
[DriverPackageDisplayName=%driver-package-description%]
[DriverPackageType=PackageType]
[Version]
Signature="$Windows NT$"
Class=SCSIAdapter
ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318}
Provider=%INF_Provider%
CatalogFile=aha154_ntx86.cat
DriverVer=01/29/2010
[SourceDisksNames]
;
; diskid = description[, [tagfile] [, <unused>, subdir]]
;
1 = %Floppy_Description%,,,WinNT
[SourceDisksFiles.x86]
;
; filename_on_source = diskID[, [subdir][, size]]
;
aha154x.sys = 1,x86
; ...
[Strings]
INF_Provider="Adaptec"
Floppy_Description = "Adaptec Drivers Disk"
; ...
看雪网址:https://bbs.pediy.com/thread-190884.htm
测试签名获取:
假设编译好的驱动的位置是: E:WinDDkmy_testobjchk_win7_amd64amd64
1. 制作一个测试使用的数字证书:
使用管理员权限打开命令行(我用的是VS自带的64位命令行或者WDK命令行x64 Checked Build Environment)进入驱动的路径,然后输入以下命令:
makecert –r -pe -ss PrivateCertStore -n "CN=Contoso.com(Test)" My_Test.cer
MakeCert -r -pe -ss PrivateCertStore -n "CN=Contoso.com(Test)" testcert.cer
这个时候在目录下会生成一个My_Test.cer的测试证书;如果不使用管理员权限可能会失败;如果使用cmd可能会失败;
2. 修改INF文件并生成目录文件:
一般INF文件都会有一个version节
[version]
Signature = "$Windows NT$"
Class = xxx
ClassGUID = xxx
Provider = xxx
DriverVer = xxx
在这个节点的最后增加一个CatalogFile.NtAMD64 = My_Test_AMD64.cat
需要注意的是这个CatalogFile只有CatalogFile.NtAMD64 CatalogFile.Nt CatalogFile三个情况;然后将INF文件也放到驱动sys文件的路径下
使用管理员权限打开WDK自带的命令行进入到对应的驱动程序路径,输入下面的命令
Inf2cat.exe /driver:E:WinDDkmy_testobjchk_win7_amd64amd64 /os:7_x64
这里有几个地方会出问题,首先是/driver:后面不能有空格,否则会出错;其次是os:7_x64指的是win 7的x64平台(这个时候它又不会区分AMD64和IA64了);最后是INF文件必须也在这个目录下,格式不能出错,DriverVer这个节点的值最容易出错;
3. 对cat文件签名:
使用以管理员权限打开WDK带的命令行,定位到驱动程序路径下,输入下面的命令:
Signtool sign /a /v /s zcPrivateCertStore /n zcContoso.com(Test) /t http://timestamp.verisign.com/scripts/timestamp.dll My_Test_AMD64.cat
这里需要联网,不联网会有一个警告,因为它需要去生成时间戳;
4. 注册测试数字证书:
以管理员权限打开WDK命令行,定位到驱动文件路径下,输入以下命令:
certmgr.exe /add My_Test.cer /s /r localMachine root
5. 对驱动文件签名:
以管理员权限打开WDK命令行,定位到驱动文件路径下,输入以下命令:
Signtool sign /a /v /s zcPrivateCertStore /n zcContoso.com(Test) /t http://timestamp.verisign.com/scripts/timestamp.dll xxxx.sys
这里需要联网,不联网会有一个警告,因为它需要去生成时间戳;
6. 安装测试签名:
在目标机上,将xxx.sys xxx.inf My_Test.cer My_Test_AMD64.cat,以及certmgr.exe放在一个路径下,然后以管理员权限打开CMD命令行定位到这个目录,输入以下命令来注册证书以及打开测试模式:
certmgr.exe /add My_Test.cer /s /r localMachine root
certmgr.exe /add My_Test.cer /s /r localMachine trustedpublisher
cd c:windowssystem32
bcdedit.exe /set TESTSIGNING ON
测试模式打开一次后,即使重启电脑也不用再次设置,除非显式的关闭它;窗体右下角会提示目前是在测试模式,关闭的命令是bcdedit.exe /set TESTSIGNING OFF
需要注意的事项:
1. 如果目标机上没有certmgr.exe,那么可以从主机上直接拷贝一个64位的certmgr.exe过去的;
2. 如果重新生成了sys文件而没有修改inf文件的话,那么只需要在生成sys文件后再次执行对驱动文件的重新签名即可;测试证书和目录文件都不需要重新生成;
3. 最好都使用管理员权限来启动命令行;不用每次都关闭WDK的命令行,事实上可以一直使用同一个WDK的命令行;如果觉得输入太麻烦,那么可以复制粘贴的;在目标机上的注册证书,可以写一个bat文件的;
4. 测试签名可以使用预安装来安装;makecert、Inf2cat、Signtool、certmgr都在WDK中有;
最后
以上就是羞涩老虎为你收集整理的驱动程序在64位签名的全部内容,希望文章能够帮你解决驱动程序在64位签名所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复