creio que isso seja um hook
#include "stdafx.h"
#include "main.h"
typedef HRESULT (WINAPI* xSilent) (LPDIRECT3DDEVICE9 SilentA, CONST RECT* SilentB, CONST RECT* SilentC, HWND SilentD, CONST RGNDATA* SilentE);
xSilent ySilent;
HRESULT zSilent (LPDIRECT3DDEVICE9 SilentA, CONST RECT *SilentB, CONST RECT *SilentC, HWND SilentD, CONST RGNDATA *SilentE)
{
ha_ck_s1 ();
return ySilent(SilentA, SilentB, SilentC, SilentD, SilentE);
}
VOID *DetourJMPSilent (BYTE *src, CONST BYTE *dst, CONST INT len)
{
BYTE *jmp = (BYTE*)malloc (len + 5);
DWORD dwBack;
VirtualProtect (src, len, PAGE_READWRITE, &dwBack);
memcpy (jmp, src, len);
jmp += len;
jmp[0] = 0xE9;
*(DWORD *) (jmp + 1) = (DWORD) (src + len - jmp) - 5;
src[0] = 0xE9;
*(DWORD *) (src + 1) = (DWORD) (dst - src) - 5;
for(INT iSilent = 5; iSilent < len; iSilent++) src[iSilent] = 0x90;
VirtualProtect (src, len, dwBack, &dwBack);
return (jmp - len);
}
BOOL CheckModules (VOID)
{
if (GetModuleHandle ("ClientFX.fxd") != NULL
&& GetModuleHandle ("CShell.dll") != NULL)
return true;
return false;
}
VOID huuksilent (VOID)
{
while (!CheckModules ())
Sleep(100);
DWORD *dwDeviceGame = ***(DWORD ****)DeviceGame;
ySilent = (xSilent) DetourJMPSilent ((BYTE *)dwDeviceGame[17], (BYTE *)zSilent, 5);
}
eu fiz varias alterações nesse nem testei ainda mas não sei se funfa então se quiser testa '-'