Skip to content

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

License

Notifications You must be signed in to change notification settings

5l1v3r1/HidGuardian

 
 

Repository files navigation

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

🔥 This project is currently unmaintained due to resource scarcity, no support or new features are to be expected! 🔥

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.

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.

Contribute

Bugs & Features

Found a bug and want it fixed? Open a detailed issue on the GitHub issue tracker!

Have an idea for a new feature? Let's have a chat about your request on Discord or the community forums.

Questions & Support

Please respect that the GitHub issue tracker isn't a helpdesk. We offer a Discord server and forums, where you're welcome to check out and engage in discussions!

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 91.9%
  • C# 3.1%
  • PowerShell 2.6%
  • Shell 2.4%