OldSchoolHack

Registrieren / Anmelden Deutsch

Endscene hooking problem

icon Thema: Endscene hooking problem

Anmeldungsdatum: Mär 2011

Beiträge: 978

Benutzer-Bewertung:

89 positiv
6 negativ
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

Zitat von 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.
Zitat von f4gsh0t_h4x
VAC ist an,immer,überall
Zitat von gibson.w
Ich mag braune Würstchen
Zitat von irc
<SilverDeath> KN4CK3R bistn nub
<~KN4CK3R> kk
Zitat von 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
Zitat von irc
<SilverDeath> Ich schwöre dir Dr_Pepper Ich bumms deine Mutter tot Mann!
<Dr_Pepper> danke.
<SilverDeath> bitte
Zitat von 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)
Zitat von 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