/XInputHooker

XInput reverse-engineering tools and documentation

Primary LanguageC++MIT LicenseMIT

XInputHooker

XInput reverse-engineering tools and documentation

Build status

About

This DLL project hooks common Windows APIs used internally by XInput libraries. Compatible device discovery is actually rather primitive, SetupDiEnumDeviceInterfaces is called on the XUSB device interface GUID (see XUSB.h), on success device handle is obtained via CreateFile and data exchanged using DeviceIoControl. Said APIs get hooked and the arguments of interest dumped into a log file.

Build

Follow the Vcpkg Quick Start and install the following packages:

  • .\vcpkg install spdlog:x86-windows-static spdlog:x64-windows-static detours:x86-windows-static detours:x64-windows-static jsoncpp:x86-windows-static jsoncpp:x64-windows-static

Use

Build or download the XInputHooker.dll for the right architecture (32-Bit for 32-Bit processes and likewise for 64-Bit) and place the ioctls.json file in the same directory as the DLL. Inject the XInputHooker.dll into a process/game using any variant of the XInput user API libraries. Upon successful injection a XInputHooker.log will be generated in the process root directory. All sniffed API calls will be dumped there. It will grow fast so don't run for too long 😉

Download

Latest CI builds

Note: AppVeyor artifacts expire after 1 month, so the links might not work if no new build has happened ever since.

x86

x64