Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void *DetourFunction (BYTE *src, const BYTE *dst, const int len)
- {
- BYTE *jmp;
- DWORD dwback;
- DWORD jumpto, newjump;
- VirtualProtect(src,len,PAGE_READWRITE,&dwback);
- if(src[0] == 0xE9)
- {
- jmp = (BYTE*)malloc(10);
- jumpto = (*(DWORD*)(src+1))+((DWORD)src)+5;
- newjump = (jumpto-(DWORD)(jmp+5));
- jmp[0] = 0xE9;
- *(DWORD*)(jmp+1) = newjump;
- jmp += 5;
- jmp[0] = 0xE9;
- *(DWORD*)(jmp+1) = (DWORD)(src-jmp);
- }
- else
- {
- jmp = (BYTE*)malloc(5+len);
- 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);
- }
- int D3Dinit(void) //Just a hook I used for testing, got it from Marko I believe.
- {
- DWORD hD3D,id3d, adr, *vtbl;
- hD3D=0;
- do {
- hD3D = (DWORD)GetModuleHandle("d3d9.dll");
- id3d = GetSizeofCode("d3d9.dll");
- Sleep(10);
- } while(!hD3D);
- adr = FindPattern(hD3D, id3d/*0x128000*/, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
- if (adr) {
- memcpy(&vtbl,(void *)(adr+2),4);
- oEndScene = (tEndScene) DetourFunction((PBYTE)vtbl[42], (PBYTE)hkEndScene,5);
- oReset = (tReset) DetourFunction((PBYTE)vtbl[16], (PBYTE)hkReset ,5);
- oDrawIndex = (tDrawIndex) DetourFunction((PBYTE)vtbl[82], (PBYTE)hkDrawIndex,5);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement