一、 现象描述
显卡27.27.x.x驱动更新后,无盘PNP早前自动安装显卡驱动的办法不能完整安装CUDA功能(越来越多的游戏使用了CUDA功能),其现象表现为显卡驱动信息显示未签名,驱动文件显示不全,CUDA相关DLL加载不起, 分别如下几图所示:
二、 现象初探
首先判断与注册表或文件提取不全有关,通过实际安装比对,发现有些文件的路径相关值“%”目录写的不正确设备管理器找不到独立显卡,0,19,-1,设备管理器找不到独立显卡怎么办【百科全说】,https://www.bkqs.com.cn/content/r3jv1o03v.html,也有些注册表缺失。修正后仍发现CUDA功能显示灰色,后发现WIN10驱动安装会把驱动信息写入注册表(这是之前WIN7没有的现象),注册表文件在C:\目录下,文件名为。如下图:
如果存在该文件,系统启动后会将此注册表文件自动加载到注册表中,如下图:
这时自然考虑也把该注册表中的相关内容提取出来,在无盘系统启动前PNP时把其导入到镜像系统注册表中,同时也考虑了把ENUMPCI下设备的中各键值内容所指向的设备INF文件名都修改成自定义的名字(类似.inf),也把驱动INF修改为此名字并拷贝到镜像系统目录下(模拟驱动安装,确保驱动注册表和文件对应)。然而,这些都做完整后发现CUDA功能仍然不能使用,对比手动安装与无盘PNP,发现无盘上出现了上面图(一)和图(二)的现象,这时怀疑与ENUMPCI下设备的中键值缺失或不正确有关。经过对比,发现有一个属性值比较奇怪,如下:
此属性值中的那个HASH值在不同显卡(或设备)上是不一样的(根据后面的分析如果用做提取的显卡和其它显卡是有可能此值刚好一样,这样提取出的固定值就刚好能正确PNP这两块显卡)。这时一个棘手的问题出现了,如何能得到或生成这个HASH,或者说这个HASH从哪里来的?
三、 分析试验
思路断了,不知道怎么办了!幸运的是经过试验发现了一条线索,最终成为解开这个谜题的钥匙。通过使用程序导出系统信息时发现导出的文件中保存了上面所说的的那个键值,并且这个键值有一个名字。
好嘛,到此我们至少知道了该属性的名字是 Name,以前还真没听说过啊,Baidu, , 一下,没有发现此神秘属性的介绍,但是发现有一些人在询问其它问题时贴出一.dev.log供人参考分析问题,神奇的是在这个日志里也有类似 Name的日志,这时就来了精神!
通过.dev.log很容易得出结论, Name在.dll(驱动安装查询关键模块)有出现!IDA搬出搜寻,果然几个函数与此有关,分别是:
既然Node这个函数如此直接,我们就直接F5此函数来看:
由IDA很容易得出结论:前面所讲的HASH值由两部分组成,每一部分是对一个特定字符串进行HASH(DWORD值),最后把两个HASH值都按十六进制补零转换成字符串拼到一起。此时问题转换为这两个字符串分别是什么东西呢,猜是不大容易对得上的,能调试上直接看寄存器不是更香嘛!如何调试才能断到Node呢,开始尝试使用显卡的安装程序设置断点,并无反应,后来发现安装程序有多个步骤,中间会运行一个.exe的程序,用.exe监控发现只有在它的线程堆栈上发现了.dll的踪迹设备管理器找不到独立显卡,0,19,-1,设备管理器找不到独立显卡怎么办【百科全说】,https://www.bkqs.com.cn/content/r3jv1o03v.html,这时考虑可能只有真正的设备安装时才有可能调用Node。那么要使用显卡安装程序来断可能还有些麻烦,因为要抓到.exe启动的时机不是太方便。后想到可以同理直接在设备管理器里卸载网卡设备再更新驱动来调试。好! 打开设备管理器(mmc.exe),祭起, to 选中mmc.exe,在命令行中输入:
bp !Node
娜娜项目网每日更新创业和副业项目
网址:nanaxm.cn 点击前往娜娜项目网
站 长 微 信: nanadh666
下一步,在设备管理器里卸载网卡:
再更新网卡驱动:
等待 10系统搜寻网卡驱动并安装,最后果然断到Node处,我们直接在函数中第一个前断下并d poi(@rcx+8)看一下传进来的第一个参数的内容:
继续在第二个前断下并d poi(@rcx+8)看一下传进来的第二个参数的内容:
好,继续看拼起来的hash值,在后断下并d @rcx,中看到的结果如下:
是不是正好验证出前面IDA F5反编后的判断。好,我们再回到注册表来观察一下看是否能对得上:
至于%%及%.%是什么,相信熟悉INF的同学都不会陌生吧。
四、 验证
计算得到的hash值后还需要再次确认下若修改为设备对应的hash后是否设备签名及CUDA等功能正常了。顺便在这里提一下这个属性 {-97a6-4088-9453-}003在内部的名字就是:
娜娜项目网每日更新创业和副业项目
网址:nanaxm.cn 点击前往娜娜项目网
站 长 微 信: nanadh666