首页
社区
课程
招聘
[原创]微软WHQL签名申请完整流程--超详细,亲测可申请成功
发表于: 2024-8-12 12:43 10405

[原创]微软WHQL签名申请完整流程--超详细,亲测可申请成功

2024-8-12 12:43
10405

一、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的包,把真正需要测试且未测试的驱动打包进去,这样可以省去时间。在第八步骤中,选择你需要的驱动文件打包。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2024-8-12 12:46 被yirucandy编辑 ,原因:
上传的附件:
收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 839
活跃值: (820)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
请教费用问题:1.EV签名,要花多少钱买?能用多久?2.微软的WHQL签名要不要钱?
2024-8-12 13:00
0
雪    币: 6501
活跃值: (2377)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
3
ev一般公司买,按年买的。微软whql自己申请不要钱,第三方申请要钱。
2024-8-12 13:12
0
雪    币: 3738
活跃值: (3872)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
感谢分享。
2024-8-12 15:33
0
雪    币: 732
活跃值: (192)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享。
2024-8-13 16:05
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
请问在package阶段出现了has no locale mappings,这个是什么情况
2024-8-15 18:32
0
雪    币: 0
活跃值: (158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

你好,请问你当时申请硬件开发者的时候到这一步是怎么操作的呀?我验证好了邮箱以后就卡在这一步了。根据提示点击 Fix now 后直接被带到了如下图所示的页面,给他们发邮件也没用。

2024-9-10 14:05
1
游客
登录 | 注册 方可回帖
返回
//