XInput reverse-engineering tools and documentation
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.
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
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 😉
Note: AppVeyor artifacts expire after 1 month, so the links might not work if no new build has happened ever since.