• Stars
    star
    733
  • Rank 59,659 (Top 2 %)
  • Language
    C++
  • License
    MIT License
  • Created about 3 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Gaming Input Peripherals Device Firewall for Windows.

HidHide

Build status GitHub All Releases Chocolatey package Lines of code GitHub issues by-label GitHub issues by-label

Introduction

Microsoft Windows offers support for a wide range of human interface devices, like joysticks and game pads. Associating the buttons and axes of these devices with application specific behavior, such as Fire, Roll, or Pitch is however left to the individual application developers to realize.

While there are good examples of applications allowing a user to customize the controls to their liking, other applications are less sophisticated or lack just that feature a user is looking for. This is where utilities like vJoy and Joystick Gremlin come to the rescue. These utilities aren't limited by a vendor lock-in and attempt to move certain features back into the domain of the operating system. Once properly arranged, a feature becomes universally available for a wide range of applications.

A technique used by these utilities is to use a feeder application that listens to the physical devices on a system, and in turn controls one or more virtual devices where the game or application is listening to. Mapping physical devices to a virtual device allows for e.g. dual joystick support in games that only support a single joystick, or enable multiple devices to bind to the one and same function in a game that only supports single controller bindings.

While this approach offers a lot of advantages, it also comes with a side effect. Most applications record the user interactions while binding a function with a control or button press. When a virtual device is used, the application receives input from two devices simultaneously. It will be notified by both the physical device triggered, and the virtual device that acts in turn! Some feeders have an option to spam the application repeatedly; however, that approach is cumbersome and error prone.

With HidHide it is possible to deny a specific application access to one or more human interface devices, effectively hiding a device from the application. When a HOTAS is preferred for a flight-simulator one can hide the game pads. When a steering wheel is preferred for a racing game, one can hide the joysticks, and so on. When, as mentioned above, a feeder utility is used, one can use HidHide to hide the physical device from the application, hence avoiding multiple notifications while binding game functions and device controls.

Package content

HidHide is a kernel-mode filter driver available for Windows 10 or higher (KMDF 1.13+). It comes with a configuration utility via which the driver is configured and controlled. The filter driver starts automatically and runs unattended with system privileges. A system reboot may be triggered after driver installation or removal. The configuration utility runs in the least privileged mode and doesn't require elevated rights.

User guide

The configuration utility allows you to:

  • Enable or disable the service
  • Specify which applications may look through the cloak
  • Specify the human interface devices that should be hidden from ordinary applications

The main dialog of the configuration utility offers two main tabs. Screen capture of applications tab

The Applications tab shows all white-listed applications that are allowed access to the hidden devices. Typically listed here are vendor-specific utilities for configuring the human interface devices, and feeder utilities. Entries can be added to the list by pressing +. Select one or more entries with the shift and/or control key and press - to remove entries from the list. Notice that the client replaces a logical drive letter by a full path. This is intentionally and offers some resilience for changes in logical drive mapping.

Screen capture of devices tab

Per default, the Devices tab lists all Gaming devices currently connected to the system. The list refreshes automatically when a new device is detected. The dialog offers two check boxes for filtering.

Via Filter-out disconnected one can extend the list with devices that were connected earlier to the system but are currently not present. With Gaming devices only one can limit the list to game pads and joysticks only. This feature relies on proper information from the device vendors. Some vendors however use vendor-specific codes. Be sure to switch off this filter should you notice that your gaming device seems absent in the list. The filters are ignored for devices that are selected for hiding, so that one has a complete overview on the hidden devices.

Last but not least, the Enable device hiding check box provides control over the HidHide service. When enabled it blocks access to the black-listed devices unless the application is explicitly white-listed. When disabled, all applications are granted access to all devices.

An entry in the list can be expanded to reveal the composite devices associated with a device and offers fine-grained control over a device. HidHide uses the selection also for a secondary purpose. Some legacy applications ignore the human interface device layer offered by the operating system and instead interact with the underlying device driver. Access to the underlying driver will be blocked when a device only has composite HID devices, and all are selected.

The expanded list may mark entries as absent or denied. absent entries appear when the device characteristics are altered. These are residual entries in the caches of the operating system, and can be cleaned-up using utilities like Device Cleanup Tool. denied entries appear for hidden devices when the configuration utility itself is not whilelisted.

Package integration

Installation packages and third-party applications can rely on the following two registry keys. "HKCR\Installer\Dependencies\NSS.Drivers.HidHide.x64\Version" signals the availability of HidHide and its version. "HKCR\SOFTWARE\Nefarius Software Solutions e.U.\Nefarius Software Solutions e.U. HidHide\Path" tells its location.

Third-party software deployment may benefit from the HidHide Command Line Interface (CLI) while deploying software. Please be conservative while altering a clients' configuration and only extend the configuration with new features offered. Don't assume exclusive ownership of the configuration settings as a recovery typically requires manual actions by the user.

Bugs & Features

Found a bug and want it fixed? Feel free to 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.

HidHide provides both logging and tracing. Logging can be found the Event Viewer under Windows Logs and System. Tracing can be found under Applications and Services Logs and Nefarius after enabling Show Analytic and Debug Logs. Extended tracing is available but switched off per default for performance reasons. Tracing is controlled using the wevtutil utility which is an integral part of the operating system. To enable extended tracing, open a command shell, and enter the following;

wevtutil set-log Nefarius-Drivers-HidHide/Diagnostic /e:false
wevtutil set-log Nefarius-Drivers-HidHide/Diagnostic /k:5
wevtutil set-log Nefarius-Drivers-HidHide/Diagnostic /e:true

Tracing adjustments remain in affect after a reboot. Restore tracing to its default level using the above sequence with /k:1 instead. Tracing to the debug console is enabled with /k:3 and /k:7 respectively.

Questions & Support

Please respect that the GitHub issue tracker isn't a help desk. Look at the community support resources.

Donations

Creating a utility like this requires time and dedication. Should you like to express your gratitude, consider a pledge for a game I'm rather fond of; the biggest crowd funded game currently in development Star Citizen. Be sure to apply a referral code at account creation as it gives a bit more in-game currency and can't be applied later on. My referral code is STAR-K6S5-KPY7 should you seek one. Have fun and see you in the verse!

More Repositories

1

ScpToolkit

Windows Driver and XInput Wrapper for Sony DualShock 3/4 Controllers
C#
3,025
star
2

ViGEmBus

Windows kernel-mode driver emulating well-known USB game controllers.
C++
2,582
star
3

DsHidMini

Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers
C
1,028
star
4

BthPS3

Windows kernel-mode Bluetooth Profile & Filter Drivers for PS3 peripherals
HTML
548
star
5

Injector

Command line utility to inject and eject DLLs
C++
375
star
6

Indicium-Supra

DirectX API-hooking framework
C++
300
star
7

FireShock

Windows USB Driver for Sony DualShock 3 Controllers
C
210
star
8

HidGuardian

Windows kernel-mode driver for controlling access to various input devices.
C
171
star
9

Legacinator

The one and only Legacinator
C#
155
star
10

Shibari

Gaming input peripherals prototyping platform for Windows
C#
139
star
11

ViGEmClient

ViGEm Client SDK for feeder development.
C
125
star
12

ViGEm.NET

.NET bindings for the ViGEmClient library.
C#
99
star
13

VDX

XInput/x360ce to ViGEm sample application
C++
84
star
14

ViGEm.github.io

Sources of ViGEm Website.
HTML
75
star
15

ScpVBus

Scarlett.Crush Productions Virtual Bus Driver
C
40
star
16

AirBender

Windows Bluetooth Host Driver for Sony DualShock Controllers
C
39
star
17

nefcon

Windows device driver installation and management tool.
C++
34
star
18

sm-ext-socket

This extension provides networking functionality for SourceMod scripts.
C++
33
star
19

XInputHooker

XInput reverse-engineering tools and documentation
C++
30
star
20

socksifier

One DLL to redirect them all to a SOCKS5 server.
C
26
star
21

Identinator

Rewrites hardware identification properties of USB devices on Microsoft Windows
C#
25
star
22

vicius

Nefarius' nŏvīcĭus universal software updater agent for Windows.
C++
25
star
23

Nefarius.Utilities.DeviceManagement

Managed wrappers around SetupAPI, Cfgmgr32, NewDev and DrvStore native APIs on Windows.
C#
22
star
24

WpfRichText.Ex

Simple WYSIWYG HTML editor control for WPF
C#
19
star
25

docs.nefarius.at

Sources of Nefarius' Knowledge-Base Website
HTML
17
star
26

Nefarius.DSharpPlus.Extensions.Hosting

Glues .NET Core Hosting and DSharpPlus together for use with DI.
C#
15
star
27

MACAddressChanger

Easily change your network adapters MAC address with this little tool.
C++
13
star
28

CntlmUI

Graphical User Interface and Startup-Agent for the Cntlm Authorization Proxy
C#
12
star
29

WorkshopMapLoader

Advanced Workshop Map Loader and Game Type Adjuster
SourcePawn
9
star
30

Nefarius.Drivers.WinUSB

WinUSB .NET wrapper library
C#
9
star
31

rtmp-server

Self-hosted RTMP streaming server with web player
HTML
8
star
32

Nefarius.Utilities.WindowsVersion

Utility classes to get detailed Windows version and some extras like UEFI and BCD properties.
C#
8
star
33

udpflood

Simple network stress test tool which penetrates a target host with random UDP packages.
C
8
star
34

DLLSpy

DLL Hijacking Detection Tool
C++
8
star
35

HideDS4

A small helper-library which prevents a process from accessing a connected DualShock 4 controller
C++
7
star
36

Nefarius.Utilities.Bluetooth

Utility library for unconventional Bluetooth tasks on Windows.
C#
7
star
37

Nefarius.Drivers.HidHide

Managed API for configuring HidHide.
C#
7
star
38

WireShock

Windows Bluetooth Host Driver for Sony DualShock Controllers
C
6
star
39

AnnoyingFlooder

Wanna make a little prank to your IT-Friends? Use this tool and fill his hard drive with hidden garbage files!
C#
6
star
40

libsbc

Bluetooth low-complexity, subband codec (SBC) library
C
6
star
41

WinDbgSymbolsCachingProxy

WinDbg Symbols Caching Proxy.
C#
6
star
42

WinApiSniffer

Windows API sniffer and dumper utility for reverse engineering.
C
6
star
43

Nefarius.Utilities.HIDReportKit

Managed types and utility classes for HID report parsing and transforming.
C#
6
star
44

WDF-Utils

Windows Device Driver Development Utilities Collection
C
5
star
45

TrueMount-2

Automounter for TrueCrypt.
C#
5
star
46

HidCerberus

Companion service to manage HidGuardian device blocking and process whitelisting.
C#
5
star
47

EPPT

A simple, self-contained Windows tool to display and toggle "Enhanced Pointer Precision" a.k.a. mouse acceleration.
C++
4
star
48

ViGEm.Setup

Resources for builing a setup to redistribute a device driver reliably.
C#
4
star
49

ViGEm.Management

Tools for distribution, installation and management of the ViGEm framework drivers.
C#
4
star
50

StreamsFinder

Microsoft´s new technology file system has a pretty unknown feature called data streams. Find hidden ones easily with this tool!
C#
4
star
51

putty-tunnel-manager

Automatically exported from code.google.com/p/putty-tunnel-manager
C#
4
star
52

SourceSec

Proof-of-concept RSA SourceMod extension
C++
3
star
53

TrueMount-3

Automounter for TrueCrypt
C#
3
star
54

XInputPlayerToDevicePath

XInput User Index to Device Instance ID PoC
C++
3
star
55

Nefarius.Utilities.GitHubUpdater

Utility classes to perform application update checks using GitHub repositories.
C#
3
star
56

CitrixConfigurator

Edit the registry-stored configuration of the Citrix Online Plug-in with this small tool.
C#
3
star
57

garbage-and-scam-sites

My personal little rule set for uBlacklist blocking useless and scam trash sites 🚯
3
star
58

AppVeyorArtifactsReceiver

Web service listening for deployment webhook calls from AppVeyor CI/CD.
C#
3
star
59

vpatch

Versioning helper command line utility
C#
3
star
60

Nefarius.Utilities.Registry

Registry Export File (.reg) Parser
C#
3
star
61

Mana

A tiny work-in-progress Kibana replacement using Blazor.
C#
3
star
62

ViGEmClient.vcpkg

Vcpkg portfile for native ViGEm Client library
CMake
2
star
63

GotifySmtpForwarder

Forwards e-mails to a Gotify application.
C#
2
star
64

AdvancedUpdaterGitHubProxy

Builds an Advanced Installer Updater Configuration File from GitHub Releases.
C#
2
star
65

LupuServ

E-Mail to SMS Gateway service for Lupusec XT1 alarm system
C#
2
star
66

Nefarius.Utilities.SessionNotification

Utility classes to get notified about session state changes on Windows.
C#
2
star
67

Libarius

Collection of utility classes for common .NET tasks
C#
2
star
68

ManagedDevcon

Managed wrapper around various SetupAPI functions.
C#
2
star
69

ds4sniffer

DLL performing API-hooking to find which process is talking to the DS4.
C++
2
star
70

POCO-Windows

NuGet build scripts for POCO C++ libraries
PowerShell
2
star
71

foxx-filestore

File Storage Foxx Microservice for ArangoDB
JavaScript
2
star
72

Nefarius.Standards.CAMT

Utility classes to help decoding "Bank-to-Customer Cash Management Swiss Payment Standards" a.k.a. CAMT XML files.
C#
2
star
73

CSGOLauncher

Small .NET GUI launcher for CS:GO Windows server
C#
2
star
74

Symphonia

Simple DLNA-compatible music player
C#
2
star
75

Nefarius.Utilities.DotNetInstaller

Utility classes to download and install modern .NET runtimes.
C#
1
star
76

docker-node-service-host

Provides a convenience Docker image to run Node services under Supervisord.
Dockerfile
1
star
77

Nefarius.Utilities.NtDll

Managed wrappers around NTDLL native APIs on Windows.
C#
1
star
78

metamodmmt

Proxy DLL for Metamod for Half-Life 1 enabling Windows high-resolution timers
C++
1
star
79

nefarius

My GitHub public profile!
1
star
80

SCD

To Secure, Contain, and Deny
C
1
star
81

SIF

Squid Image Fetcher
Python
1
star
82

Updater

Automatically updates SourceMod plugins and files
SourcePawn
1
star
83

ServerHibernateFix

A Sourcemod Plugin to work-around the workshop map server hibernate problem
SourcePawn
1
star
84

IgorBot

Advanced Discord bot to automate new Member on-boarding.
C#
1
star
85

MightyDsHidMini

Crude quick 'n' dirty benchmark tool for DsHidMini
C#
1
star
86

ScpSamples

Sample Add-Ons for the ScpServer
C#
1
star
87

ViGEm.Jaeger

Benchmark tool for the client SDK using Jaeger Tracing
C++
1
star
88

Arduino_Uno_Audio_PWM_Modulator

Arduino
1
star
89

honestus

Versioning helper command line utility
C#
1
star
90

ReactiveProtobuf

Protobuf protocol implementation for ReactiveSockets
C#
1
star
91

docker-mdwiki

Docker container for hosting and auto-updating an MDwiki instance.
HTML
1
star
92

CentralisedOutlookSignature

C#
1
star
93

NuGetCachingProxy

A very simple caching proxy for NuGet packages
C#
1
star
94

Nefarius.Utilities.AspNetCore

My opinionated collection of utilities for ASP.NET Core applications.
C#
1
star