Windows kernel-mode driver for controlling access to various input devices.
Clone or download

README.md

Devil

HidGuardian

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

Build status Discord Website PayPal Donate Support on Patreon GitHub followers Twitter Follow

Disclaimer

ATTENTION: this is in no way a finished product, don't use in production!

Please consider the master branch unstable until the disclaimer disappears!

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 HidVigil it morphs into a powerful device firewall toolkit allowing for fine-grained access restrictions to input devices.

Demo

Outdated, replace with demo video.