Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 19:49

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

Advertisement



hook/detour um +5 bytes verschieben ?

Discussion on hook/detour um +5 bytes verschieben ? within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jul 2010
Posts: 94
Received Thanks: 17
hook/detour um +5 bytes verschieben ?

Hallo,

Ich versuche grade die Funktion eines Botes fuer ein bestimmtes Spiel zu verstehen.
Damit ich jetzt etwas umgehen kann, muss ich diesen code (Recv)
Code:
int (__stdcall *PacketRecv)(SOCKET Socket, char *Buffer, int Length, int Flags);

void MyPacketRecv(SOCKET Socket, char *Buffer, int Length, int Flags) 
{
           switch(Buffer[2])
           {
           }
           return PacketRecv(Socket, Buffer, Length, Flags); 
}


void InitDetours() 
{
		
	PacketRecv = (int (__stdcall *)(SOCKET, char *, int, int))DetourFunction((PBYTE)recv, (PBYTE)MyPacketRecv);
}
um +5 bytes verschieben, was ist damit jetzt genau gemeint ?
Habe leider nicht soviel Ahnung von der Materie bin aber extrem interessiert daran es zu verstehen.
mfg
Melodyzer is offline  
Old 10/15/2012, 20:18   #2


 
Jeoni's Avatar
 
elite*gold: 966
Join Date: Apr 2010
Posts: 1,104
Received Thanks: 681
Erstmal musste wissen, was ein hook ist, und wie er aufgebaut ist / funktioniert. Dazu gibt's hier nen super Tutorial (SuFu nutzen).
Um 5 Bytes verschieben heißt, dass du den Call zu deiner Hookfunction eben um 5 Bytes verschiebst
Im Code sehe das eben so aus:
Code:
PacketRecv = (int (__stdcall *)(SOCKET, char *, int, int))DetourFunction((PBYTE)recv + 5, (PBYTE)MyPacketRecv);
Gibt aber dabei vermutlich Probleme.
Danach liegt der Call eben bei Byte 6 bis 10 (1 Byte: Call Offset; 4Byte Sprungadresse (wenn's nen 32Bit Prozess ist, bei 64Bit eben 8 Byte)) oder so. Du musst natürlich schauen, dass der Call keinen schon vorhandenen Befehl zerstört (auch im Tutorial erklärt, soviel ich weiß), dann wird das Programm höchstwahrscheinlich crashen.
Die DetourFunction, die bei den "normalen" (nicht verschobenen) Hooks genutzt wird, kann man hier mit ziemlicher sicherheit vergessen und man muss die Argumente / Parameter vermutlich aus dem Stack auslesen, da die ersten 5 Bytes an Befehlen den Stackaufbau, auf den die Detourfunktion aufbaut (toller Satzbau ), vermutlich zerstört.
Um hier weiterzukommen, kannste ja nach MidFunction Hooks suchen und googlen, die beschäftigen sich genau mit dem Problem und da gibt's einige sehr gute Ansätze.
Obwohl ich nicht der Beste in diesem Gebiet bin, kannste mir bei Fragen gerne eine PN senden
Mit freundlichen Grüßen
Jeoni
Jeoni is offline  
Thanks
1 User
Old 10/16/2012, 21:05   #3


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Originally Posted by Jeoni View Post
Erstmal musste wissen, was ein hook ist, und wie er aufgebaut ist / funktioniert. Dazu gibt's hier nen super Tutorial (SuFu nutzen).
Um 5 Bytes verschieben heißt, dass du den Call zu deiner Hookfunction eben um 5 Bytes verschiebst
Im Code sehe das eben so aus:
Code:
PacketRecv = (int (__stdcall *)(SOCKET, char *, int, int))DetourFunction((PBYTE)recv + 5, (PBYTE)MyPacketRecv);
Gibt aber dabei vermutlich Probleme.
Danach liegt der Call eben bei Byte 6 bis 10 (1 Byte: Call Offset; 4Byte Sprungadresse (wenn's nen 32Bit Prozess ist, bei 64Bit eben 8 Byte)) oder so. Du musst natürlich schauen, dass der Call keinen schon vorhandenen Befehl zerstört (auch im Tutorial erklärt, soviel ich weiß), dann wird das Programm höchstwahrscheinlich crashen.
Die DetourFunction, die bei den "normalen" (nicht verschobenen) Hooks genutzt wird, kann man hier mit ziemlicher sicherheit vergessen und man muss die Argumente / Parameter vermutlich aus dem Stack auslesen, da die ersten 5 Bytes an Befehlen den Stackaufbau, auf den die Detourfunktion aufbaut (toller Satzbau ), vermutlich zerstört.
Um hier weiterzukommen, kannste ja nach MidFunction Hooks suchen und googlen, die beschäftigen sich genau mit dem Problem und da gibt's einige sehr gute Ansätze.
Obwohl ich nicht der Beste in diesem Gebiet bin, kannste mir bei Fragen gerne eine PN senden
Mit freundlichen Grüßen
Jeoni
Aufgrund seiner Parameter-Liste schließe ich auf die MS Detours Library und nicht die schlechte DetourFunction, die im Internet kursiert.
Insofern zerschießt er sich da keine Befehle. Der Aufbau des Stackframes sieht von CallingConvention zu CallingConvention unterschiedlich aus und dementsprechend anders sollte man das Offset setzen und auf die Parameter zugreifen.
MrSm!th is offline  
Old 10/16/2012, 23:26   #4
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Wie ich nur an diesem Stück code erkenne aus welcher Sektion du kommst. Der Ansatz, den anscheinend alle dort verfolgen, ist Schwachsinn und kommt nur daher, da niemand dort auch nur annähernd vernünftig reversen kann.
Die Crypt-Funktionen liegen schon seit Jahren offen, also mach es vernünftig oder lass es sein.
MoepMeep is offline  
Old 10/18/2012, 15:11   #5
 
elite*gold: 0
Join Date: Jul 2010
Posts: 94
Received Thanks: 17
Quote:
Originally Posted by MoepMeep View Post
Wie ich nur an diesem Stück code erkenne aus welcher Sektion du kommst. Der Ansatz, den anscheinend alle dort verfolgen, ist Schwachsinn und kommt nur daher, da niemand dort auch nur annähernd vernünftig reversen kann.
Die Crypt-Funktionen liegen schon seit Jahren offen, also mach es vernünftig oder lass es sein.
Kein Wunder wenn es dein Tutorial ist oder ?
Melodyzer is offline  
Reply


Similar Threads Similar Threads
Detour und Rehook?! oder nur Detour?
09/16/2011 - WarRock - 4 Replies
Hallo EPVP' Ich hätte mal ne kleine Frage an die D3D Coder C++. Ich hab schon meinen eigenen Hack gecoded. Nun woltle ich D3D Funcs adden, hab auch den richtigen code. In-Game geht es jedoch NICHT!. Nun wurde mir von jemanden gesagt ich bräuchte eine Detour.
[Undetected]CODER_BEST D3D 3.7 (NEW DETOUR, NEW HOOK DIP, CHAMS AND MORE!!!)
09/02/2011 - WarRock Hacks, Bots, Cheats & Exploits - 16 Replies
Screen: http://img696.imageshack.us/img696/7578/newdvg.jp g Download DLL: http://www.filesonic.com/file/1681921184/CoderBes t_D3D_3.7.zip Download INJECTOR: http://www.filesonic.com/file/1681876214 Scan DLL: http://virusscan.jotti.org/pl/scanresult/3be30bcd 224162cf516a0606853d81354d75e4df Scan INJECTOR: http://virusscan.jotti.org/pl/scanresult/f841f3a5 aa1bda47115971b0a4f1fa556bf90551
(Winsock hook) replace/filter packet bytes
11/18/2010 - General Coding - 3 Replies
Hi guys Please, can someone explain me or help me about my winsock hook?! I need to change the first and second bytes of the packet I've received... example: I'm receiving the packet:



All times are GMT +2. The time now is 19:49.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.