OldSchoolHack

Register / Login English

Endscene hooking problem

icon Thread: Endscene hooking problem

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
Hallo erstmal

Habe mich jetzt ein wenig mit d3d hooking befasst, auch prompt einige gute tutorials gefunden.
habe mir dann das tut von purple.d1amond genauer angesehen.

komme dann auf folgenden code:
CPP Code:
  1.  
  2. // globals / constants
  3.  
  4. const D3DCOLOR txtPink = D3DCOLOR_ARGB(255, 255, 0, 255);
  5.  
  6. DWORD WINAPI HookThread();
  7. void *DetourFunc(BYTE *src, const BYTE *dst, const int len);
  8.  
  9. typedef HRESULT(__stdcall* EndScene_t)(LPDIRECT3DDEVICE9);
  10. HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice);
  11. void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color);
  12. bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask);
  13. DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask);
  14.  
  15. HMODULE MyModule = NULL;
  16. EndScene_t pEndScene;
  17. DWORD dwEndScene;
  18. HMODULE hModule = NULL;
  19. DWORD* VTableStart = 0;
  20.  

CPP Code:
  1.  
  2. //DLL main
  3.  
  4. BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD Reason,LPVOID Reserved)
  5. {
  6. switch(Reason)
  7. {
  8. case DLL_PROCESS_ATTACH:
  9. MyModule = hinstDll;
  10. CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&HookThread, 0, 0, 0);
  11. break;
  12. case DLL_PROCESS_DETACH:
  13. MessageBox(NULL, L"Detached Hack", L"Hack Detached", 0);
  14. break;
  15. }
  16. return TRUE;
  17. }

CPP Code:
  1.  
  2. // Der Thread
  3.  
  4. DWORD WINAPI HookThread()
  5. {
  6. while( !hModule )
  7. {
  8. hModule = GetModuleHandle(L"d3d9.dll");
  9. Sleep(100);
  10. }
  11. DWORD tempadd = dwFindPattern((DWORD)hModule, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
  12. memcpy(&VTableStart, (void*)(tempadd+2), 4);
  13. dwEndScene = VTableStart[42];
  14. pEndScene = (EndScene_t) DetourFunc((PBYTE) dwEndScene, (PBYTE)hkEndScene, 5);
  15. return 0;
  16. }

CPP Code:
  1.  
  2. // functions
  3.  
  4.  
  5. void *DetourFunc(BYTE *src, const BYTE *dst, const int len)
  6. {
  7. BYTE *jmp = (BYTE*)malloc(len+5);
  8. DWORD dwback;
  9. VirtualProtect(src, len, PAGE_READWRITE, &dwback);
  10. memcpy(jmp, src, len); jmp += len;
  11. jmp[0] = 0xE9;
  12. *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
  13. src[0] = 0xE9;
  14. *(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
  15. VirtualProtect(src, len, dwback, &dwback);
  16. return (jmp-len);
  17. }
  18.  
  19. HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
  20. {
  21. DrawRect ( pDevice, 10, 10, 600, 400, txtPink);
  22. return pEndScene(pDevice);
  23. }
  24.  
  25. void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color)
  26. {
  27. D3DRECT rect = {X, Y, X+L, Y+H};
  28. Device_t->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0);
  29. }
  30.  
  31. bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
  32. {
  33. for(;*szMask;++szMask,++pData,++bMask)
  34. if(*szMask=='x' && *pData!=*bMask )
  35. return false;
  36. return (*szMask) == NULL;
  37. }
  38.  
  39. DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
  40. {
  41. for(DWORD i=0; i < dwLen; i++)
  42. if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
  43. return (DWORD)(dwAddress+i);
  44. return 0;
  45. }

das spiel stürzt jedoch direkt nach dem hook ab.
hkEndScene wird 1x aufgerufen - dann crash.
jemand eine idee woran das liegt?
ich verzweifel hier allmählich...

Danke im voraus.

MfG Silver

EDIT:
DL der quelldateien:
http://www.xup.in/dl,45365957/Injection.rar/

compiler: microsoft visual studio 2010
windows 7 64 bit enterprise (spiel und compilation in 32 bit)

benutze Winject 1.7a.

mehrere directx9 spiele ausprobiert.
css, portal, portal2, cod4, cod5, LoL etc.
die meisten spiele stürzen nach dem ersten aufruf der gehookten funktion ab, einige auch schon bei createthread.

__________________

http://www.abload.de/img/signfj5o.png
Spoiler
Vids:
Zitate:
Spoiler

Quote from xst
Vater KN4CK3R, der du hängst im irc, geheiligt werde dein Botnet, dein P7 v1.337 komme, die Bannwelle geschehe, wie in CS:S als auch in CS:GO, führe uns nicht in Versuchung, sondern erlöse uns von all dem c+p-Shit.
Quote from f4gsh0t_h4x
VAC ist an,immer,überall
Quote from gibson.w
Ich mag braune Würstchen
Quote from irc
<SilverDeath> KN4CK3R bistn nub
<~KN4CK3R> kk
Quote from irc
<OrkSchamane> das prob is das viele dieser eig. recht guten bücher englisch sind ...
<OrkSchamane> da habe ich's ja doppelt schwer
<~KN4CK3R> falsch
<~KN4CK3R> das prob is dass du programmieren willst ohne englisch zu können
Quote from irc
<SilverDeath> Ich schwöre dir Dr_Pepper Ich bumms deine Mutter tot Mann!
<Dr_Pepper> danke.
<SilverDeath> bitte
Quote from irc
<~KN4CK3R> dann liegts wenigstens an mir
<~KN4CK3R> nur noch rausfinden warum -.-
<SilverDeath> ja sicher
<SilverDeath> an wem sonst?
* You were kicked by KN4CK3R (kick)
Quote from Dr_Pepper
ihr seit beide dumm
Tutorials:
Releases:
Gifs:
Spoiler
http://www.abload.de/img/uberesp2sgul2.gif
https://i.imgur.com/Z5VQMrV.gif
http://www.abload.de/img/minesweeperzgaef.gif