无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 20477|回复: 78
打印 上一主题 下一主题

[讨论] 关于DEVI\DPINST及inf2cat和驱动数字签名的进一步探讨

    [复制链接]
跳转到指定楼层
#
发表于 2016-11-2 18:15:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 hhh333 于 2016-11-10 18:05 编辑

缘起:
   用DEVI $XXX.CAB来安装驱动有一个最大的缺点就是CAB较大时解压需要较多的时间,感觉起来安装驱动就比较慢。后看ljycslg网友发布的win10采用了7z压缩形式,解压后用DPINST来安装,7z压缩的效率比CAB要高20%的样子,35M的CAB包如果用7z大概28M,如果更大节约的空间就更大,DPINST安装效率也很高,似乎是一种更好的方式,但无论CAB还是7z解压都另外需要时间和空间,实际效率是不高的。因此,红毛等提出一个设想用WIM映像的方式来存放驱动,我认为是可取的,于是进行测试,现碰到一些问题
1、驱动文件打包为WIM文件,挂载后用DEVI来安装
在pecmd有关devi的说明中有:DEVI *sub  D:\ABC,Net                     //D:\ABC下寻找并安装网络驱动。
因此可以用这个,后测试这个用法是无效的。于是利用forx循环来查找inf,再用DEVI XX.inf的形式来安装,但每运行一次DEVI就要对硬件进行一次列表,效率也不高,如果inf排列靠后就更慢!似乎不大可取。
2、驱动文件打包为WIM文件,挂载后用DPINST来安装
这个应该是较好的方案,不用解压直接挂载,节约了解压的时间和空间,同时DPINST为MS开发的驱动包安装工具,算法上应该是有保证的。从ljycslg网友的作品中将dpinst.exe和dpinst.xml提取出来,在win10中使用效果非常不错安装驱动很快,但放win7/8/8.1中又不行,不知何故?

测试了一下,红毛发布的64位显卡驱动,CAB-129M,打包成7z(正常压缩模式)112M,做成WIM为175M,原文件503M,因此性能上WIM应为最优,挂载几乎不要时间,真正安装的文件较少,从原盘和从挂载盘中读取文件的差异可以忽略不计。现在问题的关键要么解决DPINST的通用性问题,要么解决DEVI *sub的问题,各位有好的建议吗?
查看MS有关DPINST的说明似乎对系统没什么要求。

解决:
1、签名的破解:经过反复测试,之所以出现这个现象主要是由驱动数字签名校验引起,最彻底的解决办法是破解其签名校验,感谢yamingw 大侠提供了全套的破解文件: DRVINST.7z (391.08 KB, 下载次数: 465)
2、签名的制作:
  ①安装WDK工具以获取inf2cat;
  ②找到安装位置并把PATH环境变量设定到这个位置如:D:\Program Files\Windows Kits\10\bin\x86;
  ③为inf文件制作签名CAT文件:先看一下inf文件中[version]段有不有CatalogFile = xxxx.cat项目,没有的就加上。如从系统中提取的驱动athw8.inf中可以加上CatalogFile = athw8.cat,这样就指明了cat文件的名称,再运行Inf2Cat /driver:athw8.inf_x86_b4cfe0b424372367 /os:Server2008_x86,7_x86,8_x86,6_3_x86,这样就制作了适合Server2008、Win7/8/8.1的32数字签名,将上述OS后的x86改成x64就可制作64位的签名。其中athw8.inf_x86_b4cfe0b424372367 是驱动存放的目录名。如果批量制作,也可做成批处理文件如sn.cmd:
  1. set s=%1
  2. For /F %%I In ('dir /ad /b /s') DO Inf2Cat /driver:%%I /os:Server2008_%s%,7_%s%,8_%s%,6_3_%s%
复制代码

将所有驱动放到一个目录下,再将这个批处理也放到这个目录下,运行sn x86或sn x64就可以了一下子将所有的cat制作好;
3、进一步测试:
win8以后系统无论是32位还是64位,驱动必须有CAT文件,无论drvinst是否破解,没有cat就直接退出了,如果cat签名不对破解过的或者挂起的看一下安装的log会出现:
!!!  sig:                     Driver package INF file hash is not present in catalog file. Filename = netnvm64.inf, Error = 0xE000024B
!!!  sig:                     Driver package appears to be tampered, but error is ignored in WinPE.
用以上inf2cat制作cat后,以上提示似乎可以不出现,说明这个cat是有效的。

又:如果与显卡同时并发安装,会出现红色提示框,看log文件记录如下:
     sig:                          Catalog  = X:\windows\System32\DriverStore\Temp\{4ead746c-c950-0c4d-b166-182c607ffb46}\netnvm64.cat
!    sig:                          Verifying file against specific Authenticode(tm) catalog failed! (0x800b0100)
     sig:                     {_VERIFY_FILE_SIGNATURE exit(0x800b0100)} 17:58:02.040
!    sig:                     Driver package does not contain a signature, but user wants to install anyway.


注:WDK工具我可以到https://developer.microsoft.com/ ... /windows-driver-kit下载安装。

评分

参与人数 1无忧币 +5 收起 理由
2012duanyongli + 5

查看全部评分

62#
发表于 2023-11-27 05:52:40 | 只看该作者
学习学习
回复

使用道具 举报

61#
发表于 2023-11-25 13:57:32 | 只看该作者
谢谢分享
回复

使用道具 举报

60#
发表于 2019-6-18 09:54:35 | 只看该作者
大神,想请教个问题,dpinst似乎从Windows10版本1607(Redstone1)开始,驱动程序安装框架(Difx)工具不再包含在WDK中(https://docs.microsoft.com/de-de ... all/difx-guidelines),那么这里的dpinst还适用于win10最新版本PE的驱动安装吗?drvinst.exe这个东东不知怎么用,搞不太明白,大哥可否指教下?
回复

使用道具 举报

59#
发表于 2019-6-17 18:53:19 来自手机 | 只看该作者
请问个比较白痴的问题,dpinst.exe指的是drvinst.exe吗,我找了原生MS的10pe系统下好像只有drvinst.exe啊
回复

使用道具 举报

58#
发表于 2016-12-30 16:52:29 | 只看该作者
hhh333 发表于 2016-12-29 09:42
是的,所以显卡可以用WIM,其他优势就不是很明显了。如果用占内存的方式挂也不合算,我用的是WIMFLTR.SYS ...

還是用回解壓縮方式好了,如果嫌解壓慢用僅儲存方式壓縮就好。
回复

使用道具 举报

57#
 楼主| 发表于 2016-12-29 09:42:52 | 只看该作者
belenkwong 发表于 2016-12-28 17:18
我覺得還是7z或cab格式實用,掛載wim方式會用掉很多內存,雖然掛載方式心較快,但除了顯卡驅動包比較大,其 ...

是的,所以显卡可以用WIM,其他优势就不是很明显了。如果用占内存的方式挂也不合算,我用的是WIMFLTR.SYS来挂的。

点评

還是用回解壓縮方式好了,如果嫌解壓慢用僅儲存方式壓縮就好。  详情 回复 发表于 2016-12-30 16:52
回复

使用道具 举报

56#
发表于 2016-12-28 17:18:30 | 只看该作者
我覺得還是7z或cab格式實用,掛載wim方式會用掉很多內存,雖然掛載方式心較快,但除了顯卡驅動包比較大,其他驅動卻快不了多少。

点评

是的,所以显卡可以用WIM,其他优势就不是很明显了。如果用占内存的方式挂也不合算,我用的是WIMFLTR.SYS来挂的。  详情 回复 发表于 2016-12-29 09:42
牺牲速度换取空间,牺牲空间换取速度。都看个人需要。  发表于 2016-12-28 17:28
回复

使用道具 举报

55#
发表于 2016-12-25 18:21:11 | 只看该作者
邪恶海盗 发表于 2016-12-25 15:28
.zip格式的驱动包靠谱不,有个winmount可以挂载zip,相对来讲zip的压缩率比wim要高吧???


winmount依赖的太多了不适合PE下玩
回复

使用道具 举报

54#
发表于 2016-12-25 15:28:04 | 只看该作者
.zip格式的驱动包靠谱不,有个winmount可以挂载zip,相对来讲zip的压缩率比wim要高吧???

点评

winmount依赖的太多了不适合PE下完  详情 回复 发表于 2016-12-25 18:21
回复

使用道具 举报

53#
发表于 2016-12-25 14:23:58 来自手机 | 只看该作者
我是tp8高配版的,最近整了个pe,用drvload和j大的dpinst还有dism++添加螃蟹驱动都失败,后面只有原生的添加驱动和devi功能才成功
回复

使用道具 举报

52#
发表于 2016-12-2 16:58:04 | 只看该作者
試過把所有驅動整合到一個驅動包再用dpinst.exe 來安裝,不知為何,發現有些驅動並沒有安裝。
回复

使用道具 举报

51#
发表于 2016-12-2 16:51:40 | 只看该作者
感謝大神分享心得及完整教學,讓我等小白們能夠學習學習。我只知道壓縮率越高的檔案,解壓速度越慢,所以在需要解壓的情況下,理論上wim文件最大壓縮率最低應該是最快,時間就是金錢,硬盤也夠大,我想以後會出現僅儲存甚至不壓縮的方法來安裝驅動。
回复

使用道具 举报

50#
发表于 2016-12-2 16:51:31 | 只看该作者
感謝大神分享心得及完整教學,讓我等小白們能夠學習學習。我只知道壓縮率越高的檔案,解壓速度越慢,所以在需要解壓的情況下,理論上wim文件最大壓縮率最低應該是最快,時間就是金錢,硬盤也夠大,我想以後會出現僅儲存甚至不壓縮的方法來安裝驅動。
回复

使用道具 举报

49#
发表于 2016-12-2 14:26:16 | 只看该作者
谢谢分享
回复

使用道具 举报

48#
发表于 2016-12-1 09:29:24 | 只看该作者
本帖最后由 buger 于 2016-12-1 09:34 编辑

http://forum.ru-board.com/topic. ... p;limit=1&m=1#1可以下载到俄国佬做的驱动包

DPxPE_2016-01-00
这个是用TXT做的索引文件,像这样的格式
PCI\VEN_1002&DEV_665D,"(PE64) AMD Radeon R7 200 Series",CAT153_NT6X64\C7181821.inf,03/19/2015 v14.502.1014.0000
PCI\VEN_1002&DEV_6660,"(PE64) AMD Radeon HD 8600M Series",CAT153_NT6X64\C7181821.inf,03/19/2015 v14.502.1014.0000
PCI\VEN_1002&DEV_6663,"(PE64) AMD Radeon R5 M200 / HD 8500M Series",CAT153_NT6X64\C7181821.inf,03/19/2015 v14.502.1014.0000
PCI\VEN_1002&DEV_6664,"(PE64) AMD Radeon R5 M200 Series",CAT153_NT6X64\C7181821.inf,03/19/2015 v14.502.1014.0000

DPxSDI_2016-05-05
这个是用bin做的索引文件
LAN3_x64(1605)_NT6x64.bin
_P_WLAN-WiFi_16113.bin
_P_MassStorage_16113.bin

都是使用的一个修改版devinst v1.2 byAEKY来做的,两个驱动包包括的范围不一样,修改版的比较小安装驱动很快。
还有一个可以参考的就是 snappy driver install 这个是开源的,一直在更新。驱动包全下来有13个G,这个驱动包看大小不是修改版的.
回复

使用道具 举报

47#
发表于 2016-11-17 23:23:36 | 只看该作者
hhh333 发表于 2016-11-3 17:20
是的,现在调试好了,就是签名校验问题,前面的子程序改为如下就好了

我还以为你这个可以安装驱动呢:
  1. IFEX %SystemDrive%\Tools\NVMe\ianvme\*.*,TEAM ENVI ADD_DRV="%SystemDrive%\Tools\NVMe\ianvme"|CALL DpInsInf|ENVI ADD_DRV
  2. IFEX %SystemDrive%\Tools\NVMe\nvme\*.*,TEAM ENVI ADD_DRV="%SystemDrive%\Tools\NVMe\nvme"|CALL DpInsInf|ENVI ADD_DRV
  3. IFEX %SystemDrive%\Tools\NVMe\ocznvme\*.*,TEAM ENVI ADD_DRV="%SystemDrive%\Tools\NVMe\ocznvme"|CALL DpInsInf|ENVI ADD_DRV
  4. IFEX %SystemDrive%\Tools\NVMe\stornvme\*.*,TEAM ENVI ADD_DRV="%SystemDrive%\Tools\NVMe\stornvme"|CALL DpInsInf|ENVI ADD_DRV

  5. _SUB DpInsInf
  6. `REGI HKLM\SYSTEM\Setup\SystemSetupInProgress=#1
  7. EXEC =!dpinst.exe /S /LM /SA /SH /Path %ADD_DRV%
  8. `REGI HKLM\SYSTEM\Setup\SystemSetupInProgress=#0
  9. `WAIT 100
  10. _END
复制代码

结果不行呀。。。
请教一下老大,这个安装驱动怎么写?谢谢老大!!!
回复

使用道具 举报

46#
发表于 2016-11-11 12:56:51 | 只看该作者
yamingw 发表于 2016-11-11 11:32
可能是cat文件对应的签名授权不在受信任的根证书内。你的问题还有红毛等的最彻底的解决办法是修改bootmgr+w ...

最终改内核驱动,用第三方有效的过期签名签了之后有效。
不过DLL文件就不行了,比如我改微软的四格启动画面bootres.dll文件,签名之后在安全启动模式下就是不显示LOGO。
老大你说的问题还要加上一个bootmgr.efi和winload.efi吧
回复

使用道具 举报

45#
发表于 2016-11-11 11:34:34 来自手机 | 只看该作者
有能力的可网上搜索 patch dse 自己动手
回复

使用道具 举报

44#
发表于 2016-11-11 11:32:28 来自手机 | 只看该作者
可能是cat文件对应的签名授权不在受信任的根证书内。你的问题还有红毛等的最彻底的解决办法是修改bootmgr+winload+ntoskrnl,彻底砍掉系统的自我保护。难度有点大。

点评

最终改内核驱动,用第三方有效的过期签名签了之后有效。 不过DLL文件就不行了,比如我改微软的四格启动画面bootres.dll文件,签名之后在安全启动模式下就是不显示LOGO。 老大你说的问题还要加上一个bootmgr.efi和w  详情 回复 发表于 2016-11-11 12:56
回复

使用道具 举报

43#
 楼主| 发表于 2016-11-11 11:19:18 | 只看该作者
hhh333 发表于 2016-11-11 11:16
Verifying file against specific Authenticode(tm) catalog failed!
这句话是什么意思?

验证文件对特定的代码验证编目失败了
回复

使用道具 举报

42#
 楼主| 发表于 2016-11-11 11:16:36 | 只看该作者
Verifying file against specific Authenticode(tm) catalog failed!
这句话是什么意思?

点评

验证文件对特定的代码验证编目失败了  详情 回复 发表于 2016-11-11 11:19
回复

使用道具 举报

41#
 楼主| 发表于 2016-11-11 09:17:10 | 只看该作者
感觉到还没有完全彻底杜绝签名验证问题,主要见于驱动并发安装的时候。
回复

使用道具 举报

40#
发表于 2016-11-10 13:13:40 | 只看该作者
表示感谢 。。。
回复

使用道具 举报

39#
发表于 2016-11-8 16:56:19 | 只看该作者
2012bzsb 发表于 2016-11-8 16:39
DPINST 呢?模板呢?
一个目录,里面包括相关全部文件, 然后,可以加入自己的任意驱动(解包后的), 执行一个cmd ...

支持啊,就是不知道h3大师愿不愿意放出来。
回复

使用道具 举报

38#
发表于 2016-11-8 16:39:33 | 只看该作者
DPINST 呢?模板呢?
一个目录,里面包括相关全部文件, 然后,可以加入自己的任意驱动(解包后的), 执行一个cmd,能完成安装全部驱动,
需要一个这样的模板.

点评

支持啊,就是不知道h3大师愿不愿意放出来。  详情 回复 发表于 2016-11-8 16:56
回复

使用道具 举报

37#
 楼主| 发表于 2016-11-8 14:49:46 | 只看该作者
yamingw 发表于 2016-11-7 11:36
pnpui win7 win8 32bit

将大侠提供的全套文件整理好后放到了一楼。
另外,似乎还是没有彻底解决在驱动并发安装时出现校验出错提示。(测试了W7/W832/W864好像只有W832可以通过)
回复

使用道具 举报

36#
 楼主| 发表于 2016-11-7 16:36:11 | 只看该作者
yamingw 发表于 2016-11-7 11:36
pnpui win7 win8 32bit

经测试已经可行了,至此,因驱动校验而引起的相关问题应该算得到彻底解决。
回复

使用道具 举报

35#
发表于 2016-11-7 11:36:36 | 只看该作者
本帖最后由 yamingw 于 2016-11-7 12:06 编辑
hhh333 发表于 2016-11-7 07:13
经测试那个对win7无效

pnpui win7 win8 32bit

pnpui732.7z

136.85 KB, 下载次数: 37, 下载积分: 无忧币 -2

pnpui832.7z

12.12 KB, 下载次数: 16, 下载积分: 无忧币 -2

点评

将大侠提供的全套文件整理好后放到了一楼。 另外,似乎还是没有彻底解决在驱动并发安装时出现校验出错提示。(测试了W7/W832/W864好像只有W832可以通过)  详情 回复 发表于 2016-11-8 14:49
经测试已经可行了,至此,因驱动校验而引起的相关问题应该算得到彻底解决。  详情 回复 发表于 2016-11-7 16:36
回复

使用道具 举报

34#
 楼主| 发表于 2016-11-7 07:13:52 | 只看该作者
yamingw 发表于 2016-11-5 08:34
重启和修改无关,和pe有关,你可参考别人的pe,搜索相关讨论。32位win7、8、81所包括的pnpui版本一样,传一 ...

经测试那个对win7无效

点评

pnpui win7 32bit  详情 回复 发表于 2016-11-7 11:36
回复

使用道具 举报

33#
发表于 2016-11-7 05:54:48 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-17 00:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表