win x64平台驱动测试数字签名
原文地址:http://bbs.pediy.com/showthread.php?t=190884
前一段时间一直在做x64平台的内核驱动,期间也看了论坛上的很多文章,受到很多的启迪。在搜集资料的时候发现论坛上一些人对于x64驱动签名也有一些疑惑,所以把一些经验写出来,给和我一样的人看一下,这些资料也是从微软网上弄来的,只是加了一些我的实践和经验;
因为x64平台下需要数字签名,但是正常开发的时候,需要测试的时候是没有数字签名的,所以这个时候一般都会开机后进入F8,选择禁止数字签名强制,但是这个办法的麻烦之处就是每次开机都要这样操作,要是虚拟机的话,一不小心错过了会很麻烦。MSDN上对这个有个解决方案就是使用测试签名;
==========================================================
测试签名获取:
假设编译好的驱动的位置是: E:\WinDDk\my_test\objchk_win7_amd64\amd64
1. 制作一个测试使用的数字证书:
使用管理员权限打开命令行(我用的是VS自带的64位命令行或者WDK命令行x64 Checked Build Environment)进入驱动的路径,然后输入以下命令:
makecert –r -pe -ss PrivateCertStore -n CN=Contoso.com(Test) My_Test.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:\WinDDk\my_test\objchk_win7_amd64\amd64\ /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:\windows\system32\
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中有;
msdn上有一个文档专门讲这个,上面还讲了怎么弄真正的数字签名,不过那个文档一时找不到了,如果有人需要的话我找一下再传上来;
win x64平台驱动测试数字签名相关推荐
- x86汇编代码转x64平台使用(VS2010测试通过)最简单的方法
众所周知,在x86平台,可以直接使用__asm 内嵌汇编代码,然而在x64平台却不行了. 现在解决这个问题. 一.VS中创建控制台程序,改成x64平台启动. 二.创建test.asm文件.将原先的汇编 ...
- ZYNQ平台的HDMI驱动测试
前情提要: 1.本文所使用的的开发板是Alinx的AX7010开发板 2.PC开发环境为:Vivado 2019.2 vitis 2019.2 3.Ubuntu开发环境为:安装了petalinux20 ...
- win7、win10关闭驱动签名,进入驱动测试模式,以及常见初级问题的解决
win7关闭驱动签名,进入驱动测试模式 win7.win10关闭驱动签名.进入驱动测试模式 方式一: 方式二:批处理文件实现:管理员权限打开win7-win10驱动测试模式 方式三: DebugVie ...
- 2018html游戏引擎,跨平台三维游戏引擎Unity Pro 2018.1 Win x64
跨平台三维游戏引擎Unity Pro 2018.1 Win x64 Unity是由Unity Technologies开发的跨平台游戏引擎,主要用于开发三维和二维视频游戏和计算机.控制台和移动设备的模 ...
- mupdf不支持x64_x86平台转x64平台关于内联汇编不再支持的解决
工具:VS2005 编译器:cl.exe(X86 C/C++) ml64.exe(X64 ASM64) 前提:X86下内联汇编是嵌在函数当中实现的 在X86平台下,可以轻松的在C/C++代码中嵌入 ...
- MTK led驱动测试 (adb)
1) MT6370/MT6371上的LED测试 进入对应led的文件中进行(sys/class/leds/ 下面会有对应led结点的文件夹) 闪烁测试需要4步: 1.echo pwm_mode > ...
- Win10+VS2015平台下OpenCV3.1.0的x86和x64平台的Debug与Release模式的编译与配置
闲话 昨天晚上在新电脑上重新配置了OpenCV3.1,之前虽然也弄过,不过当时是初学者,只是照着网上的教程简单的配置了Debug模式下x86的运行环境(大部分的教程也只教了这种方式的配置......) ...
- linux驱动开发 - 12_platform 平台驱动模型
文章目录 platform 平台驱动模型 1 platform 总线 platform匹配过程 2 platform 驱动 platform 驱动框架如下所示: 3 platform 设备 platf ...
- 树莓派Linux内核编译、文件系统、Linux内核驱动基础框架、驱动测试步骤、总线地址
树莓派高阶开发课程 1. ubuntu18.04版本安装 让程序猿搭建环境太搞笑了,轻松easy! ========================================= ...
最新文章
- 完胜ReLU!斯坦福的神经网络采用这种激活函数,竟高保真还原各种图像视频
- 西湖大学鞠峰组招聘“污水处理”与“微生物组”方向博士后与科研助理
- 理解jmeter聚合报告
- python连接各种数据库数据_Python连接各种数据库
- Linux怎么调oracle存储,Linux 环境下Oracle安装与调试(四)之视图、存储过程
- 在Unity中做一个淡入式的屏幕虚化
- 国一B题方案解析:轴距仅210mm的四旋翼有多稳?
- 中兴f650 2.0.3 固件降级_手机资讯:如何升级iOS12.1.4正式版iOS12.1.4正式版升降级教程...
- 推荐算法---FM,协同过滤
- 类的带参方法有哪几部分构成?
- 你以为熬个3年工作经验就是Java高级开发了?
- 行云管家堡垒机的使用方法之二——新增登录凭证
- 用indesign怎么更换名牌姓名_北京怎么脱单?来北京相亲会,哪里有单身交友聚会?户外交友活动...
- Xshell 6安装和使用教程
- 无人驾驶5: 贝叶斯公式
- 高德,微信公众号,企业微信获取定位
- 华为路由三层交互:单臂路由实验
- NumberPicker
- 【生信】初探基因定位和全基因组关联分析
- 10053 事件详解
热门文章
- 分享给大家几个好玩的网站
- mysql id in 走索引 ??
- 10.如何在Linux下解除PDF文件的密码?
- Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
- 计算机组装与维护实训参考文献,计算机组装论文,关于《计算机组装维护》数字实训资源的开发相关参考文献资料-免费论文范文...
- excel高效办公——Excel如何将同一单元格中的日期和时间拆分(分列法)
- python教程(面向初学者)【1】
- 推荐6个自学网站,每天学习,你会发现自己进步得越来越明显!
- 2020-02-25
- 北京理工大学重点用人单位推荐