Register for your free account! | Forgot your password?

Go Back   elitepvpers > Shooter > WarRock > WarRock Guides, Tutorials & Modifications
You last visited: Today at 03:58

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[How To]D3D Hooking erstellen...

Discussion on [How To]D3D Hooking erstellen... within the WarRock Guides, Tutorials & Modifications forum part of the WarRock category.

Closed Thread
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2011
Posts: 22
Received Thanks: 6
Thumbs up [How To]D3D Hooking erstellen...

Inhalt

[+] Einleitung
[+] Vorraussetzungen
[+] Die DLL Coden
[+] Rechtecke && Schrift Zeichnen
[+] Memoryhacks aus der DLL heraus
[+] Chams
[+] Noch mehr Funktionen

Einleitung

Vorraussetzungen

Vorbereitungen

Die DLL Coden

Rechtecke && Schrift Zeichnen



Damit können wir die Texturen für unsere Chams erzeugen. Also
gleich mal ein Beispiel. Added das:
Code:
LPDIRECT3DTEXTURE9 texPink;

Jetzt können wir eine Textur erzeugen. Dazu rufen wir die Funktion
folgendermaßen auf:
Code:
GenerateTexture(pDevice, &texPink,txtPink);

Wie die Font darf auch diese Funktion nur 1x aufgerufen werden.
Stellt das sicher.
Jetzt haben wir eine einfarbige Pinke Textur. Um die jetzt auf
unseren Player zu bekommen ist noch einiges an Arbeit nötig. Bis
jetzt haben wir nämlich nur EndScene gehookt, das reicht uns jetzt
nicht mehr. Werft jetzt wieder IDA an und hookt folgende
Funktionen:
Code:
HRESULT __stdcall SetStreamSource(LPDIRECT3DDEVICE9 pDevice,UINT
StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride);
HRESULT __stdcall DrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice,D3DPRIMITIVETYPE Type,INT
BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount);

Versucht es analog zu EndScene herzubringen. Dann erstellen wir
eine neue Variable:
Code:
if (Stride != NULL ) myStride = Stride;
Jetzt können wir den Wert aus Stride auch in den anderen
Funktionen nutzen.
Wechselt jetzt zu DrawIndexedPrimitive. Fügt folgenden Code ein:
Code:
if (myStride == 20) {
pDevice->SetRenderState(D3DRS_ZENABLE,false);
pDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID);
pDevice->SetTexture( 0, texGreen);
pDevice->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex,
primCount);
pDevice->SetRenderState(D3DRS_ZENABLE,true);
pDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID);
pDevice->SetTexture( 0, texRed);
}
Jetzt zur Erklärung:
Strides definieren in unserem Game immer eine bestimmte Gruppen
von Objekten die gezeichnet werden. Zum Beispiel die Wände oder
eben die Player. Die Werte variieren in jedem Game. In Warrock
haben zum Beispiel die Player die Stridenummer 44. In Operation 7
haben die Player 20. Wie findet ihr nun die passende Nummer? Ganz
einfach, ihr führt eine Variable ein die sich mit Tastendruck
ändern lässt und färbt dann einfach immer diesen bestimmten
Stride. Dann loggt ihr euch die Nummer an der eure Player bunt
wurden und schon habt ihrs.
Der restliche Code:
Die erste Zeile ist der eigentliche Wallhack. Damit werden alle
Stride == 20 Objekte im Vordergrund gezeichnet.
Die zweite Zeile bewirkt, dass unsre Player komplett mit unserer
Textur ausgfüllt werden. Die dritte Zeile färbt die Player dann in
Grün.
In der vierten Zeile wird das alles angewandt. Jetzt wären wir
eigentlich schon fertig, aber wir wollen ja zweifarbige Chams.
Grün, wenn sich die Player hinter der Wand befinden, und rot wenn
sie im Vordergrund sind.
Deswegen folgen jetzt noch einmal
dieselben drei Zeilen wie vorher, mit dem Unterschied, dass in der
5. Zeile der RenderState auf true gesetzt wird. Das stellt sicher,
dass nur die Player im Vordergrund gezeichnet werden.


Noch mehr Funktionen
Zum Beispiel die Tastatureingaben :
Code:
if (GetAsyncKeyState(VK_INSERT)&1) { bla; }
Und noch mehr: da es eher schlecht ist, die ganzen Funktionen mit
statischen Offsets zu hooken, hier zwei Methoden die das ganze
dynamisch verarbeiten. Hier die Methode von SwTTy für die Adressen
der d3d9.dll:
Code:
HMODULE hModule = NULL;
while(!hModule)
{
hModule = GetModuleHandleA("d3d9.dll");
Sleep(100);
}
dwBeginScene = (DWORD)hModule + 0x87010;
dwEndScene = (DWORD)hModule + 0x871A0;
dwReset = (DWORD)hModule + 0x636B0;
dwDrawIndexedPrimitive = (DWORD)hModule + 0x88830;
dwSetViewPort = (DWORD)hModule + 0x82F70;

Und dann eine noch bessere Methode von Gordon. Dazu brauchen wir
erste diese zwei Funktionen von GameDeception:
Code:
bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
for(;*szMask;++szMask,++pData,++bMask)
if(*szMask=='x' && *pData!=*bMask )
return false;
return (*szMask) == NULL;
}
DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
{
for(DWORD i=0; i < dwLen; i++)
if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
return (DWORD)(dwAddress+i);
return 0;
}
Und dann holt man sich das ganze per VMT:
Code:
HMODULE hModule = NULL;
while(!hModule)
{
hModule = GetModuleHandleA("d3d9.dll");
Sleep(100);
}
DWORD* VTableStart = 0;
DWORD FoundByGordon = dwFindPattern((DWORD)hModule, 0x128000,
(PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
memcpy(&VTableStart, (void*)(FoundByGordon+2), 4);
dwDrawIndexedPrimitive = (DWORD)VTableStart[82]; // für mehr: blick in die d3d9.h werfen!
dwEndScene = (DWORD)VTableStart[42];
[/spoiler]

Press Thanks für die Mühe DANKE !
Ruffie.Sanji is offline  
Old 11/04/2011, 15:04   #2
 
elite*gold: 32
Join Date: Oct 2010
Posts: 250
Received Thanks: 75
hmm warum kommt mir das so bekannt vor -->
_Eckl is offline  
Old 11/04/2011, 15:09   #3
 
elite*gold: 0
Join Date: Nov 2011
Posts: 22
Received Thanks: 6
Mir auch habe ihn gepostet weil ich denke das das vielen nützen wird
Ruffie.Sanji is offline  
Old 11/04/2011, 15:21   #4
 
elite*gold: 0
Join Date: Sep 2010
Posts: 10,215
Received Thanks: 5,781
#closed
theitfan1337 is offline  
Thanks
3 Users
Closed Thread


Similar Threads Similar Threads
[How To]D3D Hooking erstellen...
06/11/2011 - WarRock Guides, Tutorials & Modifications - 28 Replies
D3D Hooking Tutorial Inhalt Einleitung Vorraussetzungen Die DLL Coden Rechtecke && Schrift Zeichnen Memoryhacks aus der DLL heraus
Account Hooking
03/30/2010 - AutoIt - 4 Replies
Hi, I would like to know how to hook an account with my bot, Example i play conquer online.I open my bot and it show my char name and i click hook,and then bot is connected to my account,how to hook the bot to the character, Thank you
C++ D3D Hooking
08/24/2009 - C/C++ - 12 Replies
Hallo zusammen, ich stehe gerade vor folgendem Problem: ich habe eine DLL und einen Loader gecoded, jedoch will ich anstelle des Loader einen Injecter haben, sprich: das spiel, in das injected werden soll, soll schon laufen. Natürlich hab ich das ganze schon probiert, jedoch werden die D3D-funktionen nicht wirklich gehookt, da die DLL auf ein Direct3DCreate9 wartet. Da diese Funktion aber wahrscheinlich direkt beim Starten des "Opfer-Spiels" ausgeführt wird, werden deswegen die anderen...
hooking lua_CFunctions
04/27/2008 - WoW Exploits, Hacks, Tools & Macros - 10 Replies
leute die damit was anfangen können ^^ hier schenk ich euch, ich danke kynox da er so freundlich war mir das mitzuteilen 2 parameters: eax = addresse von der CFunction, ecx = name das lua verwendet 00692440 > 55 PUSH EBP 00692441 8BEC MOV EBP,ESP 00692443 56 PUSH ESI 00692444 E8 A7FFFFFF CALL WoW.006923F0 ; mov eax, L ( the lua_State ) 00692449 8BF0 MOV ESI,EAX 0069244B 8B45 0C MOV...
DLL Hooking/Injection
03/20/2008 - General Coding - 4 Replies
Can anyone lead me to some GOOD tutorials for DLL Hooking/Injection... as the ones ive found on Google are absolutely shit. Thanks in advance. :bandit:



All times are GMT +1. The time now is 03:59.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.