程序员王马头像
关注
windows 驱动实例分析系列: HidHide驱动分析-应用篇(一)封面图

windows 驱动实例分析系列: HidHide驱动分析-应用篇(一)

子文档一:HidHide驱动概述与主要使用软件分析

一、HidHide驱动简介

HidHide是一款基于Windows内核模式过滤驱动(Kernel-Mode Filter Driver)的HID设备访问控制工具,由开发者Nefarius创建并维护。它支持Windows 10及以上操作系统(KMDF 1.13+),通过在系统内核层拦截和处理HID(Human Interface Device,人机接口设备)访问请求,实现了对设备可见性的精细化控制。

HidHide的核心价值在于其实现了系统级设备可见性管控,主要功能包括:应用程序白名单机制(精确控制指定进程对隐藏设备的访问权限)、设备级隐藏策略(支持按设备ID、类型或连接状态配置隐藏规则)、实时过滤引擎(动态响应设备插拔事件)以及双界面管理系统(提供图形界面和命令行工具)。

从技术架构上看,HidHide采用分层过滤驱动架构,通过注册为HID类设备的上层过滤器(Upper Filter),在不修改原始HID类驱动的情况下拦截设备访问请求。这种设计遵循Windows WDM(Windows Driver Model)架构规范,具有良好的兼容性和稳定性。驱动包含四个关键模块:驱动入口管理(Driver.c)、设备对象生命周期控制(Device.c)、用户-内核通信接口(ControlDevice.c)和核心过滤逻辑(Logic.c),确保了驱动的可维护性和扩展性。

二、使用HidHide的主要软件

2.1 DS4Windows

DS4Windows是HidHide最著名的使用者之一。这款软件允许用户将PlayStation DualShock 4或DualSense手柄模拟为Xbox 360控制器,以便在仅支持XInput的游戏中正常使用。

DS4Windows与HidHide的集成方式非常紧密。DS4Windows通过IOCTL(I/O控制码)调用与HidHide驱动通信,管理哪些设备被隐藏以及哪些应用程序被允许看到这些设备。具体工作流程如下:

  1. 用户安装HidHide驱动后,打开HidHide Configuration Client
  2. 在Devices选项卡中勾选要隐藏的物理手柄(如“Wireless Controller”)
  3. 在Applications选项卡中添加DS4Windows.exe到白名单
  4. 启用“Enable Device Hiding”选项

配置完成后,系统控制器窗口(joy.cpl)中的物理手柄信息会消失,表明隐藏成功。此时,只有DS4Windows能够看到物理手柄并读取其输入,而游戏只能看到由DS4Windows通过ViGEmBus生成的虚拟Xbox 360手柄。

DS4Windows的官方文档明确指出:“HidHide(推荐,防双重输入)HidHide对游戏和多数程序隐藏物理手柄,只暴露虚拟Xbox手柄,从而消除双重输入与错误识别”。

2.2 Joystick Gremlin

Joystick Gremlin是一款高级输入设备映射工具,允许用户对摇杆、油门、脚舵等飞行模拟设备进行复杂的按键和轴映射。在HOSAS(双手摇杆)或HOTAS(摇杆+油门)配置中,Joystick Gremlin与HidHide的配合使用尤为常见。

Joystick Gremlin的工作原理是:监听物理设备的输入,然后通过vJoy等虚拟设备驱动将映射后的输入重新输出。然而,如果游戏同时检测到物理设备和虚拟设备,就会产生双重输入问题。HidHide的作用正是隐藏物理设备,仅让Joystick Gremlin能够访问它们。

实际配置中,用户需要:

  1. 在HidHide的Applications选项卡中添加Joystick Gremlin的路径(如\program files (x86)\H2k\Joystick Gremlin\joystick_gremlin.exe
  2. 在Devices选项卡中选择要隐藏的物理摇杆和油门设备
  3. 启用设备隐藏功能

在IL-2 Sturmovik: 1946等老游戏的社区指南中,玩家详细描述了如何使用HidHide隐藏物理摇杆和脚舵,将所有按键和轴绑定到单个vJoy设备上。

2.3 x360ce(Xbox 360 Controller Emulator)

x360ce是一款广泛使用的Xbox 360控制器模拟器,允许用户使用非标准手柄游玩XInput游戏。x360ce的HID Guardian功能与HidHide在功能上类似,但许多用户发现HidHide更为可靠。

在x360ce社区中,有用户反馈:“我一开始使用x360ce v4配合HidHide遇到了问题,但现在一切正常。我卸载了HID Guardian因为它会导致冲突和混乱,所以我回到HidHide,它就这样正常工作了”。

x360ce与HidHide的配置方式与其他软件类似:在Applications选项卡中添加x360ce.exe,在Devices选项卡中隐藏物理控制器。

2.4 ViGEmBus生态中的其他软件

ViGEmBus是一个虚拟游戏控制器驱动程序,允许用户模拟各种游戏控制器。HidHide可以与ViGEmBus结合使用,隐藏物理设备的同时暴露虚拟设备。

使用ViGEmBus和HidHide配合的典型项目包括:

  • Stadia-ViGEm:将Stadia控制器映射为虚拟Xbox控制器,通过HidHide隐藏物理Stadia控制器
  • SN30pro-Xcloud_Windows:使用ViGEmBus模拟Xbox 360控制器,用HidHide隐藏原始8BitDo设备,防止双重输入
  • n64-wireless-x360-emulator:将N64无线控制器输入重映射为虚拟Xbox 360手柄
2.5 其他软件

除了上述主要软件外,HidHide还被以下软件和工具使用:

  • reWASD:一款高级输入重映射工具,用户在使用reWASD时需注意不要与DS4Windows同时开启
  • SPAD.neXt:飞行模拟设备配置工具,使用HidHide隐藏特定摇杆设备以便于功能绑定
  • Handheld Companion:掌机设备管理工具,依赖HidHide库来隐藏物理控制器
  • XOutput:将DirectInput设备转换为XInput设备的工具
  • UCR(Universal Control Remapper):通用控制重映射工具

三、软件使用模式总结

从上述分析可以看出,使用HidHide的软件遵循统一的模式:

  1. 物理设备隐藏:通过HidHide将物理HID设备从系统设备枚举中隐藏
  2. 白名单机制:将需要访问物理设备的映射软件加入白名单
  3. 虚拟设备暴露:通过ViGEmBus等虚拟驱动创建虚拟控制器
  4. 应用隔离:普通应用程序(如游戏)只能看到虚拟控制器,看不到物理设备

这种模式的核心思想是“物理设备→映射软件→虚拟设备→目标应用”的数据流,HidHide在其中扮演了“设备防火墙”的角色,确保只有授权的映射软件能够访问物理设备。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/m0_72813396/article/details/164074912

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--