无忧启动论坛

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

[原创] 全版本drvinst.exe文件5分钟跳过驱动签名验证修改指南

    [复制链接]
跳转到指定楼层
#
发表于 2018-4-6 15:21:38 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 slore 于 2018-6-23 12:11 编辑

破解方法:
1.通过微软的符号服务器,找到关键调用函数的位置
2.UE修改跳转语句

我精简了最必要的组件打包为windisam工具。


z01.zip解压后改名z01
windisam.z01.zip (2.5 MB, 下载次数: 804)
windisam.zip (1.75 MB, 下载次数: 913)

1分钟半破解GIF演示:


5分钟破解步骤:
1.解压到任意目录(最好简单没空格纯英文例如D:\windisam)

2.把drvinst.exe放到相同目录

3.拖动drvinst.exe文件到symbol_dl.bat

1,2秒左右,drvinst.pdb文件将生成一个Symbols文件夹

4.剪切drvinst.pdb到windisam根目录

5.拖动drivinst.exe到wdisasm.bat

1,2秒左右,将得到drvinst.asm反汇编文件

6.用记事本打开drvinst.asm文件,查找__imp_pSetupValidateDriverPackage
补充:有人问32位的,好像32位直接改注册表可以用不需要,既然问了就看了下。
32位的函数名是__imp__pSetupValidateDriverPackage
多了一个下划线,所以通用的话,用pSetupValidateDriverPackage就可以了。


  1.   000000014000898F: FF 15 E3 4B 01 00  call        qword ptr [__imp_pSetupValidateDriverPackage]
  2.   0000000140008995: 8B F8              mov         edi,eax
  3.   0000000140008997: 85 C0              test        eax,eax
  4.   0000000140008999: 75 09              jne         00000001400089A4
复制代码


调用之后,会有一个test比较,然后是个跳转,处理这个跳转即可。

7. UE打开drvinst.exe,搜索字节序,改之。
8B F8 85 C0 75 09 41 8B
改成如下:
33 C0 8B F8 90 90 41 8B

8. 完。

实际操作非常简单,我就不图文了。








为什么这么处理这个跳转的详细说明,请看。以后可以照猫画虎处理RS5,RS6,估计,也许。

==============================================================================================
一般代码是这样的:
if (SetupValidateDriverPackage() != 0) {
   //签名不正确
   xxxxxxxx
   return 1
} else {
//签名正确
   return 0
}

或者
if (SetupValidateDriverPackage() == 0) {
   //签名正确
   xxxxxxxx
   return 0
} else {
  //签名不正确
  写错误日志
  return 1
}



17133为例:
  000000014000898F: FF 15 E3 4B 01 00  call        qword ptr [__imp_pSetupValidateDriverPackage]
  0000000140008995: 8B F8              mov         edi,eax
  0000000140008997: 85 C0              test        eax,eax
  0000000140008999: 75 09              jne         00000001400089A4     <- 返回值不为0跳转到00000001400089A4
  000000014000899B: 41 8B 07           mov         eax,dword ptr [r15]
  000000014000899E: 41 89 46 10        mov         dword ptr [r14+10h],eax
  00000001400089A2: EB 3B              jmp         00000001400089DF  <--- 正常处理
  00000001400089A4: BA 20 00 00 00     mov         edx,20h
  00000001400089A9: 89 44 24 20        mov         dword ptr [rsp+20h],eax
  00000001400089AD: 4C 8D 0D 3C 65 01  lea         r9,[??_C@_0DL@BAACEHAK@Driver?5package?5failed?5signature?5@]
                    00
  00000001400089B4: 48 8B CD           mov         rcx,rbp
  00000001400089B7: 44 8D 42 E1        lea         r8d,[rdx-1Fh]

jne跳到00000001400089A4后面是failed,那么就是出错处理,不要让它跳,75改74,签名认证成功跳转到failed,签名不正确不跳转,继续走正常处理。
或者75 09改成90 90,这个判断跳转不执行,不管驱动签名成功与否,都向下继续走000000014000899B,不知道PE会不有正常正常的驱动签名的文件,
有的话,建议用90 90吧。另外这里主要是找到关键跳转的位置的方法,汇编怎么改好,我不太懂,可以参考旧版本的修改。。。
我改的比较暴力,强跳,也有改test eax,eax比较语句的让其判断一直成立。

补充1:
某老版本的修正如下:
8B F0 85 C0 75 09 41 8B
改为
33 C0 8B F0 90 90 41 8B

17133对应:
8B F8 85 C0 75 09 41 8B
可能改成如下:
33 C0 8B F8 90 90 41 8B

我个人觉得90 90就够了,这个先33 C0,然后把去掉了85 C0 test eax,eax的话,保证eax和正确签名的时候一样为0(也就是签名验证函数返回0,没出错)。

  1.   000000014000898F: FF 15 E3 4B 01 00  call        qword ptr [__imp_pSetupValidateDriverPackage]
  2.   0000000140008995: 33 C0              xor         eax,eax     <- 异或运算,eax自己和自己异或结果为0
  3.   0000000140008997: 8B F8              mov         edi,eax    <- 把0放到edi上,和驱动签名正常时一样,放入0
  4.   0000000140008999: 90                 nop       <- 没必要判断了,90之,直接往下走,不过eax已经是0了,保持原来的jne  00000001400089A4跳转好像也可以(75 09),跳转条件不成立不会跳的
  5.   000000014000899A: 90                 nop
  6.   000000014000899B: 41 8B 07           mov         eax,dword ptr [r15]
  7.   000000014000899E: 41 89 46 10        mov         dword ptr [r14+10h],eax
  8.   00000001400089A2: EB 3B              jmp         00000001400089DF
复制代码


补充2(继续往下走):
  000000014000899B: 41 8B 07           mov         eax,dword ptr [r15]                   <-r15的值保存到eax上
  000000014000899E: 41 89 46 10        mov         dword ptr [r14+10h],eax          <-eax保存到[r14+10h]上
  00000001400089A2: EB 3B              jmp         00000001400089DF
...
  00000001400089DF: 4C 8D 5C 24 60     lea         r11,[rsp+60h]
  00000001400089E4: 8B C7              mov         eax,edi         <- edi保存到eax,然后后面就ret了,那么这个函数的返回值是edi,所以上面光90 90的话,只是不写出错日志log,上层函数还会因为返回值是1失败。
  00000001400089E6: 49 8B 5B 30        mov         rbx,qword ptr [r11+30h]
  00000001400089EA: 49 8B 6B 40        mov         rbp,qword ptr [r11+40h]
  00000001400089EE: 49 8B E3           mov         rsp,r11
  00000001400089F1: 41 5F              pop         r15
  00000001400089F3: 41 5E              pop         r14
  00000001400089F5: 41 5C              pop         r12
  00000001400089F7: 5F                 pop         rdi
  00000001400089F8: 5E                 pop         rsi
  00000001400089F9: C3                 ret


33 C0是干这个事的,还是要这样改才对。

还原的代码为:
  1.       ret = pSetupValidateDriverPackage(...);
  2.       if ( ret !=0 )
  3.         SetupWriteTextLog(v9, 0x20u, 1u, "Driver package failed signature validation. Error = 0x%08X");
  4.       else
  5.         *(_DWORD *)(var1 + 16) = *(_DWORD *)(var2 + 2104);
  6.       return (unsigned int)ret;
  7.     }
复制代码


只改90 90的话,没有if (ret!=0)的判断跳转到写日志,但是返回值是1,主要看上层函数管不管这个值,如果管还可能失败,还看不到日志(Driver package failed signature validation. )
  1. ret = pSetupValidateDriverPackage(...);
  2. *(_DWORD *)(var1 + 16) = *(_DWORD *)(var2 + 2104);
  3. return (unsigned int)ret;
复制代码


33 C0 .. 90 90的话,和正常签名效果一样,保存*(_DWORD *)(var1 + 16)且返回值为0
  1. ret = pSetupValidateDriverPackage(...);
  2. ret = ret xor ret;  //ret = 0
  3. *(_DWORD *)(var1 + 16) = *(_DWORD *)(var2 + 2104);
  4. return (unsigned int)ret;
复制代码

评分

参与人数 16无忧币 +80 收起 理由
2013koko + 5 牛!
纯脆entropy + 5 赞一个!
twak2142 + 5 赞一个!
whyme22 + 5
zhuhongxing + 5 正发愁,看了这篇教程,哈哈,大神膜拜
hero8000 + 5 很给力!
zmac2007 + 5
3ax31a + 5 很给力!
2012duanyongli + 5 啥都不说了...
tools241 + 5 很给力!
lwslin + 5 很给力!
nttwqz + 5 介于牛W与牛Y直接的神人哪!
tegl + 5 膜拜
2012zhd + 5 赞一个!
1400700226 + 5
freesoft00 + 5

查看全部评分

来自 88#
发表于 2019-6-5 15:25:54 | 只看该作者
Windows 10 18908 x64
8B F0 85 C0 74 47
改为
33 C0 8B F0 EB 47

评分

参与人数 1无忧币 +5 收起 理由
nf17b + 5 謝謝

查看全部评分

回复

使用道具 举报

推荐
发表于 2018-4-7 22:49:55 | 只看该作者
本帖最后由 tools241 于 2020-9-27 09:16 编辑

17666x64
  请参考楼主本文, 用Uedit32.exe找
8B F8 85 C0 75 09 41 8B
  改成:
33 C0 8B F8 90 90 41 8B

________________________________
17666x86

  请参考楼主在 #21F 的回复, 用Uedit32.exe找
8B D8 85 DB 75 0a 8B 4D
  改成:
33 C0 8B D8 90 90 8B 4D


_________________________________________
18980x64 , 用Uedit32.exe找:
FF FF 8B F0 85 C0 74 23  改成 FF FF 33 C0 8B F0 90 90
FF 85 C0 74 1F 48 改成 FF 33 C0 EB 1F 48
FF 85 C0 75 23 65 改成 FF 33 C0 90 90 65

________________________________
18980x86 , 用Uedit32.exe找:
FF FF 8B D8 85 DB 74 1B 改成 FF FF 33 C0 8B D8 90 90
FF 85 C0 74 1D 8B 改成 FF 33 C0 EB 1D 8B
FF 85 C0 75 13 64 改成 FF 33 C0 90 90 64


_________________________________________

一.10PE适用的drvinst.exe
注: 因故已无法提供*.exe载点.
仅供参考: 初步测试 drvinst.exe 的推论:
10240x64 可使用在10PEx64 16299版至10240版.
10240x86 可使用在10PEx86 16299版至10240版.
17666x64 可使用在10PEx64 16299版至15063版.
17666x86 可使用在10PEx86 16299版至15063版.
17134版起最好采用同版本的drvinst.exe



二.有兴趣者可自行取得原始EXE档, 利用 Uedit32.exe 加以修改:
UltraEdit.7z (9M) -- 此为旧版, 若取得新版须注册否则有使用期限
10PE20215x64(RamOS)_Admin_C.iso 504M -- 可与手机连线, 可由桌面以最高管理员登入(>72H不会重启), 内建  "微软拼音/五笔"
百度网盘1 (ISO1 新版), 2019/06/08新链接:  https://cowtransfer.com/s/03b63f2eb7c649   提取码: czfb


三.如何由 *.EXE 产生 *.asm
1.先下载楼主在本文中提供的 windisam.z01.zip 及 windisam.zip
   windisam.z01.zip改名windisam.z01再解压windisam.zip
2.一般的10PE可能无法正常执行 windisam 之下的 *.bat ,
   可改用 "正常Win系统" 或本人发布的 10PE20215x64(RamOS)_Admin_?.iso ,
  采用10PE20215x64(RamOS)_Admin_?.iso 启动后, 须登入Administrator再执行 windisam 之下的 *.bat ,
3.windisam\dumpbin_x86 之下补17个DLL档, 可由本人特制的 Firefox56 免安装版的 APP\Firefox\*.DLL 复制过来:
   [ Firefox56(免安装异空版,不支援XP,可用新旧套件不可用外挂,32位元含26元件,简繁英通用).rar  (70M)
     ==> https://www.firefox.net.cn/read-52082   ]
windisam\dumpbin_x86 之下补17个DLL档, 清单如下:
api-ms-win-crt-conio-l1-1-0.dll
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-environment-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-multibyte-l1-1-0.dll
api-ms-win-crt-process-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-time-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
msvcp140.dll
ucrtbase.dll
vcruntime140.dll

点评

t大,麻烦破解一下win8x64的drvinst.exe  详情 回复 发表于 2018-4-8 08:11

评分

参与人数 2无忧币 +10 收起 理由
zmac2007 + 5
2012zhd + 5 很给力!

查看全部评分

回复

使用道具 举报

86#
发表于 2024-10-10 19:55:22 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

85#
发表于 2024-7-12 15:22:06 | 只看该作者
这个要学习一下啊
回复

使用道具 举报

84#
发表于 2023-11-19 17:21:32 | 只看该作者
谢谢分享
回复

使用道具 举报

83#
发表于 2023-10-23 07:03:38 | 只看该作者
破解 drvinst.exe 的好帖
回复

使用道具 举报

82#
发表于 2023-10-1 22:01:31 | 只看该作者
感谢大佬教学
回复

使用道具 举报

81#
发表于 2023-7-27 07:28:44 | 只看该作者
本帖最后由 ZXGU 于 2023-7-27 16:54 编辑
2011mtw35 发表于 2021-7-30 22:39
S大,drvinst.asm里面没pSetupValidateDriverPackage这个参数啊,有时间帮忙看看什么问题,

...

问下有经验的:Win11是否也是这样修改?字节序依旧是这样改吗
回复

使用道具 举报

80#
发表于 2023-4-2 18:02:05 | 只看该作者
惭愧,我看不明白。
回复

使用道具 举报

79#
发表于 2023-4-2 17:51:04 | 只看该作者
分享快乐
回复

使用道具 举报

78#
发表于 2023-3-9 09:52:49 | 只看该作者
感谢分享!
回复

使用道具 举报

77#
发表于 2023-2-9 12:51:15 | 只看该作者
终于找到了,可惜下不了附件啊。哪位给搞个网盘,谢谢
回复

使用道具 举报

76#
发表于 2023-2-7 00:32:27 | 只看该作者
谢谢分享,备用
回复

使用道具 举报

75#
发表于 2023-1-28 00:50:06 | 只看该作者
感谢分享
回复

使用道具 举报

74#
发表于 2023-1-28 00:25:46 | 只看该作者
Perfect job!
回复

使用道具 举报

73#
发表于 2023-1-19 19:37:16 | 只看该作者
好强的技术帖,谢谢楼主的分享
回复

使用道具 举报

72#
发表于 2022-3-16 21:08:06 | 只看该作者
70楼的关键词 ValidateDriverPackage 可以, 谢谢了~
PS: 用点评不便于回复
回复

使用道具 举报

71#
发表于 2022-3-10 14:47:23 | 只看该作者
新版本的 drvinst.exe 已经查不到 pSetupValidateDriverPackage 关键词了

点评

#70楼的关键字行不行?  发表于 2022-3-12 08:20
回复

使用道具 举报

70#
发表于 2022-2-27 10:15:18 | 只看该作者
感谢分享!
回复

使用道具 举报

69#
发表于 2022-2-18 22:02:23 | 只看该作者
66666666666666
回复

使用道具 举报

68#
发表于 2022-2-18 22:02:12 | 只看该作者
666666666666666666666
回复

使用道具 举报

67#
 楼主| 发表于 2021-7-31 00:14:50 | 只看该作者
2011mtw35 发表于 2021-7-30 22:39
S大,drvinst.asm里面没pSetupValidateDriverPackage这个参数啊,有时间帮忙看看什么问题,

...

你搜索下 ValidateDriverPackage 是不是就有了?
关键码和21h1一样的。
回复

使用道具 举报

66#
发表于 2021-7-30 22:39:21 | 只看该作者
S大,drvinst.asm里面没pSetupValidateDriverPackage这个参数啊,有时间帮忙看看什么问题,

原版drvinst.22000.100.rar (145.39 KB, 下载次数: 14)





点评

问下有经验的:Win11是否也是这样修改?字节序依旧是 33 C0 8B F8 90 90 41 8B 吗  详情 回复 发表于 2023-7-27 07:28
你搜索下 ValidateDriverPackage 是不是就有了? 关键码和21h1一样的。  详情 回复 发表于 2021-7-31 00:14
回复

使用道具 举报

65#
发表于 2019-12-4 08:53:58 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-4 09:30 编辑

好消息!抽空测试了下,按照slore大神67楼的指引,
G:\WimBuilder2-Full20191010\WimBuilder2-Full14393\Projects\WIN10XPE\01-Components\Patch_drvinst\main.bat
27行添加这个:
rem 新增加的语句:
if %VER[3]% LSS 15063 goto :AssemblePatch

48行添加这个:
:Drvinst_10.0.14393_x64
call :PATCH 8BD8 85C0 7508 8B06
rem call :FULL_PATH 8BD8_85C0_7508_8B06 33C0_8BD8_9090_8B06
goto :EOF

然后14393PE在wimbuilder2的组件→禁用驱动签名数字验证勾上,搭配ljyclsgPE里面提取的无线网卡驱动,无线网卡驱动正常了!

大家测试下看看,如果没问题,希望slore大神把上面的语句纳入新版的wimbuilder2中。
下载地址1:链接: https://pan.baidu.com/s/1SiXX0g2yv5Ee7Dke2k0uUg 提取码: g4es
文叔叔7天分享不限速:https://wss1.cn/f/18jn6a50gvb
        


点评

master版本已经有上面的代码了  发表于 2019-12-4 09:04
回复

使用道具 举报

64#
发表于 2019-12-3 07:23:34 来自手机 | 只看该作者
我记得有帖子讨论过,显示是patch成功了的,确实是修改过了的,修改过的drvinst和没有修改的是不同的表现,没修改的不会出现内存位置访问无无效的问题 。   
回复

使用道具 举报

63#
 楼主| 发表于 2019-12-2 22:40:33 | 只看该作者
liuzhaoyzz 发表于 2019-12-2 20:23
刚才试了下,
H:\WimBuilder2-Full2019101014393\Projects\WIN10XPE\01-Components\Patch_drvinst\main.ba ...

测试了,
  1. :Drvinst_10.0.14393_x64
  2. call :PATCH 8BD8 85C0 7508 8B06
  3. goto :EOF
复制代码

代码没有问题。这个帖子的内容没问题。

=========================================
你没有看日志?没有添加pause确认自己的代码被运行?也没有提取PE的系统文件比较?

“提示内存位置访问无效”错误,是因为你没有成功修改。

因为默认先使用通用补丁(DrvInstPatch.exe),不过这个补丁貌似对低版本改的不太对。

Applying Patch:.\Patch_drvinst\main.bat
X:\Windows\System32\drvinst.exe was successfully patched!

这里成功了,就没继续。


开测试,正常构建时的日志是:
Extracting file data: 181 KiB of 181 KiB (100%) done
Done extracting files.
Applying Patch:.\Patch_drvinst\main.bat
X\Windows\INF\netrndis.inf
X\Windows\INF\rndismp6.sys
X\Windows\INF\usb80236.sys
X\Windows\INF\wceisvista.inf
复制了 4 个文件
Assemble Patch ...
Writing to X:\Windows\System32\drvinst.exe.org...
Writing to X:\Windows\System32\drvinst.exe...
Done: 1 matches.
正在比较文件 X:\WINDOWS\SYSTEM32\drvinst.exe.org 和 X:\WINDOWS\SYSTEM32\DRVINST.EXE
00006802: 8B 33
00006803: D8 C0
00006804: 85 8B
00006805: C0 D8
00006806: 75 90
00006807: 08 90


正确的修改是添加一行下面的代码,在通用补丁执行前跳转
  1. if %VER[3]% LSS 15063 goto :AssemblePatch
复制代码



另外,默认的测试驱动就是RNDIS驱动。。。是系统自带的,
仅当DRIVERS“未设置”的时候,才需要修改drvinst.exe,
合并和替换的话,自动就可以正常安装驱动,达不到测试的目的。

回复

使用道具 举报

62#
发表于 2019-12-2 20:23:36 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-12-2 20:26 编辑

刚才试了下,
H:\WimBuilder2-Full2019101014393\Projects\WIN10XPE\01-Components\Patch_drvinst\main.bat
45行:
:Drvinst_10.0.14393_x64
rem call :PATCH 8BD8 85C0 7508 8B06
call :FULL_PATH 8BD8_85C0_7508_8B06 33C0_8BD8_9090_8B06
goto :EOF

用wimbuilder2构建,搭配ljycslg的无线网卡驱动,还是显示“内存位置访问无效”。

slore大神,有空的时候,看下上面的代码,是不是按照addaadda所说的修改的,修改的对不对?


点评

测试了, 代码没有问题。这个帖子的内容没问题。 ========================================= 你没有看日志?没有添加pause确认自己的代码被运行?也没有提取PE的系统文件比较? “提示内存位置访问无效”  详情 回复 发表于 2019-12-2 22:40
回复

使用道具 举报

61#
发表于 2019-12-2 16:15:42 | 只看该作者
addaadda 发表于 2019-12-2 14:17
第一个是原版,第二个是我改的,第三个是你改的

谢谢分享!晚点试下。
回复

使用道具 举报

60#
发表于 2019-12-2 14:17:21 | 只看该作者
liuzhaoyzz 发表于 2019-12-2 11:47
addaadda,请问下drvinst对于14393不同的版本是否可以通用?小版本号另外,你说错了一个字节,是哪个字节? ...


第一个是原版,第二个是我改的,第三个是你改的





点评

谢谢分享!晚点试下。  详情 回复 发表于 2019-12-2 16:15
回复

使用道具 举报

59#
发表于 2019-12-2 12:06:57 | 只看该作者
cn_windows_10_enterprise_2016_ltsb_x64_dvd_9060409.iso
10.0.14393
回复

使用道具 举报

58#
发表于 2019-12-2 12:01:39 | 只看该作者
slore 发表于 2019-12-2 11:55
看代码,微软有时候改动影响到了,就不一定了,通常没影响,WimBuilder2的包里有个测试驱动,main.bat你 ...

54楼的代码,我试了似乎不行啊。
http://wuyou.net/forum.php?mod=r ... 1168&fromuid=298214
:Drvinst_10.0.14393_x64
call :PATCH 8BD8 85C0 7508 8B06
goto :EOF



回复

使用道具 举报

57#
 楼主| 发表于 2019-12-2 11:55:40 | 只看该作者
liuzhaoyzz 发表于 2019-12-2 11:47
addaadda,请问下drvinst对于14393不同的版本是否可以通用?小版本号另外,你说错了一个字节,是哪个字节? ...

看代码,微软有时候改动影响到了,就不一定了,通常没影响,WimBuilder2的包里有个测试驱动,main.bat你改下开关,没破解前不能装,破解可以装,用来验证的。

点评

54楼的代码,我试了似乎不行啊。 http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=408492&pid=3881168&fromuid=298214  详情 回复 发表于 2019-12-2 12:01
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-28 05:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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