void HookingIsFun()
{
DWORD *deviceP = **(DWORD***)Device Pionter Here;
pEndscene = (oEndscene)Detour( (PBYTE)deviceP[42], (PBYTE)myEndscene);
}

src[0] = 0x90; //50 src[1] = 0x90; // 58 src[2] = 0xE9;
#include <windows.h>
#include "Detour.h"
#include <d3d9.h>
typedef HRESULT(__stdcall* Real_EndScene)(LPDIRECT3DDEVICE9);
Real_EndScene oEndScene = NULL;
HRESULT __stdcall hook_EndScene(LPDIRECT3DDEVICE9 pDevice)
{
MessageBox(NULL,"Hooked","Hooked",MB_OK);
pDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME);
return oEndScene(pDevice);
}
DWORD GetPointerDereference(int index)
{
DWORD *DevicePointer = **(DWORD***)0x01C8ED88;
return DevicePointer[index];
}
DWORD GetPointerInlineAssembly(int index)
{
DWORD DevicePointer = 0x01C8ED88;
__asm
{
mov eax,[DevicePointer]
mov ebx,[eax]
mov ecx,[ebx]
mov eax,index
mov ebx,4
mul ebx
mov edx,[ecx+eax]
mov DevicePointer,edx
}
return DevicePointer;
}
void Hook()
{
while(!GetModuleHandle("d3d9.dll"))
{
Sleep(100);
}
while( *(DWORD*)0x01C8ED88 == 0)
{
Sleep(100);
}
oEndScene = (Real_EndScene)DetourFunc((PBYTE)GetPointerInlineAssembly(42),(PBYTE)hook_EndScene,5);
}
bool __stdcall DllMain(HINSTANCE hInstance,DWORD reason, void* useless)
{
if(reason == DLL_PROCESS_ATTACH)
{
CreateThread(0,0,(LPTHREAD_START_ROUTINE)Hook,0,0,0);
}
if(reason == DLL_PROCESS_DETACH)
{
}
return true;
}
void *DetourFunc(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] = 0x90; //50
src[1] = 0x90; // 58
src[2] = 0xE9;
*(DWORD*)(&src[3]) = (DWORD)(dst - src) - 7;
for (int i=7; i<len; i++) src[i] = 0x90;
VirtualProtect(src, len, dwBack, &dwBack);
return (jmp-len);
}
1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(14) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(15) : error C2296: '&' : illegal, left operand has type 'BYTE *' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(16) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(17) : error C2296: '&' : illegal, left operand has type 'BYTE *' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(17) : error C2297: '&' : illegal, right operand has type 'BYTE *' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(17) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(18) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(19) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(20) : error C2059: syntax error : 'for' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(20) : error C2143: syntax error : missing ')' before ';' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(20) : error C2065: 'i' : undeclared identifier 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(20) : error C2065: 'i' : undeclared identifier 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(20) : error C2143: syntax error : missing ';' before ')' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(20) : error C2143: syntax error : missing ';' before ')' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(20) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(35) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(36) : error C2059: syntax error : '}' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(43) : error C2400: inline assembler syntax error in 'second operand'; found 'AND' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(43) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(44) : error C2400: inline assembler syntax error in 'second operand'; found 'AND' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(44) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(45) : error C2400: inline assembler syntax error in 'second operand'; found 'AND' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(45) : error C2014: preprocessor command must start as first nonwhite space 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(49) : error C2400: inline assembler syntax error in 'second operand'; found 'AND' 1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\mw2\mw2\main.cpp(49) : error C2014: preprocessor command must start as first nonwhite space