无忧启动论坛

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

[原创] 全版本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, 下载次数: 839)
windisam.zip (1.75 MB, 下载次数: 946)

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

查看全部评分

来自 114#
发表于 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 很给力!

查看全部评分

回复

使用道具 举报

112#
发表于 3 天前 | 只看该作者
好使 没问题 正好要做个PE 这个工具很方便。
回复

使用道具 举报

111#
发表于 2025-6-25 08:16:59 | 只看该作者

草率了,你的方法没问题,用的“drvinst跳过驱动签名认证修改.exe”,这个不行
回复

使用道具 举报

110#
 楼主| 发表于 2025-6-24 22:05:21 | 只看该作者
addaadda 发表于 2025-6-23 08:46
大佬出手改个24H2的吧,新版用老方法搞不定了

24H2一样的啊。

  1. call :FULL_PATCH 8BF8_85C0_7422 33C0_8BF8_EB22
复制代码

点评

草率了,你的方法没问题,用的“drvinst跳过驱动签名认证修改.exe”,这个不行  详情 回复 发表于 2025-6-25 08:16
回复

使用道具 举报

109#
发表于 2025-6-23 08:46:01 | 只看该作者
大佬出手改个24H2的吧,新版用老方法搞不定了

点评

24H2一样的啊。  详情 回复 发表于 2025-6-24 22:05
回复

使用道具 举报

108#
发表于 2025-6-14 16:19:15 | 只看该作者
不玩了不玩了,现在都2025了,微软的数据肯定不一样了
回复

使用道具 举报

107#
 楼主| 发表于 2025-6-14 11:24:43 | 只看该作者

8B F0 85 C0 74 23
改成
33 C0 8B F0 74 23

试试。
回复

使用道具 举报

106#
发表于 2025-6-14 10:39:24 | 只看该作者
学习学习
回复

使用道具 举报

105#
发表于 2025-6-14 10:34:06 | 只看该作者
这样子搜索

点评

8B F0 85 C0 74 23 改成 33 C0 8B F0 74 23 试试。  详情 回复 发表于 2025-6-14 11:24
回复

使用道具 举报

104#
发表于 2025-6-14 00:11:22 | 只看该作者
严格按照步骤操作,找不到__imp_pSetupValidateDriverPackage。PE版本是19045



点评

函数名不一定完全一样,试试 Validate  发表于 2025-6-14 02:41
回复

使用道具 举报

103#
发表于 2025-6-13 18:13:37 | 只看该作者
1分钟半破解
回复

使用道具 举报

102#
发表于 2025-6-13 18:10:38 | 只看该作者
这个好
回复

使用道具 举报

101#
发表于 2025-6-13 18:07:05 | 只看该作者
真需要这个
回复

使用道具 举报

100#
发表于 2025-6-13 18:05:25 | 只看该作者
这个好
回复

使用道具 举报

99#
发表于 2025-6-13 18:02:08 | 只看该作者
好软件
回复

使用道具 举报

98#
发表于 2025-6-13 18:01:03 | 只看该作者
正在找这个呢
回复

使用道具 举报

97#
发表于 2025-6-13 17:59:27 | 只看该作者
感谢分享
回复

使用道具 举报

96#
发表于 2025-6-13 17:55:49 | 只看该作者
不错 收下了
回复

使用道具 举报

95#
发表于 2025-6-13 17:54:18 | 只看该作者
好东西
回复

使用道具 举报

94#
发表于 2025-6-13 17:52:53 | 只看该作者
跳过驱动签名验证好
回复

使用道具 举报

93#
发表于 2025-6-13 17:51:02 | 只看该作者
全版本drvinst.exe文件5分钟跳过驱动签名验证
回复

使用道具 举报

92#
发表于 2025-6-13 14:32:09 | 只看该作者
下载下来,研究下
回复

使用道具 举报

91#
发表于 2025-6-12 09:55:28 | 只看该作者
absman1972 发表于 2025-6-12 08:38
下载两个档案后
把  windisam.z01.zip 改为  windisam.z01 (不是 z01.zip)
然后解压  windisam.zip,档 ...

谢谢
回复

使用道具 举报

90#
发表于 2025-6-12 08:38:35 | 只看该作者

下载两个档案后
把  windisam.z01.zip 改为  windisam.z01 (不是 z01.zip)
然后解压  windisam.zip,档案没有问题

点评

谢谢  详情 回复 发表于 2025-6-12 09:55
回复

使用道具 举报

89#
发表于 2025-6-11 23:32:08 | 只看该作者
令狐大虾 发表于 2025-6-11 23:03
下载的压缩包是坏的我晕

改名也是坏的啊

回复

使用道具 举报

88#
发表于 2025-6-11 23:03:06 | 只看该作者
本帖最后由 令狐大虾 于 2025-6-11 23:07 编辑

下载的压缩包是坏的我晕

点评

改名也是坏的啊 [attachimg]560196[/attachimg]  详情 回复 发表于 2025-6-11 23:32
z01.zip解压后改名z01  发表于 2025-6-11 23:28
回复

使用道具 举报

87#
发表于 2025-1-23 11:01:52 | 只看该作者
感谢分享,学到了反编译修改的办法
回复

使用道具 举报

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 的好帖
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-29 16:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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