Created
February 24, 2016 15:57
-
-
Save martinamps/c710d113054f385fc5ef to your computer and use it in GitHub Desktop.
dinput hook
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Tlhelp32.h> | |
#include "DInput.h" | |
DWORD DInputMod; | |
DWORD DINPUT_K_1; | |
DWORD DINPUT_K_2; | |
DWORD DINPUT_K_3; | |
DWORD DINPUT_K_4; | |
DWORD DINPUT_K_5; | |
DWORD DINPUT_K_6; | |
DWORD DINPUT_K_7; | |
DWORD DINPUT_K_8; | |
DWORD DINPUT_K_TAB; | |
DWORD DINPUT_K_Q; | |
DWORD DINPUT_K_W; | |
DWORD DINPUT_K_E; | |
DWORD DINPUT_K_R; | |
DWORD DINPUT_K_T; | |
DWORD DINPUT_K_Y; | |
DWORD DINPUT_K_U; | |
DWORD DINPUT_K_I; | |
DWORD DINPUT_K_O; | |
DWORD DINPUT_K_P; | |
DWORD DINPUT_K_A; | |
DWORD DINPUT_K_S; | |
DWORD DINPUT_K_D; | |
DWORD DINPUT_K_F; | |
DWORD DINPUT_K_G; | |
DWORD DINPUT_K_H; | |
DWORD DINPUT_K_J; | |
DWORD DINPUT_K_K; | |
DWORD DINPUT_K_L; | |
DWORD DINPUT_K_Z; | |
DWORD DINPUT_K_X; | |
DWORD DINPUT_K_C; | |
DWORD DINPUT_K_V; | |
DWORD DINPUT_K_B; | |
DWORD DINPUT_K_N; | |
DWORD DINPUT_K_M; | |
DWORD DINPUT_K_F1; | |
DWORD DINPUT_K_F2; | |
DWORD DINPUT_K_F3; | |
DWORD DINPUT_K_F4; | |
DWORD DINPUT_K_F5; | |
DWORD DINPUT_K_F6; | |
DWORD DINPUT_K_F7; | |
DWORD DINPUT_K_F8; | |
void HookDInput(){ | |
DWORD DIKeyPtr; | |
DInputMod=FindModule("dinput8.dll"); | |
if (DInputMod==0){ | |
MessageBox(0,"DInput8 not loaded!","",0); | |
TerminateProcess(GetCurrentProcess(), 0); | |
} | |
unsigned char logdata[512]; | |
DIKeyPtr=FindDInputKeyPtr(); | |
wsprintf( (LPSTR)logdata, "Pointer: %02X ", DIKeyPtr); | |
if (DIKeyPtr!=0){ | |
DINPUT_K_1 = DIKeyPtr + 2; | |
DINPUT_K_2 = DIKeyPtr + 3; | |
DINPUT_K_3 = DIKeyPtr + 4; | |
DINPUT_K_4 = DIKeyPtr + 5; | |
DINPUT_K_5 = DIKeyPtr + 6; | |
DINPUT_K_6 = DIKeyPtr + 7; | |
DINPUT_K_7 = DIKeyPtr + 8; | |
DINPUT_K_8 = DIKeyPtr + 9; | |
DINPUT_K_TAB = DIKeyPtr + 15; | |
DINPUT_K_Q = DIKeyPtr + 16; | |
DINPUT_K_W = DIKeyPtr + 17; | |
DINPUT_K_E = DIKeyPtr + 18; | |
DINPUT_K_R = DIKeyPtr + 19; | |
DINPUT_K_T = DIKeyPtr + 20; | |
DINPUT_K_Y = DIKeyPtr + 21; | |
DINPUT_K_U = DIKeyPtr + 22; | |
DINPUT_K_I = DIKeyPtr + 23; | |
DINPUT_K_O = DIKeyPtr + 24; | |
DINPUT_K_P = DIKeyPtr + 25; | |
DINPUT_K_A = DIKeyPtr + 30; | |
DINPUT_K_S = DIKeyPtr + 31; | |
DINPUT_K_D = DIKeyPtr + 32; | |
DINPUT_K_F = DIKeyPtr + 33; | |
DINPUT_K_G = DIKeyPtr + 34; | |
DINPUT_K_H = DIKeyPtr + 35; | |
DINPUT_K_J = DIKeyPtr + 36; | |
DINPUT_K_K = DIKeyPtr + 37; | |
DINPUT_K_L = DIKeyPtr + 38; | |
DINPUT_K_Z = DIKeyPtr + 44; | |
DINPUT_K_X = DIKeyPtr + 45; | |
DINPUT_K_C = DIKeyPtr + 46; | |
DINPUT_K_V = DIKeyPtr + 47; | |
DINPUT_K_B = DIKeyPtr + 48; | |
DINPUT_K_N = DIKeyPtr + 49; | |
DINPUT_K_M = DIKeyPtr + 50; | |
DINPUT_K_F1 = DIKeyPtr + 59; | |
DINPUT_K_F2 = DIKeyPtr + 60; | |
DINPUT_K_F3 = DIKeyPtr + 61; | |
DINPUT_K_F4 = DIKeyPtr + 62; | |
DINPUT_K_F5 = DIKeyPtr + 63; | |
DINPUT_K_F6 = DIKeyPtr + 64; | |
DINPUT_K_F7 = DIKeyPtr + 65; | |
DINPUT_K_F8 = DIKeyPtr + 66; | |
} | |
} | |
DWORD FindDInputKeyPtr(){ | |
DWORD i; | |
DWORD retd; | |
retd=0; | |
for (i=(DInputMod);i<=(DInputMod+0x3a0000);i++){ | |
if (MemReadByte( i )==0x57 && | |
MemReadByte(i+1)==0x6a && | |
MemReadByte(i+2)==0x40 && | |
MemReadByte(i+3)==0x33 && | |
MemReadByte(i+4)==0xc0 && | |
MemReadByte(i+5)==0x59 && | |
MemReadByte(i+6)==0xbf){ | |
retd=MemReadDWord(i+7); | |
break; | |
} | |
} | |
return (DWORD)retd; | |
} | |
DWORD TranslateKeyInt(INT pKey){ | |
switch (pKey) | |
{ | |
case 1: return DINPUT_K_1; break; | |
case 2: return DINPUT_K_2; break; | |
case 3: return DINPUT_K_3; break; | |
case 4: return DINPUT_K_4; break; | |
case 5: return DINPUT_K_5; break; | |
case 6: return DINPUT_K_6; break; | |
case 7: return DINPUT_K_7; break; | |
case 8: return DINPUT_K_8; break; | |
default:return 0; | |
} | |
} | |
DWORD TranslateKeyFInt(INT pKey){ | |
switch (pKey) | |
{ | |
case 1: return DINPUT_K_F1; break; | |
case 2: return DINPUT_K_F2; break; | |
case 3: return DINPUT_K_F3; break; | |
case 4: return DINPUT_K_F4; break; | |
case 5: return DINPUT_K_F5; break; | |
case 6: return DINPUT_K_F6; break; | |
case 7: return DINPUT_K_F7; break; | |
case 8: return DINPUT_K_F8; break; | |
default:return 0; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment