All Projects → ViGEm → Hidguardian

ViGEm / Hidguardian

Licence: mit
Windows kernel-mode driver for controlling access to various input devices.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Hidguardian

Vigembus
Windows kernel-mode driver emulating well-known USB game controllers.
Stars: ✭ 721 (+422.46%)
Mutual labels:  usb, hid, driver
Device.net
A C# cross platform connected device framework
Stars: ✭ 347 (+151.45%)
Mutual labels:  usb, hid, device
Hidviz
A tool for in-depth analysis of USB HID devices communication
Stars: ✭ 505 (+265.94%)
Mutual labels:  usb, hid
Unswitch
🕹 A tiny event handler for Switch controllers!
Stars: ✭ 574 (+315.94%)
Mutual labels:  gamepad, input
Xpadneo
Advanced Linux Driver for Xbox One Wireless Controller (shipped with Xbox One S)
Stars: ✭ 797 (+477.54%)
Mutual labels:  gamepad, hid
Headsetcontrol
Sidetone and Battery status for Logitech G930, G533, G633, G933 SteelSeries Arctis 7/PRO 2019 and Corsair VOID (Pro) in Linux and MacOSX
Stars: ✭ 392 (+184.06%)
Mutual labels:  usb, hid
Gimx
The GIMX software.
Stars: ✭ 421 (+205.07%)
Mutual labels:  usb, input
Gainput
Cross-platform C++ input library supporting gamepads, keyboard, mouse, touch
Stars: ✭ 636 (+360.87%)
Mutual labels:  gamepad, input
Teenyusb
Lightweight USB device and host stack for STM32 and other MCUs.
Stars: ✭ 287 (+107.97%)
Mutual labels:  usb, hid
Inputsystem
An efficient and versatile input system for Unity.
Stars: ✭ 1,013 (+634.06%)
Mutual labels:  gamepad, input
Stream Deck Api
API to interact with the Elgato Stream Deck controller
Stars: ✭ 36 (-73.91%)
Mutual labels:  usb, hid
Node Hid
Access USB & Bluetooth HID devices through Node.js
Stars: ✭ 1,064 (+671.01%)
Mutual labels:  usb, hid
Mac Precision Touchpad
Windows Precision Touchpad Driver Implementation for Apple MacBook / Magic Trackpad
Stars: ✭ 5,107 (+3600.72%)
Mutual labels:  hid, driver
Node Elgato Stream Deck
A Node.js library for interfacing with the Elgato Stream Deck.
Stars: ✭ 359 (+160.14%)
Mutual labels:  usb, hid
Hidapi
A Simple library for communicating with USB and Bluetooth HID devices on Linux, Mac and Windows.
Stars: ✭ 465 (+236.96%)
Mutual labels:  usb, hid
Dualsense Windows
Windows API for the PS5 DualSense controller
Stars: ✭ 111 (-19.57%)
Mutual labels:  gamepad, usb
rogdrv
ASUS ROG userspace mouse driver for Linux
Stars: ✭ 41 (-70.29%)
Mutual labels:  hid, driver
Vjoy
Virtual Joystick
Stars: ✭ 284 (+105.8%)
Mutual labels:  gamepad, driver
Hidpytoy
A GUI app for playing with HID devices, written in Python
Stars: ✭ 25 (-81.88%)
Mutual labels:  usb, hid
Gilrs
Game Input Library for Rust - Mirror of https://gitlab.com/gilrs-project/gilrs
Stars: ✭ 81 (-41.3%)
Mutual labels:  gamepad, input

Devil

HidGuardian

Blocks various input devices from being accessed by user-mode applications.


This was a research project and an attempt of turning the proof of concept project HideDS4 into a Windows kernel-mode filter driver that allows system-wide hiding of joysticks and gamepads, addressing doubled-input issues in games running with remapping utilities. It has been discontinued in favour of better solutions. The code will stay up for anyone to use as either an inspiration or a negative example 😜 Do bear in mind, that the code may contain unaddressed issues! Compile and use at your own risk! No support or binaries provided!


The Problem

Games and other user-mode applications enumerate Joysticks, Gamepads and similar devices through various well-known APIs (DirectInput, XInput, Raw Input) and continuously read their reported input states. The primary collection of devices available through DirectInput are HID-Class based devices. When emulating virtual devices with ViGEm the system (and subsequently the application) may not be able to distinguish between e.g. a "real" physical HID Gamepad which acts as a "feeder" and the virtual ViGEm device, therefore suffer from side effects like doubled input. Since coming up with a solution for each application available would become quite tedious a more generalized approach was necessary to reliably solve these issues.

The Semi-Solution

A common way for intercepting the Game's communication with the input devices would be hooking the mentioned input APIs within the target process. While a stable and user-friendly implementation for the end-user might be achievable for some processes, targeting the wide variety of Games available on the market is a difficult task. Hooking APIs involves manipulating the target processes memory which also might falsely trigger Anti-Cheat systems and ban innocent users.

The Real Solution

Meet HidGuardian: a Windows kernel-mode driver sitting on top of every input device attached to the system. With its companion user-mode component HidCerberus it morphs into a powerful device firewall toolkit allowing for fine-grained access restrictions to input devices.

Supported Systems

The driver is built for Windows 7/8/8.1/10 (x86 and amd64).

How to build

Prerequisites

You can either build directly within Visual Studio or in PowerShell by running the build script:

.\build.ps1

Do bear in mind that you'll need to sign the driver to use it without test mode.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].