无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
12
返回列表 发新帖
楼主: ctx
打印 上一主题 下一主题

[讨论] 为Windows 7 x64提供WdiWiFi支持

[复制链接]
31#
发表于 2025-11-9 09:36:57 | 只看该作者
回复

使用道具 举报

32#
发表于 7 天前 | 只看该作者
楼主在Win-Raid论坛上还发布了10代酷睿Q0步进的UHD630驱动与I219(>7)网卡驱动,解决了10代酷睿平台的遗憾。

点评

ctx
UHD630仅为测试版,很不完善,目前使用的设备未发生蓝屏,不建议在重要设备上使用。I219仅在一个I219-LM (11)上使用,运行尚可,数月下来未发生蓝屏。  详情 回复 发表于 7 天前
回复

使用道具 举报

33#
 楼主| 发表于 7 天前 | 只看该作者
gskj 发表于 2025-11-15 11:38
楼主在Win-Raid论坛上还发布了10代酷睿Q0步进的UHD630驱动与I219(>7)网卡驱动,解决了10代酷睿平台的遗憾。

UHD630仅为测试版,很不完善,目前使用的设备未发生蓝屏,不建议在重要设备上使用。I219仅在一个I219-LM (11)上使用,运行尚可,数月下来未发生蓝屏。
回复

使用道具 举报

34#
 楼主| 发表于 7 天前 | 只看该作者
接1楼近期修改,现提供一个简单的例子,介绍如何移植基于WdiWiFi的驱动,欢迎在具备相应基础的前提下讨论。

  XXXXXXX无线网卡有Win7 /Win10驱动,Win10驱动是基于WdiWiFi的。
  一、工具准备
  反编译工具:IDA Pro
  编辑工具:WinHex
  依赖分析工具:Dependency Walker(随Visual Studio安装)
  PE工具:PE.Tools
  调试工具:WinDbg(随VisualStudio安装)
  事件日志工具:tracelog(随VisualStudio安装)
  签名工具
  二、环境准备
  1. 配置环境变量
  变量名称:_NT_SYMBOL_PATH
  值:cache*E:\SYM;SRV*ht[无法发送链接]tp://msdl.microsoft.com/download/symbols
  cache后面的路径是符号文件存储本地的路径,已下载的符号文件,IDA Pro / WinDbg / x64dbg可以自动读取。
  2. 准备证书(如果没有证书,则创建测试签名证书)
  3. 动态调试环境(非必需)
  (1)硬件准备
  有COM口主板的主机2台,一台是调试机(debugger),另一台是被控机(debuggee)。
  准备串口线,debuggee必须为COM接口,debugger可以是COM接口或USB模拟的COM接口。
  (2)debuggee启动选项准备
  bcdedit
  显示当前启动项。
  bcdedit /copy {current} /d "Windows 7DEBUG"
  复制启动项。
  bcdedit /set {xxx} debugtype serial
  bcdedit /set {xxx} debugport 1
  bcdedit /set {xxx} baudrate 115200
  bcdedit /set {xxx} debug yes
  启用内核调试。
  4.debuggee事件日志分析(非必需)
  若动态调试不可行(例如debuggee是笔记本),还可以通过收集事件日志分析问题。
  (随后介绍)
  三、修改与分析
  1. 取得Win10驱动程序包
  版本号2023.56.0502.2017。
  2. 分析Win10驱动程序包
  xxxxxxxxxx.inf 安装信息
  xxxxxxx.sys 内核驱动(IHVdriver)
  xxxxxxxxxx.cat 安全目录
  Xxxxxxx.dll 用户模式WLAN扩展模块(WLANEXT.EXE加载)
  xxxxxxx.txt 未知
  3. inf文件处理
  引用
  [Manufacturer]
  %Xxxxxxx% = Xxxxxxx,NTamd64.10.0
  [ControlFlags]
  ExcludeFromSelect = *
[Xxxxxxx.NTamd64.10.0]
  引用结束
  因此,上述inf只能在Win10下安装。将'NTamd64.10.0'改为'NTamd64.6.1'或'NTamd64'。
  4. IHV driver处理
  (1)导入表(IMPORTS)分析
  通过Dependency Walker可以看到,IHV driver需要的ExGetFirmwareEnvironmentVariable、KeInitializeSpinLock函数在Win7 ntoskrnl.exe中未导出,NdisMDeregisterWdiMiniportDriver、NdisMRegisterWdiMiniportDriver函数在Win7原版ndis.sys中未导出,而“Wdi”导入函数就是IHV driver基于WdiWiFi开发的最主要特征。
  (2)security_cookie处理
  使用IDA载入xxxxxxx.sys。
  真正的DriverEntry位于62BE4处,__security_init_cookie在62BF4处被调用。
  __security_init_cookie函数检查__security_cookie数值,不能为0,也不能为初始值2B992DDFA232h,否则会调用int 29h失败。
  因此,需要在66A019处将jz指令改为nop。定位到66A019处,使用Edit- Patch program - Change byte…,输入90 90,确定。
  查看Edit - Patch program - Patched bytes,可以发现刚才输入的patch已被记录。
  (3)检查KMDF、NDIS版本要求
  KMDF
  在62C7F处,WdfVersionBind被调用,r8参数指向KMDF需求信息。
  在394664处,表明所需的KMDF版本号为1.13。对于Win7而言,只需安装KB2685811即可满足,无需移植Win10的KMDF。
  NDIS
  在3E2A4处,NdisGetVersion被调用,此处可以看到,如果系统中安装的ndis.sys报告的版本号 < 6.50,此函数会返回失败;版本号检查通过后,IHV driver将版本号填入NdisMRegisterWdiMiniportDriver结构体的版本需求成员中。因此,需要将3E2A9处的jb指令改为nop。
  (4)缺失函数处理
  对于KeInitializeSpinLock,在输入表中将函数名称改为RtlRunOnceInitialize,稍后使用WinHex修改。
  对于ExGetFirmwareEnvironmentVariable,只有11F3BF一处调用,将call指令改为向eax赋值C0000001(调用失败)即可。
  对于NdisMDeregisterWdiMiniportDriver、NdisMRegisterWdiMiniportDriver,使用修改后的ndis.sys即可,此处无需处理。
  (5)应用patch
  在IDA中,使用Edit - Patchprogram - Apply patches to input file…,应用patch。
  (6)修改导入函数名称
  在WinHex中,把'ExGetFirmwareEnvironmentVariable'字符串修改为'__chkstk\0',将'KeInitializeSpinLock'字符串修改为'RtlRunOnceInitialize'。
  (7)重新签名
  四、运行测试
  除了WLAN连接外,事件查看器会指示用户模式WLAN扩展模块加载情况。
  本例对应的驱动包:
  ht tps://wwdk.lanzouu.com/ikKKD3b6xg0f
  密码: 2kpp
回复

使用道具 举报

35#
发表于 6 天前 | 只看该作者
感谢大神!膜拜中!!
回复

使用道具 举报

36#
发表于 4 天前 | 只看该作者
感谢分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-11-22 15:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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