OldSchoolHack

Registrieren / Anmelden Deutsch

[SOLVED][C++] DrawIndexedPrimitive Hook


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

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

icon #2

Anmeldungsdatum: Mär 2011

Beiträge: 978

Benutzer-Bewertung:

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

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

Anmeldungsdatum: Dez 2011

Beiträge: 97

Benutzer-Bewertung:

2 positiv
0 negativ
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

Anmeldungsdatum: Mär 2011

Beiträge: 978

Benutzer-Bewertung:

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

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