OldSchoolHack

Registrieren / Anmelden Deutsch

[c++] D3D-hooking


icon [c++] D3D-hooking #1

Anmeldungsdatum: Mär 2011

Beiträge: 127

Benutzer-Bewertung:

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

Anmeldungsdatum: Aug 2007

Beiträge: 8643

Benutzer-Bewertung:

199 positiv
33 negativ
ins blaue geraten:

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

greetz KN4CK3R

__________________

Hallo
icon #3

Anmeldungsdatum: Mär 2011

Beiträge: 978

Benutzer-Bewertung:

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

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

Anmeldungsdatum: Aug 2007

Beiträge: 8643

Benutzer-Bewertung:

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

greetz KN4CK3R

__________________

Hallo
icon #5

Anmeldungsdatum: Mär 2011

Beiträge: 978

Benutzer-Bewertung:

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

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

Anmeldungsdatum: Mär 2011

Beiträge: 127

Benutzer-Bewertung:

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

Anmeldungsdatum: Mär 2011

Beiträge: 978

Benutzer-Bewertung:

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

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

Anmeldungsdatum: Mär 2011

Beiträge: 127

Benutzer-Bewertung:

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

Anmeldungsdatum: Mär 2011

Beiträge: 978

Benutzer-Bewertung:

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

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

Anmeldungsdatum: Mär 2011

Beiträge: 127

Benutzer-Bewertung:

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