OldSchoolHack

Registrieren / Anmelden Deutsch

[SOLVED][C++] DrawIndexedPrimitive Hook

icon Thema: [SOLVED][C++] DrawIndexedPrimitive Hook

Anmeldungsdatum: Dez 2011

Beiträge: 97

Benutzer-Bewertung:

2 positiv
0 negativ
Guten Abend!
Ich habe mich an Chams versucht und sitze nun in der Zwickmühle. Mein Code (nur die stellen die wirklich wichtig sind. DLL main etc ist glaub ich nicht Interessant^^):

CPP Code:
  1.  
  2. //selbstredend:
  3. typedef HRESULT (WINAPI* tDrawIndexedPrimitive)(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount);
  4.  
  5. LPDIRECT3DTEXTURE9 texRed;
  6. LPDIRECT3DTEXTURE9 texGreen;
  7.  
  8. #define Terrorist (NumVertices == 3210 && primCount == 4503) || (NumVertices == 2292 && primCount == 3015) || (NumVertices == 1488 && primCount == 1819) || (NumVertices == 835 && primCount == 899) || (NumVertices == 554 && primCount == 509) || (NumVertices == 408 && primCount == 344)
  9.  
  10. void CreateTexture(LPDIRECT3DDEVICE9 pDevice, LPCVOID color, UINT ColorSize, LPDIRECT3DTEXTURE9 *texture){
  11. D3DXCreateTextureFromFileInMemory(pDevice, color, ColorSize, texture);
  12. }
  13.  
  14. //-----------------------------------------------------------------
  15.  
  16. //Das ist meine Funktion die die Chams "anzeigen" soll
  17.  
  18. void UseChams(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType, int BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount){
  19. if(Terrorist){
  20. pDevice->SetRenderState(D3DRS_ZENABLE, false);
  21. pDevice->SetTexture(0, texGreen);
  22. pDevice->DrawIndexedPrimitive(PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
  23. pDevice->SetRenderState(D3DRS_ZENABLE, true);
  24. }
  25.  
  26. /*if(CounterTerrorist){
  27. pDevice->SetRenderState(D3DRS_ZENABLE, false);
  28. pDevice->SetTexture(0, texRed);
  29. pDevice->DrawIndexedPrimitive(PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
  30. pDevice->SetRenderState(D3DRS_ZENABLE, true);
  31. } */
  32. }
  33.  
  34. //-----------------------------------------------------------------
  35.  
  36. HRESULT WINAPI hkDrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount){
  37. UseChams(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
  38. return pDrawIndexedPrimitive(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
  39. }
  40.  
  41. void FunktionHook(){
  42. HMODULE hModule = NULL;
  43. while(!hModule){
  44. hModule = GetModuleHandleA("d3d9.dll");
  45. Sleep(100);
  46. }
  47.  
  48. DWORD* VTableStart = 0;
  49. DWORD dwEndScene = 0;
  50. DWORD dwDrawIndexedPrimitive = 0;
  51. DWORD FoundByGordon = dwFindPattern((DWORD)hModule, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
  52. memcpy(&VTableStart, (void*)(FoundByGordon+2), 4);
  53. dwDrawIndexedPrimitive = (DWORD)VTableStart[82];
  54. dwEndScene = (DWORD)VTableStart[42];
  55.  
  56. pEndScene = (tEndScene)DetourFunc((PBYTE)dwEndScene,(PBYTE)hkEndScene, 5);
  57. pDrawIndexedPrimitive = (tDrawIndexedPrimitive)DetourFunc((PBYTE)dwDrawIndexedPrimitive,(PBYTE)hkDrawIndexedPrimitive, 5);
  58. }
  59.  

In der Sekunde, in der ich es in CSS injecte, stürzt das spiel ab (hl2.exe funktioniert nicht mehr... usw.) Wenn jemand mal rüber sehen könnte und sagen könnte was ich falsch gemacht habe wäre ich ihm sehr verbunden^^.

Mit freundlichen Grüßen
vedel