Win64 驱动签名

以下内容原文来自网友ndis_passthru。略作修改(本人使用过程需要)
网友http://my.csdn.net/changpei,他写的关于驱动的文章也是很好
Vista 之后的 64位os里 ,内核程序都需要签名才能加载。

要使x64 os加载自己的驱动,有3种方式 :
1)、开机时–> F8–> “Disbale Driver Signature Enforcement”。
2)、Test-signing 。ms为 程序开发者 提供的测试内核代码的方式。(用自签名的证书来签名内核代码)
3)、向ms买个证书。

下面记录下,我使用 Test-signing 的过程。

我的操作过程皆来自 MSDN : Kernel-Mode Code Signing Walkthrough (http://msdn.microsoft.com/en-us/library/windows/hardware/gg487328.aspx)里面下载的 KMCS_Walkthrough.doc 有较详细操作步骤。这个文档非常非常非常重要,如果在使用中出现错误,一定要在这个文档中仔细看看命令的使用步骤等

PS : 记得执行下面的操作时 ,是使用 管理员 身份登录的 。以WDK7自带的例子passthru为例。(复制并改名为C:_passthru_wdk7),第一次学习建议编译环境一定要选择对应的系统,例如我使用的是window 7系统 vs 2008 wdk 7-(GRMWDK_EN_7600_1.ISO)

一、安装好 WDK。(我这里使用 WDK7)
二、打开命令提示符。 开始–> 程序–>Windows Driver Kits –> WDK 7600.16385.1–>Build Environments –> Windows 7 –> x64 Checked Build Environment 。(下面称此 命令提示符界面 为 cmd_wdk7 )

三、编译 passthru 。复制C:\WinDDK\7600.16385.1\src\network\ndis\文件夹下的passthru到C:\中
cmd_wdk7 进入目录 C:\passthru\driver\
build -czg
四、创建 (自签名测试)证书(doc P.9)。cmd_wdk7 进入目录 C:\passthru\driver\objchk_wlh_amd64\amd64\ ,输入命令
“makecert -r -pe -ss zcPrivateCertStore -n CN=zcContoso.com(Test) zcContosoTest.cer”
(这里可以看到 zcContosoTest.cer 生成了)
然后查看 刚创建的证书,doc P.9 的 To use the MMC Certificates snap-in to view a certificate

五、(Using Inf2Cat to Create a Catalog File ==> doc P.11)
1)、将 C:_passthru_wdk7\driver\ 中的 netsf.inf 和 netsf_m.inf 复制到 C:\passthru\driver\objchk_win7_amd64\amd64\ 中 。
2)、修改 copy过来的 inf 。
A)、两个 inf 中分别都要添加3行使之变为 :

……
[Version]
Signature = “$Windows NT$”
Class = NetService
ClassGUID = {4D36E974-E325-11CE-BFC1-08002BE10318}
Provider = %Msft%
DriverVer =10/01/2002,6.0.5019.0

CatalogFile.Ntx86 = zcPassthru_x86.cat
CatalogFile.NtIA64 = zcPassthru_ia64.cat
CatalogFile.NtAMD64 = zcPassthru_AMD64.cat

[Manufacturer]
%Msft% = MSFT,NTx86,NTia64,NTamd64
……

B)、两个 inf 中的
DriverVer =10/01/2002,6.0.5019.0 都改为 DriverVer =10/01/2011,6.0.5019.0
3)、cmd_wdk7 中执行命令 :
“Inf2cat.exe /driver:C:\passthru\driver\objchk_win7_amd64\amd64\ /os:7_x64”
(这里可以看到 zcPassthru_amd64.cat 生成了)

六、Test-Sign the Catalog File ==> doc P.14
即 对这里的 zcPassthru_amd64.cat 进行签名。

Signtool sign /a /v /s zcPrivateCertStore /n zcContoso.com(Test) /t http://timestamp.verisign.com/scripts/timestamp.dll zcPassthru_amd64.cat

七、Install the Test Certificate in the Trusted Root Certification Authorities Certificate Store ==> doc P.15
将我们的证书安装到 受信任的根证书颁发机构 。
“certmgr.exe /add zcContosoTest.cer /s /r localMachine root”
然后可以查看 doc P.16

八、Test-Sign a Driver Image File by Using an Embedded Signature ==> doc P.18
对驱动程序进行签名。https://msdn.microsoft.com/zh-cn/library/8s9b9yaz.aspx

Signtool sign /v /s zcPrivateCertStore /n zcContoso.com(Test) /t http://timestamp.verisign.com/scripts/timestamp.dll passthru.sys
” ==> doc P.19

可以对签名进行确认查看 doc P.20

ps : 上面命令中有时容易打错字母,需要注意,打错个别字母时查起来很费劲…

// ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==>

上面将该生成的都生成了(zcContosoTest.cer 、zcpassthru_amd64.cat),该签名的也签名了(zcpassthru_amd64.cat、passthru.sys) 。
那么如何将签好名的东西装到测试用的机器上去呢?如下操作:

 ps : 测试机上新建文件夹 C:\_passthru_wdk7_cert ,这里的目标机是 Win2008_x64

一、To install the test certificates ==> doc P.22
安装 测试证书。
1)、将 zcContosoTest.cer 复制到 C:_passthru_wdk7_cert 中 ;一般目标机中 不会有 certmgr.exe ,则在 WDK7 的安装目录(C:\WinDDK\7600.16385\bin\amd64)找到 certmgr.exe ,也复制到 测试机 C:_passthru_wdk7_cert 中 。
2)、管理员权限 打开 cmd ,进入目录 C:_passthru_wdk7_cert 。(这里要确保是管理员身份的话,就直接找到“C:\WINDOWS\system32\cmd.exe”,然后右击“以管理员身份运行(A)”)
3)、安装 zcContosoTest.cer 到本机的 Trusted Root Certification Authorities 。命令 :
“certmgr.exe /add zcContosoTest.cer /s /r localMachine root”
4)、安装 zcContosoTest.cer 到本机的 Trusted Publishers 。命令 :
“certmgr.exe /add zcContosoTest.cer /s /r localMachine trustedpublisher”

 ps : 注意上面两步的作用地方是不一样的。(可用 certmgr.msc 查看)

5)、管理员cmd –> “bcdedit.exe /set TESTSIGNING ON” ==> doc P.24 –> 机器重启。
6)、正常方式安装 签名过的 passthru.sys (安装时的警告还是会出现的…)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值