微软WHQL签名申请完整流程
2024-8-16 17:52:47 Author: mp.weixin.qq.com(查看原文) 阅读量:18 收藏


whql认证是什么

whql(Windows Hardware Quality Labs)认证是微软针对第三方的驱动程序进行的一系列测试,旨在确保驱动程序的兼容性。windows 10 1607以后版本的操作系统版本安装的驱动程序都需要先通过whql认证。否则会弹出红色警告框。


注册公司开发者账号

1.以下操作最好使用代理软件进行操作,否则打开网页会很慢。笔者这里已经提供注册好的账号,直接登录,无需再注册,可以跳过步骤二。
访问:
https://developer.microsoft.com/zh-cn/dashboard/Registration/Hardware?step=GetStarted



提示首先确保先拥有一个EV代码签名的证书。这个证书需要向微软授信的机构购买。

下一步,来到下面的页面:



点击”免费新建目录”:



注意这里的用户名、密码,是你后面将要登录用到的。

点击“”创建“”:



创建成功了。点击“下一页”:


输入刚才注册的用户名,点击“下一步”:



输入密码,点击“登录”:


填写好账户详细信息,“下一页”:



若已经有EV签名证书,点击“下一页”:



点击“立即下载可签名文件”,下载到文件,使用EV证书对其进行签名:



笔者包中会提供EV签名所需的文件和说明,按照说明进行签名。签好后,上传签名后的文件:



由于笔者之前已经使用这个相同的EV签名工具签名了SignableFile.bin文件并上传了,所以提示“此证书已用于注册”。后面的注册过程就不在截图了。


登录公司开发者账号


1. 访问:
https://developer.microsoft.com/en-us/dashboard/hardware



使用刚才申请的账号登录,我这里使用之前申请的账号登录:



首次在电脑上登录,手机的Authenticator会收到请求登录信息。这个是注册的时候会提示下载的,用于登录验证的。批准后,会跳到下面的页面:



到此,注册、登录微软开发者账号完成。后面就需要使用WLK测试,并提交测试报告给微软了。


准备测试设备


至少需要两个系统(必须为英文操作系统),不能是任何的虚拟机,必须是物理机。

测试服务器 一个windows server版本的系统,推荐使用windows server 2012。

测试系统 需要windows 10 版本的操作系统,并且安装好要测试的驱动程序(1607以后的windows 10 可以打开测试模式安装驱动)。

若测试系统只有一台,可以安装windows10最新版的操作系统(笔者用的windows10 20H2)。笔者经验证只测试一个最高版本的windows系统,也能获得WHQL签名。

另外这两个系统需要加入在一个内网并且加入同一个工作组。如果不在同一网段的话,可能安装完HLK client后连接不上HLk server。加入了同一网段后,如果未把测试服务器和测试系统加入同一工作组,则会导致HLK测试的时候找不到测试的项。


安装测试服务器

Windows Hardware Lab Kit (Windows HLK) 是一套进行whql认证的测试框架。HLK套件仅用于windows 10,如果要测试windows 10 之前的操作系统,需要使用HCK套件(Hardware Certification Kit)。

HLK的下载地址为:
https://docs.microsoft.com/en-us/windows-hardware/test/hlk/


选择对应测试系统对应版本的HLK下载
安装完选择Controller + Studio 一路点击Next即可完成测试服务器的安装:




安装测试系统

测试系统的安装不需要额外的去下载安装包了,应该从安装完成的服务端获取。地址为:
\\HLKInstall\Client\Setup.cmd
例如我们的服务器地址是192.168.2.239:



双击setup.cmd,即可出现安装界面:



也是一路点击next即可完成安装。

安装完HLK client之后,去服务端打开HLK studio,便可以在默认连接池中找到我们刚刚成功安装的HLK client。



HLK的测试环境到此搭建完成。


开始测试

首先点击Configuration菜单栏,新建一个计算机池(HLK控制器会把测试的任务,分配到你选择的计算机池里边),然后将默认的计算机池中的计算机拖动至我们新建的计算机池中,然后右键计算机池中的计算机,可以改变其状态,当计算机的状态为Ready状态的时候,即表示当前的计算机可以开始测试任务了。有时候想重新测试时,状态改变不了Ready,需要卸载测试机的HLK client,重新安装。

配置好计算机池后,我们就可以新建测试项目了:



新建完成后选择项目,然后点击Selection,到这里可以选择测项,由于我们的驱动程序是一个WFP网络驱动,选择下图红圈中的Software device,选到对应的驱动程序,打上勾即可:


注意这里需要使用工具加载驱动,并把驱动对应的注册表键值的Start改为1,因为要随着系统启动自动加载驱动。有时HLK Studio的Selection的Software device的列表中没有要测试的驱动,这时候删除Configuration中的Ready状态的计算器,重启HLK Studio或测试机,就能找到驱动了。

下面切换到Tests选项,到
https://docs.microsoft.com/en-us/windows-hardware/test/hlk/
下载playlist。点击Load Playlist,加载对应测试机对应windows操作系统版本的xml文件。

笔者测试机操作系统是windows10 20H2,所以选择下面这个文件:



这个功能可以省去很多测试项目,比如下面没有应用Playlist时需要测试很多项目:



有些项目是无法测试通过的。

应用后,只需测试下面的项目:



需要注意的是,笔者在测试有些驱动的时候,先应用了Playlist,只剩下上面这个测试项目。测试开始跑后,EnableDriverVerifier、SetDriverVerifierOptions、QueryDriverVerifierSettings无法通过。解决办法是先不应用Playlist,待上图中的测试通过后再应用Playlist。

下图是测项旁边可能会出现的几种标志的意思,比如有个人形的logo代表测试的时候需要交互:



给全部的测项打上勾,点击Run Selected,此时测试就开始了。



测试的过程中测试系统会重启,等重启完成后,如果驱动程序需要手动启动的话,就先启动我们的驱动程序,驱动程序启动后就不需要再操作测试系统了,等待测试完成即可。

测试完成后去
https://docs.microsoft.com/en-us/windows-hardware/test/hlk/
下载Windows HLK filters:



按照里面的步骤去做。

注意:在HLK测试时,报错,错误日志如下:



解决办法参考:
https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/single-binary-opt-in-pool-nx-optin




这里加入POOL_NX_OPTIN。然后在DriverEntry开始的部分加入:
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);


测试结果打包

如果一切顺利的话,所有的测项都通过了,就可以对测试的结果打包,提交给微软审核了。打包需要的几个材料分别是:



蓝色的项目中不需要我们手动添加了,我们需要提供EV代码签过名的驱动程序以及对应的inf文件,还有对应的pdb符号文件。

选择Package页面,把驱动文件和inf文件保存在一个目录(没有INF文件的驱动可能需要手动生成,且inf中的字段要写正确,否则Create Package时会提示inf文件错误),右键选择Add Driver,选择这个目录。把pdb符号文件保存在一个目录,右键选择Add Symbols,选择这个目录。

点击Create Package:


这时候会弹出一个签名的提示,根据情况选择第3项,弹出下面的对话框:



选择笔者包中提供的.cer文件,再写入一个生成的报名,提示输入EV证书密码就行了。未签名的hlkx文件是无法提交给微软审核的。


提交给微软审核

访问https://developer.microsoft.com/en-us/dashboard/hardware



点击Submit new hardware按钮:



把刚生成的.hlkx文件拖到红色框内:


出现上图的页面,填写Product name、勾选Requested Signatures栏的Windows Server 2008 X64、Windows Vista Client X64复选框、勾选What type of device的Internal复选框。注意这里一定不要勾选Perform test-signing for Win10 and above复选框,因为会生成WHQL测试签名,导致在win10 1607(新装非升级)以上版本安装驱动时提示此证书已被吊销。
操作完成后点击下面的”Submit”按钮你,就提交给微软了。之后就是等微软回复了。也是在这个页面等待。



一般会卡在Manual review一段时间,有时候微软那边在睡觉,等睡醒后会进行审核。审核时间为1个小时到1天。尽力在微软工作时间提交,反馈会比较快。

We detected some issues while validating your package and are manually reviewing the package for additional filters.
上面的句子会显示在下面,是正常的,所有审核的时候都有这个提示。

若反馈的进度条是下面这种情况:



即没有Sign环节的,且提交.hlkx时Requested Signatures下面的复选框没有出现的,如下图,没有这个复选框的:



是将测试结果打包的时候操作有误,没有正确地添加EV签名的驱动文件的原因。要重新打包。

微软审核通过后,会呈现如下页面:



点击红框中的Download signed files按钮,即可下载微软签名后的驱动文件:

总结:
以上是完整测试流程,亲测可以获得微软签名。附件里有.inf模板。

其实微软有个BUG:使用一个已经测试通过HLK的包,把真正需要测试且未测试的驱动打包进去,这样可以省去时间。在第八步骤中,选择你需要的驱动文件打包。
引用内容 WHQL Release Signature:https://docs.microsoft.com/en-us/windows-hardware/drivers/install/whql-release-signature

hwql微软系列文章:
https://docs.microsoft.com/en-us/previous-versions/windows/hardware/hck/jj123537(v=vs.85)
微软WHQL认证操作视频:
https://channel9.msdn.com/Events/WinHEC/2015/DDF201-M

Windows硬件开发者论坛(包含WHQL测试):
https://social.technet.microsoft.com/Forums/Windows/fr-FR/home?forum=2150&filter=alllanguages

看雪ID:yirucandy

https://bbs.kanxue.com/user-home-597552.htm

*本文为看雪论坛优秀文章,由 yirucandy 原创,转载请注明来自看雪社区

# 往期推荐

1、Alt-Tab Terminator注册算法逆向

2、恶意木马历险记

3、VMP源码分析:反调试与绕过方法

4、Chrome V8 issue 1486342浅析

5、Cython逆向-语言特性分析

球分享

球点赞

球在看

点击阅读原文查看更多


文章来源: https://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458568532&idx=2&sn=e6a287a0fe9aff2df01c76f6df7ec382&chksm=b18df7de86fa7ec8d2fd21d98904bf22ac76eae5d6e2145700917af4d70b453f7b93eaab0968&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh