Advertisement
Nang-Fals

Hook D3d

Jun 27th, 2016
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. void *DetourFunction (BYTE *src, const BYTE *dst, const int len)
  2. {
  3. BYTE *jmp;
  4. DWORD dwback;
  5. DWORD jumpto, newjump;
  6.  
  7. VirtualProtect(src,len,PAGE_READWRITE,&dwback);
  8.  
  9. if(src[0] == 0xE9)
  10. {
  11. jmp = (BYTE*)malloc(10);
  12. jumpto = (*(DWORD*)(src+1))+((DWORD)src)+5;
  13. newjump = (jumpto-(DWORD)(jmp+5));
  14. jmp[0] = 0xE9;
  15. *(DWORD*)(jmp+1) = newjump;
  16. jmp += 5;
  17. jmp[0] = 0xE9;
  18. *(DWORD*)(jmp+1) = (DWORD)(src-jmp);
  19. }
  20. else
  21. {
  22. jmp = (BYTE*)malloc(5+len);
  23. memcpy(jmp,src,len);
  24. jmp += len;
  25. jmp[0] = 0xE9;
  26. *(DWORD*)(jmp+1) = (DWORD)(src+len-jmp)-5;
  27. }
  28. src[0] = 0xE9;
  29. *(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
  30.  
  31. for(int i = 5; i < len; i++)
  32. src[i] = 0x90;
  33. VirtualProtect(src,len,dwback,&dwback);
  34. return (jmp-len);
  35. }
  36.  
  37.  
  38. int D3Dinit(void) //Just a hook I used for testing, got it from Marko I believe.
  39. {
  40. DWORD hD3D,id3d, adr, *vtbl;
  41. hD3D=0;
  42. do {
  43. hD3D = (DWORD)GetModuleHandle("d3d9.dll");
  44. id3d = GetSizeofCode("d3d9.dll");
  45. Sleep(10);
  46. } while(!hD3D);
  47. adr = FindPattern(hD3D, id3d/*0x128000*/, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
  48. if (adr) {
  49. memcpy(&vtbl,(void *)(adr+2),4);
  50.  
  51. oEndScene = (tEndScene) DetourFunction((PBYTE)vtbl[42], (PBYTE)hkEndScene,5);
  52. oReset = (tReset) DetourFunction((PBYTE)vtbl[16], (PBYTE)hkReset ,5);
  53. oDrawIndex = (tDrawIndex) DetourFunction((PBYTE)vtbl[82], (PBYTE)hkDrawIndex,5);
  54.  
  55. }
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement