OldSchoolHack

Register / Login English

[c++] D3D-hooking


icon [c++] D3D-hooking #1

Join Date: Mar 2011

Posts: 127

User-Rating:

1 positive
0 negative
hi,
ich versuche mich grade ma am D3D-Hooking. Ich versuche die Endscene zu hooken. habe mir ein paar tuts angeschaut und in denen als folgenden Code gesehen:
CPP Code:
  1.  
  2. int (__stdcall* EndScene_t)(LPDIRECT3DDEVICE9);
  3. int __stdcall MyEndScene(LPDIRECT3DDEVICE9);
  4. bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
  5. {
  6. for(;*szMask;++szMask,++pData,++bMask)
  7. if(*szMask=='x' && *pData!=*bMask )
  8. return false;
  9. return (*szMask) == NULL;
  10. }
  11. DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
  12. {
  13. for(DWORD i=0; i < dwLen; i++)
  14. {
  15. if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
  16. return (DWORD)(dwAddress+i);
  17. }
  18. return 0;
  19. }
  20. void hookd3d()
  21. {
  22. HMODULE hModule = NULL;
  23. while(!hModule)
  24. {
  25. hModule = GetModuleHandleA("d3d9.dll") ;
  26. Sleep(100) ;
  27. }
  28.  
  29. DWORD* vmt = 0 ;
  30. DWORD FoundPattern = dwFindPattern((DWORD)hModule,0x128000,(PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86","xx????xx????xx") ;
  31.  
  32. vmt = (DWORD*)(FoundPattern+2); // &vmt[42] enthält die Addy der EndScene-Funktion
  33. DetourFunction((PBYTE)&vmt[42],(PBYTE)MyEndScene);
  34. }
Also der wert von &vmt[42] scheint in ordnung zu sein. jedoch wird MyEndScene nicht gecallt. Wäre schön wen ihr mir helfen könntet

icon #2

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
ins blaue geraten:

CPP Code:
  1. DetourFunction((PBYTE)vmt[42],(PBYTE)MyEndScene); //nicht &vmt

greetz KN4CK3R

__________________

Hallo
icon #3

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
CPP Code:
  1.  
  2. tempadd = dwFindPattern((DWORD)hModule, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
  3. memcpy(&VTableStart, (void*)(tempadd+2), 4);
  4. dwEndScene = VTableStart[42];
  5. pEndScene = (EndScene_t) DetourFunc((PBYTE) dwEndScene, (PBYTE)hkEndScene, 5);
  6.  

vorausgesetzt natürlich, du benutzt folgende DetourFunc:
CPP Code:
  1.  
  2. void* DetourFunc(BYTE *src, const BYTE *dst, const int len)
  3. {
  4. BYTE *jmp = (BYTE*)malloc(len+5); // allokiert savebytes+5 bytes für trampolinjump
  5. DWORD dwback; // virtualprotect status abspeichern
  6. VirtualProtect(src, len, PAGE_READWRITE, &dwback); // save ^ und readwrite rechte geben
  7. memcpy(jmp, src, len); // die len bytes am anfang des trampolins saven.
  8. jmp += len; // trampolin ptr nach saved bytes verschieben
  9. jmp[0] = 0xE9; // jmp befehl schreiben (saved data;0xe9jmp;address)
  10. *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5; // relative adresse zum originalbefehl+5jmp eintragen
  11. src[0] = 0xE9; // erstes orig byte mit jmp überschreiben
  12. *(DWORD*)(src+1) = (DWORD)(dst - src) - 5; // relative adresse zu hookaddress eintragen
  13. VirtualProtect(src, len, dwback, &dwback); // vp wieder herstellen.
  14. return (jmp-len); // trampolinaddresse zurückgeben
  15. }
  16.  

__________________

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 #4

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
@Silverfire: das ist das gleiche wie bei ihm. Das kopieren mit memcpy ist nicht nötig an der Stelle.

greetz KN4CK3R

__________________

Hallo
icon #5

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
ist aber schöner...^^
und er benutzt anscheinend eine andere detourfunktion...

huh nein, ist doch nicht schöner...
wieso hab ich das damals gemacht?
egal, funtzt...

__________________

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 #6

Join Date: Mar 2011

Posts: 127

User-Rating:

1 positive
0 negative
also erstmal danke für die antworten, jedoch komme ich nicht weiter:
wenn ich
CPP Code:
  1. DetourFunction((PBYTE)vmt[42],(PBYTE)MyEndScene);
verwende, dann crasht das Programm. vmt[42] liegt bei 0x9E980000 -
&vmt[42] liegt im bereich der d3d9.dll in dem programm, deshalb dachte ich, des es &vmt[42] seien müsste und da es damit nicht crasht, aber auch nicht geht.

icon #7

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
mitm ollydbug mal geschaut, ob die adresse stimmt?
siehst ja ob da ne funktion anfängt...
mal meine detourfunc ausprobiert?

dein thread ist DWORD WINAPI? (hat nix damit zu tuen, aber...)

__________________

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 #8

Join Date: Mar 2011

Posts: 127

User-Rating:

1 positive
0 negative
ja mein thread is DWORD WINAPI
hier könnt ihr euch des mal bitte ansehen: http://www.fileserve.com/file/s6rjfyA/test-window.exe da is mein fenster (schließen mit ESC).
wäre nett wenn ihr mir da zeigen/offsets bestätigen könntet und sagen könntet, wie ich die funktion hooken kann (d3d9-endscene)
icon #9

Join Date: Mar 2011

Posts: 978

User-Rating:

89 positive
6 negative
probiers mal in ein paar echten dx9 spielen aus, manchmal gehts mit der methode nicht richtig und musst createdevice hooken...

__________________

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 #10

Join Date: Mar 2011

Posts: 127

User-Rating:

1 positive
0 negative
vielen dank an euch
ahh habs jetzt hinbekommen
mein fehler war der: DWORD* EndSceneAddy = &vmt[42];