Undetected and Universal D3D Hook
Hello again MPGH 

Code:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <d3d9.h>
#include <d3dx9.h>
#pragma comment( lib, "d3d9.lib" )
#pragma comment( lib, "d3dx9.lib" )
DWORD retWallHackMidFuc = NULL, ADDR_WALLHACK_HOOK = NULL;
const bool bDataCompare(const BYTE *pData, const BYTE *bMask, const char *szMask)
{
for (; *szMask; ++szMask, ++pData, ++bMask)
if (*szMask == 'x' && *pData != *bMask)
return 0;
return (*szMask) == NULL;
}
DWORD FindPattern(DWORD dwModule, DWORD dwLen, BYTE *bMask, char *szMask)
{
for (DWORD i = 0; i < dwLen; i++)
if (bDataCompare((BYTE *)(dwModule + i), bMask, szMask))
return (DWORD)(dwModule + i);
return EXIT_SUCCESS;
}
__declspec(naked) HRESULT WINAPI hkWallHackMidFunction()
{
static LPDIRECT3DDEVICE9 pDevice;
__asm
{
MOV EDX, DWORD PTR DS : [EAX]
MOV EDX, DWORD PTR DS : [EDX + 0xE4]
MOV DWORD PTR DS : [pDevice], EAX
PUSHAD
}
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);//WallHack
pDevice->SetRenderState(D3DRS_LIGHTING, D3DZB_FALSE);//FullBright
__asm
{
POPAD
JMP retWallHackMidFuc
}
}
void *DetourCreate(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 i = 5; i < len; i++)
src[i] = 0x90;
VirtualProtect(src, len, dwBack, &dwBack);
return(jmp - len);
}
DWORD WINAPI StartAddress()
{
ADDR_WALLHACK_HOOK = FindPattern(0x400000, 0x1154000,
(PBYTE) "\x8B\x10\x8B\x92\x00\x00\x00\x00\x51\x6A\x0E\x50\xFF\xD2\x8B\x94\x24\x00\x00\x00\x00", (char *) "xxxx????xxxxxxxxx????");
retWallHackMidFuc = (DWORD)(ADDR_WALLHACK_HOOK + 0x8);
if (memcmp((VOID *)ADDR_WALLHACK_HOOK, (VOID *)(PBYTE)"\x8B\x10", 2) == 0)
{
DetourCreate((PBYTE)ADDR_WALLHACK_HOOK, (PBYTE)hkWallHackMidFunction, 5);
}
return EXIT_SUCCESS;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)StartAddress, 0, 0, 0);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

u need to make it undetected with xtrap