无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 18290|回复: 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, 下载次数: 461)

评分

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

查看全部评分

 楼主| 发表于 2016-11-2 18:28:08 | 显示全部楼层
本帖最后由 hhh333 于 2016-11-2 18:31 编辑

公布一段代码:

  1. _SUB DCAB
  2. IFEX %1,
  3. {
  4.         `REGI HKLM\SYSTEM\Setup\SystemSetupInProgress=#1
  5.         DEVI $%1,,%Temp%
  6.         WAIT 300
  7.         TEMP @Delete
  8.         `REGI HKLM\SYSTEM\Setup\SystemSetupInProgress=#0
  9. }
  10. _END

  11. _SUB DpInsInf
  12. EXEC =!dpinst.exe /S /LM /SA /SH /Path %1
  13. WAIT 100
  14. _END

  15. _SUB DpIns7Z
  16. `FORX %1\*.7Z,fzip,1,
  17. ENVI fzip=%1
  18. IFEX %fzip%,
  19. {
  20.         NAME &&fname=%fzip%
  21.         EXEC =!7z.exe x %fzip% -o%temp%\%&fname%
  22.         CALL DpInsInf %temp%\%&fname%
  23.         FILE -q %temp%\%&fname%
  24. }
  25. _END

  26. _SUB DpInsWim        `挂WIM文件安装驱动(注意引入了一个外部参数MountDrv)
  27. `FORX %1\*.WIM,fzip,1,
  28. ENVI fzip=%1
  29. IFEX %fzip%,
  30. {
  31.         NAME &&fname=%fzip%
  32.         MOUN  %fzip%,%MountDrv%\%&fname%
  33.         CALL DpInsInf %MountDrv%\%&fname%
  34.         MOUN ,%MountDrv%\%&fname%,0
  35. }
  36. _END
  37. DEVI MountDrv=Y:
  38. DEVI ADD_DRV=XXXX
  39. ENVI FCAB=DRIVERS_VGA.CAB
  40. ENVI FWIM=DRIVERS_VGA.WIM
  41. ENVI F7Z=DRIVERS_VGA.7Z
  42. ENVI OUTCAB=%ADD_DRV%\%FCAB%

  43. CALL DpInsInf %ADD_DRV%
  44. CALL DpInsWim %ADD_DRV%\%FWIM%
  45. CALL DpIns7z %ADD_DRV%\%F7Z%
  46. DCAB %OUTCAB%
复制代码


这个可以支持原文件、WIM、7z和CAB四种存放方式的搜索驱动并安装,系统目录中有DPINST,Win10中运行无误,其他系统无反应。
回复

使用道具 举报

发表于 2016-11-2 20:04:31 来自手机 | 显示全部楼层
是不是dpinst版本的问题?
回复

使用道具 举报

发表于 2016-11-2 20:12:24 来自手机 | 显示全部楼层
可以这样测试
把7z的某一可用驱动移动为wim文件,如当前机的网卡,按你说的使用7z来加载没有网卡的驱动包,手动加载wim,再手动使用dpinst,就可以看问题出在哪儿了
回复

使用道具 举报

 楼主| 发表于 2016-11-2 20:47:52 | 显示全部楼层
经跟踪,并不是dpinst没有工作,各系统中均有工作,但只是安装不成功而已
回复

使用道具 举报

发表于 2016-11-2 21:20:18 来自手机 | 显示全部楼层
cab或者的7z的内容,事前对inf进行索引,得到id和驱动的压缩包目录关系,进系统根据系统设备信息,解压特定的驱动文件,或者直接处理或者遍历相关inf应该是可以提高加载速度的。
回复

使用道具 举报

发表于 2016-11-2 21:30:24 来自手机 | 显示全部楼层
比较一下各系统的drvinst.exe与原版是否一样,win10的有可能是经过修改的
回复

使用道具 举报

发表于 2016-11-2 21:36:14 | 显示全部楼层
还是等M出来解决DEVI的一些问题才行。
回复

使用道具 举报

 楼主| 发表于 2016-11-2 22:15:35 | 显示全部楼层
这是dpinst的log文件: dplog.7z (1.83 KB, 下载次数: 24)
回复

使用道具 举报

发表于 2016-11-2 22:17:45 | 显示全部楼层
CAB文件体积大些,但是解压比7z压缩包要快。
回复

使用道具 举报

发表于 2016-11-2 23:17:43 | 显示全部楼层
“从ljycslg网友的作品中将dpinst.exe和dpinst.xml提取出来,在win10中使用效果非常不错安装驱动很快,但放win7/8/8.1中又不行,不知何故?”
——我签名处0pe附带的win8.1也用到dpinst,没有肯定不行的印象。
回复

使用道具 举报

发表于 2016-11-3 01:11:09 来自手机 | 显示全部楼层
私聊你的站内短信看到了么?
回复

使用道具 举报

 楼主| 发表于 2016-11-3 06:33:30 来自手机 | 显示全部楼层
似乎用devi $xxx.cab方式都要先全部解压的
回复

使用道具 举报

 楼主| 发表于 2016-11-3 11:24:28 | 显示全部楼层
本帖最后由 hhh333 于 2016-11-10 18:17 编辑

找到drvinst安装的log如下:

  1. >>>  [Setup Import Driver Package - c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\cw179335_new.inf]
  2. >>>  Section start 2016/11/03 10:57:04.058
  3.       cmd: dpinst.exe  /S /LM /SA /SH /Path DRIVERS_VGA
  4.      inf: Provider: Advanced Micro Devices, Inc.
  5.      inf: Class GUID: {4D36E968-E325-11CE-BFC1-08002BE10318}
  6.      inf: Driver Version: 01/13/2015,8.970.100.9001
  7.      inf: Catalog File: CW179335.CAT
  8.      sto: {Copy Driver Package: c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\cw179335_new.inf} 10:57:04.090
  9.      sto:      Driver Package = c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\cw179335_new.inf
  10.      sto:      Flags          = 0x00000007
  11.      sto:      Destination    = X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}
  12.      sto:      Copying driver package files to 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}'.
  13.      flq:      Copying 'c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\.\B179315\aticfx32.dll' to 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\aticfx32.dll'.
  14.      flq:      Copying 'c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\.\B179315\atiu9pag.dll' to 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\atiu9pag.dll'.
  15.      flq:      Copying 'c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\.\B179315\atiumdag.dll' to 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\atiumdag.dll'.
  16.      flq:      Copying 'c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\.\B179315\atikmdag.sys' to 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\atikmdag.sys'.
  17.      flq:      Copying 'c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\.\B179315\atikmpag.sys' to 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\atikmpag.sys'.
  18.      flq:      Copying 'c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\cw179335_new.inf' to 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\cw179335_new.inf'.
  19.      flq:      Copying 'c:\h3pe\add_drv\nt6\display\x86\drivers_vga\amd\0\CW179335.CAT' to 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\CW179335.CAT'.
  20.      sto: {Copy Driver Package: exit(0x00000000)} 10:57:05.215
  21.      pol: {Driver package policy check} 10:57:05.230
  22.      pol: {Driver package policy check - exit(0x00000000)} 10:57:05.230
  23.      sto: {Stage Driver Package: X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\cw179335_new.inf} 10:57:05.230
  24.      inf:      {Query Configurability: X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\cw179335_new.inf} 10:57:05.340
  25. !    inf:           Found legacy RegisterDlls operation.
  26. !    inf:           Found legacy DelFiles operation for 'ativvaxx.dll'.
  27. !    inf:           Found legacy AddReg operation using non-relative key (HKLM\Software\ATI Technologies\CBT).
  28. !    inf:           Found legacy DelReg operation.
  29. !    inf:           Found legacy DelService operation for 'Ati External Event Utility'.
  30. !    inf:           Found legacy AddReg operation defining co-installers (CoInstallers32).
  31. !    inf:           Driver package 'cw179335_new.inf' is NOT configurable.
  32.      inf:      {Query Configurability: exit(0x00000000)} 10:57:05.402
  33.      flq:      Copying 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\aticfx32.dll' to 'X:\windows\System32\DriverStore\Temp\{47ac9570-07c7-5d49-94ae-956a2dcf0251}\.\B179315\aticfx32.dll'.
  34.      flq:      Copying 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\atiu9pag.dll' to 'X:\windows\System32\DriverStore\Temp\{47ac9570-07c7-5d49-94ae-956a2dcf0251}\.\B179315\atiu9pag.dll'.
  35.      flq:      Copying 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\atiumdag.dll' to 'X:\windows\System32\DriverStore\Temp\{47ac9570-07c7-5d49-94ae-956a2dcf0251}\.\B179315\atiumdag.dll'.
  36.      flq:      Copying 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\atikmdag.sys' to 'X:\windows\System32\DriverStore\Temp\{47ac9570-07c7-5d49-94ae-956a2dcf0251}\.\B179315\atikmdag.sys'.
  37.      flq:      Copying 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\.\B179315\atikmpag.sys' to 'X:\windows\System32\DriverStore\Temp\{47ac9570-07c7-5d49-94ae-956a2dcf0251}\.\B179315\atikmpag.sys'.
  38.      flq:      Copying 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\cw179335_new.inf' to 'X:\windows\System32\DriverStore\Temp\{47ac9570-07c7-5d49-94ae-956a2dcf0251}\cw179335_new.inf'.
  39.      flq:      Copying 'X:\Users\ADMINI~1\AppData\Local\Temp\{53e629b7-01e5-514a-a792-1014be190d32}\CW179335.CAT' to 'X:\windows\System32\DriverStore\Temp\{47ac9570-07c7-5d49-94ae-956a2dcf0251}\CW179335.CAT'.
  40.      sto:      {DRIVERSTORE IMPORT VALIDATE} 10:57:05.512
  41. !!!  sig:           Driver package INF file hash is not present in catalog file. Filename = cw179335_new.inf, Error = 0xE000024B
  42. !!!  sig:           Driver package appears to be tampered, and it will not be installed.
  43. !!!  sig:           Driver package failed signature validation. Error = 0xE0000247
  44.      sto:      {DRIVERSTORE IMPORT VALIDATE: exit(0xe0000247)} 10:57:05.558
  45. !!!  sig:      Driver package failed signature verification. Error = 0xE0000247
  46. !!!  sto:      Failed to import driver package into Driver Store. Error = 0xE0000247
  47.      sto: {Stage Driver Package: exit(0xe0000247)} 10:57:05.574
  48. <<<  Section end 2016/11/03 10:57:05.574
  49. <<<  [Exit status: FAILURE(0xe0000247)]


复制代码


好象是签名校验的问题
回复

使用道具 举报

发表于 2016-11-3 12:36:59 来自手机 | 显示全部楼层
winpe,x86,systemseupinprogress=1的时候好像不需要驱动验证
回复

使用道具 举报

发表于 2016-11-3 15:47:09 | 显示全部楼层
使用H3cdall.iso 试了一下 8.1.
x86:systemseupinprogress=0的时候,dpinst返回247,systemseupinprogress=1,ok。
x64:dpinst返回247,使用修改过的drvinst,ok。
另外吐槽一下:要是不安装开始菜单,竟然按CAD组合键才能重启。
回复

使用道具 举报

 楼主| 发表于 2016-11-3 17:20:58 | 显示全部楼层
本帖最后由 hhh333 于 2016-11-3 17:32 编辑

是的,现在调试好了,就是签名校验问题,前面的子程序改为如下就好了
  1. _SUB DpInsInf
  2. REGI HKLM\SYSTEM\Setup\SystemSetupInProgress=#1
  3. EXEC =!dpinst.exe /S /LM /SA /SH /Path %1
  4. REGI HKLM\SYSTEM\Setup\SystemSetupInProgress=#0
  5. WAIT 100
  6. _END
复制代码


64位这个方法不行,看来只能修改drvinst程序了,请问一下哪里有修改好的适用于多个系统的程序,目前主要需要8、8.1的这个程序

点评

我还以为你这个可以安装驱动呢: 结果不行呀。。。 请教一下老大,这个安装驱动怎么写?谢谢老大!!!  详情 回复 发表于 2016-11-17 23:23
通用的不好说,必竞是糸统文件,请参考 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=371490&page=6#pid3161049  详情 回复 发表于 2016-11-3 21:31
回复

使用道具 举报

发表于 2016-11-3 17:30:50 来自手机 | 显示全部楼层
win7试了,dispci.dll必须,还缺少其他东西,但是补上dispci后加载驱动后黑屏,什么也看不了了
回复

使用道具 举报

 楼主| 发表于 2016-11-3 17:33:56 | 显示全部楼层
前面32位在win7/8/8.1中都测试通过了。
回复

使用道具 举报

 楼主| 发表于 2016-11-3 17:38:30 | 显示全部楼层
本帖最后由 hhh333 于 2016-11-3 17:44 编辑

dpinst也有缺点,会将所有的inf与系统配对一次,对上就安装,不能指定配对的次数,如配对安装就退出,因为一个包可能就只有一个能配对上。
也不能算缺点吧,如果把所有驱动都放一个包中,一次就可全部装上
回复

使用道具 举报

发表于 2016-11-3 21:31:40 | 显示全部楼层
hhh333 发表于 2016-11-3 17:20
是的,现在调试好了,就是签名校验问题,前面的子程序改为如下就好了

通用的不好说,必竞是糸统文件,请参考
http://bbs.wuyou.net/forum.php?m ... p;page=6#pid3161049

点评

刚才测试了一下HKLM\SYSTEM\Setup\SystemSetupInProgress=#1似乎对win864位有效。  详情 回复 发表于 2016-11-4 15:37
回复

使用道具 举报

 楼主| 发表于 2016-11-4 13:56:55 来自手机 | 显示全部楼层
看到了说明,请问win8系统的怎么破解?
回复

使用道具 举报

 楼主| 发表于 2016-11-4 15:37:23 | 显示全部楼层
yamingw 发表于 2016-11-3 21:31
通用的不好说,必竞是糸统文件,请参考
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=371490&pag ...

刚才测试了一下HKLM\SYSTEM\Setup\SystemSetupInProgress=#1似乎对win864位有效。

点评

win7 32B 8B F0 85 F6 75 07 8B 03 WIN8 32B 8B F0 85 F6 75 0F 8B 8F Win8 64bit 8B D8 85 C0 75 09 41 8B  详情 回复 发表于 2016-11-4 17:54
回复

使用道具 举报

发表于 2016-11-4 17:54:36 | 显示全部楼层
hhh333 发表于 2016-11-4 15:37
刚才测试了一下HKLM\SYSTEM\Setup\SystemSetupInProgress=#1似乎对win864位有效。


win7 32B
8B F0
85 F6
75 07
8B 03
WIN8 32B
8B F0
85 F6
75 0F
8B 8F
Win8 64bit
8B D8
85 C0
75 09
41 8B

w780.7z

104.37 KB, 下载次数: 28, 下载积分: 无忧币 -2

w8164.zip

155.28 KB, 下载次数: 38, 下载积分: 无忧币 -2

点评

谢谢了,原理都是一样的吧,修改函数的返回值?32位不要改其他文件了吧。这个是应该没有什么副作用的,干脆全部换了。  详情 回复 发表于 2016-11-4 18:01
回复

使用道具 举报

 楼主| 发表于 2016-11-4 18:01:09 | 显示全部楼层
本帖最后由 hhh333 于 2016-11-4 18:12 编辑
yamingw 发表于 2016-11-4 17:54
win7 32B
8B F0
85 F6


谢谢了,原理都是一样的吧,修改函数的返回值?32位不要改其他文件了吧。这个是应该没有什么副作用的,干脆全部换了,以免总是搞些么蛾子。
回复

使用道具 举报

发表于 2016-11-4 18:45:07 来自手机 | 显示全部楼层
是的,32位缺78的pnpui,明天再传,今晚电脑不在身边

点评

Win7换了一个文件还不行,驱动装上要求重启生效,看来另一个文件要改。win8 32似乎换一个文件就可以了,不知何故。看来32位还麻烦些。把显卡驱动包换成了WIM文件,似乎确实安装速度有些提高。  详情 回复 发表于 2016-11-4 23:42
回复

使用道具 举报

 楼主| 发表于 2016-11-4 23:42:01 | 显示全部楼层
yamingw 发表于 2016-11-4 18:45
是的,32位缺78的pnpui,明天再传,今晚电脑不在身边

Win7换了一个文件还不行,驱动装上要求重启生效,看来另一个文件要改。win8 32似乎换一个文件就可以了,不知何故。看来32位还麻烦些。把显卡驱动包换成了WIM文件,似乎确实安装速度有些提高。
回复

使用道具 举报

发表于 2016-11-5 08:34:52 | 显示全部楼层
本帖最后由 yamingw 于 2016-11-5 08:36 编辑

重启和修改无关,和pe有关,你可参考别人的pe,搜索相关讨论。32位win7、8、81所包括的pnpui版本一样,传一个81的,你试试。

pnpui781.7z

11.81 KB, 下载次数: 21, 下载积分: 无忧币 -2

drvinst8132.7z

40.52 KB, 下载次数: 23, 下载积分: 无忧币 -2

点评

经测试那个对win7无效  详情 回复 发表于 2016-11-7 07:13
win7两个文件大小相差太大了,可以通用吗?  详情 回复 发表于 2016-11-6 22:06
回复

使用道具 举报

 楼主| 发表于 2016-11-5 09:47:53 来自手机 | 显示全部楼层
HKLM\SYSTEM\Setup\SystemSetupInProgress=#1加上这个就不要求重启
回复

使用道具 举报

 楼主| 发表于 2016-11-5 09:51:55 来自手机 | 显示全部楼层
看了一下drvinst的调用,可能很难统一一个版本win10各版本间看能否通用
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 15:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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