OldSchoolHack

Register / Login English

[SOLVED][C++] DrawIndexedPrimitive Hook


icon [SOLVED][C++] DrawIndexedPrimitive Hook #1

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
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

icon #2

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
in der dllmain hookst du DrawIndexedPrimitive.

was passiert also?

1. drawindexedprimitive wird aufgerufen
2. die ist aber gehookt, also wird direkt in deinen hook gesprungen
3. dein hook ruft UseChams auf
4. UseChams callt pDevice->DrawIndexedPrimitive()
5. Gehe direkt zu schritt 1, gehe nicht über los, ziehe nicht einen rücksprung zum aufrufer ein, freue dich dafür über deine rekursion!

__________________

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
icon #3

Join Date: Dec 2011

Posts: 97

User-Rating:

2 positive
0 negative
Vielen Dank, SilverFire!
dank deines tipps habe ich folgendes geändert:

CPP Code:
  1.  
  2. HRESULT WINAPI hkDrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount){
  3. if(Terrorist){
  4. pDevice->SetRenderState(D3DRS_ZENABLE, false);
  5. pDevice->SetTexture(0, texGreen);
  6. pDevice->SetRenderState(D3DRS_ZENABLE, true);
  7. }
  8.  
  9. if(CounterTerrorist){
  10. pDevice->SetRenderState(D3DRS_ZENABLE, false);
  11. pDevice->SetTexture(0, texRed);
  12. pDevice->SetRenderState(D3DRS_ZENABLE, true);
  13. }
  14. return pDrawIndexedPrimitive(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
  15. }
  16.  

soweit funktioniert alles. Das spiel läuft zunächst flüssig und die Chams sind da.

Nur Nach ja 20 Sekunden fängt es an zu laggen. Ideen woran das liegen könnte? :/ oder habe ich schon wieder nur einen Leichtsinns Fehler begangen.
icon #4

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
mmh, das wird jetzt ein wenig in der luft herumgerate, aber wo und wie erstellst du deine texturen?

komm ruhig auf den irc (rechts oben gelbe button), da kann ich dann instant antworten, falls du noch fragen haben solltest^^

__________________

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