Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 22:26

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

Advertisement



[Video Tutorial] Microsoft Detours 1.5 New Video

Discussion on [Video Tutorial] Microsoft Detours 1.5 New Video within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old 09/30/2011, 23:23   #46
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Quote:
Originally Posted by MrSm!th View Post
Um genau zu sein, wird sie einmal gehookt und danach wird der Hook immer aufgerufen, anstatt der originalen

Dann musst du entweder die Parameter prüfen und so darauf schließen, ob es die gewünschte ist oder du hookst nicht die MessageBoxW, sondern platzierst direkt einen Jump an der entsprechenden Stelle im Programm zu einer Codecave von dir (das geht natürlich nur, wenn sie bekannt ist).

Für letzteres brauchst du keinen Hook o.ô Musst einfach nur die Funktion callen, wo ist das Problem?

Danke für den Vorschlag, ja, kann ich machen.
Ja das muss man aber über asm machen, dachte da gibts nen geschmeidigeren weg mittels hooks.

Tatsächlich weis ich garnicht wie mann denn einfach funktionen eines prozesses callen kann o_O
freehuntx is offline  
Old 09/30/2011, 23:52   #47


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Muss man nicht.

Und Hooks sind eher ungeschickter.

Kleiner Tipp:

Du tust es doch in einem Hook o.ô
Was machst du denn beim Aufruf des Trampolins?
MrSm!th is offline  
Thanks
1 User
Old 10/01/2011, 02:12   #48
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Quote:
Originally Posted by MrSm!th View Post
Muss man nicht.

Und Hooks sind eher ungeschickter.

Kleiner Tipp:

Du tust es doch in einem Hook o.ô
Was machst du denn beim Aufruf des Trampolins?
Ich verstehe dir Frage nicht ganz.

Bin wahrscheinlich zu müde.

Du meinst wahrscheinlich dass beim aufruf des trampolins, eine function mitsamt parameter übergeben wird oder?
Und ich darüber auch eine function callen könnte.
freehuntx is offline  
Old 10/01/2011, 23:04   #49
 
elite*gold: 0
Join Date: Feb 2010
Posts: 28
Received Thanks: 0
Quote:
Danke für den Vorschlag, ja, kann ich machen.
Thx, das wär echt geil
chillakilla123 is offline  
Old 12/27/2011, 16:41   #50
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
Die Frage lässt mich wahrscheinlich wie einen Idioten darstehen, aber ich scheine beim Importieren der detours.h irgendwo einen Fehler gemacht zu haben. (Entwicklungsumgebung: Embarcadero RAD Studio XE2)

Meine Imports sehen so aus:

Das hier ist mein Code (MainWindow.cpp):

Beim Builden der .DLL zeigt mir der Compiler folgenden Fehler an:
Quote:
Originally Posted by Compiler
[ILINK32 Fehler] Error: Nicht auflösbares externes 'DetourFunction' referenziert.

Ich bitte um Hilfe (:
Mi4uric3 is offline  
Old 12/27/2011, 18:19   #51
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
An die detour.lib gedacht?

edit: blind ._. hast du :x
MoepMeep is offline  
Old 12/27/2011, 18:26   #52
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
hatte mal so ein ähnliches Problem. Probier mal Projekt -> Optionen -> C++Linker -> Mit der Delphi Laufzeit linken auf false zu stellen.

Das hat bei mir oft Probleme gemacht
HardCore.1337 is offline  
Old 12/27/2011, 18:42   #53
 
elite*gold: 0
Join Date: Oct 2011
Posts: 814
Received Thanks: 675
Quote:
Originally Posted by Mi4uric3 View Post
Die Frage lässt mich wahrscheinlich wie einen Idioten darstehen, aber ich scheine beim Importieren der detours.h irgendwo einen Fehler gemacht zu haben. (Entwicklungsumgebung: Embarcadero RAD Studio XE2)

Meine Imports sehen so aus:

Das hier ist mein Code (MainWindow.cpp):

Beim Builden der .DLL zeigt mir der Compiler folgenden Fehler an:



Ich bitte um Hilfe (:
Detours 1.5 und Embarcadero C++ Builder wird nichts soweit ich weiß, nimm 2.1 diese funktioniert ganz sicher, hab dir mal die Detours 2.1 hochgeladen sind für Embarcadero C++ Builder extra angepasst.

lg
Attached Files
File Type: rar C++ Builder Detour.rar (57.6 KB, 27 views)
Trollface- is offline  
Thanks
2 Users
Old 12/27/2011, 21:45   #54
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
Quote:
Originally Posted by Trollface- View Post
Detours 1.5 und Embarcadero C++ Builder wird nichts soweit ich weiß, nimm 2.1 diese funktioniert ganz sicher, hab dir mal die Detours 2.1 hochgeladen sind für Embarcadero C++ Builder extra angepasst.

lg
Vielen Dank, das werde ich mal ausprobieren!
Der größte Unterschied (was ich so gelesen habe) ist nur, dass manchmal Doppelpointer benutzt werden, oder?
Naja ich probiers einfach mal ^-^

Okay, also angepasst.. ([ILINK32 Fehler] Error: 'DETOURS.LIB' enthält einen ungültigen OMF-Record, Typ 0x21 (möglicherweise COFF))
Mi4uric3 is offline  
Old 12/27/2011, 21:51   #55


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Man setzt den Detour völlig anders und dazu gehört es auch, einen Doppelpointer zu verwenden, ja.

Soweit ich weiß hat 2.1 aber einige Vorteile, zb. Threadsicherheit.
MrSm!th is offline  
Thanks
1 User
Old 12/27/2011, 22:05   #56
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
So ich hab jetzt die neue detours.h & detours.lib (konvertiert) benutzt
Es kommt genau der selbe Fehler.. :/


Ich habe eine weitere Frage:
Es geht mir nicht darum, eine MessageBox zu hooken (das ist nur ein Test), sondern eine Funktion in einem Programm (logisch.).
Aber ich möchte nicht den Start der Funktion hooken, sondern mitten drin.
Wie mach ich das dann mit dem Trampolin?
Muss ich irgendwelche Argumente übergeben, wenn ich die Funktion mitten drin hooke?
Mi4uric3 is offline  
Old 12/30/2011, 05:28   #57
 
elite*gold: 30
Join Date: Jul 2008
Posts: 37
Received Thanks: 3
Angenommen ich möchte eine Funktion detouren, die folgenden Aufbau hat:
Code:
__declspec(dllexport) int func_type (struct, const char *);
Wie müsste ich da mit dem __declspec und der struct umgehen? Reicht eine "nachgebaute" struct der selben größe oder muss ich 1:1 die Originale verwenden.
Nerran is offline  
Old 12/30/2011, 13:48   #58
 
elite*gold: 0
Join Date: Nov 2009
Posts: 343
Received Thanks: 45
@Mi4uric3: Das mit dem Trampolin dürfe schwierig werden, mach doch einfach eine CodeCave, dass dürfte der einfachste Weg sein. Wenn du mittendrin hookst, dann ist ja dein Funktionpointer nur auf die halbe Funktion.

MfG
yihaaa is offline  
Old 12/30/2011, 14:43   #59
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Quote:
Originally Posted by Nerran View Post
Angenommen ich möchte eine Funktion detouren, die folgenden Aufbau hat:
Code:
__declspec(dllexport) int func_type (struct, const char *);
Wie müsste ich da mit dem __declspec und der struct umgehen? Reicht eine "nachgebaute" struct der selben größe oder muss ich 1:1 die Originale verwenden.
Als Parameter wird ja nicht die structur selber sondern nur ein Pointer zur Structur übergeben. Wen du aber mit den elementen der structur arbeiten willst Dann solltest du schon wissen wie die structur aufgebaut ist bzw wissen an welchen offset sich das element befindet das du brauchst. Wen du die structur aber nicht brauchst dan kannst du im Detour damit umgehen wie mit einer normalen variable.

Quote:
Originally Posted by Mi4uric3 View Post
Ich habe eine weitere Frage:
Es geht mir nicht darum, eine MessageBox zu hooken (das ist nur ein Test), sondern eine Funktion in einem Programm (logisch.).
Aber ich möchte nicht den Start der Funktion hooken, sondern mitten drin.
Wie mach ich das dann mit dem Trampolin?
Muss ich irgendwelche Argumente übergeben, wenn ich die Funktion mitten drin hooke?
Wen du ein hook setzten willst musst du ja 5bytes (jmp+sprungweite) überschreiben. Nun musst du aber darauf achten das wen der Maschinenbefehl der an der addresse ist an der du hooken willst nun keine 5bytes groß ist sondern z.b. 6 bytes das du nicht nur 5 bytes ins trampolin sicherts sondern 6bytes. Andererseits wen der Maschienenbefehl nur 4bytes groß ist dan must du den nächsten Maschinenbefehl der z.b. 3bytes groß ist mit sichern also im trampolin platz für 7 bytes machen.
Ansonsten müsstest du beim hooken in der mitte einer funktion darauf achten das sich die Stack Pointer verändern können was man beim ansprechen von Parametern und lokalen variablen berücksichtigen sollte.
Akorn is offline  
Old 12/30/2011, 21:23   #60


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
@yihaaa: Blödsinn. Ein Detour ist im Grunde eine Codecave.

Da MS Detours automatisch die zu sichernde Menge an Bytes erkennt brauchst du nichts weiter beim Detour selbst beachten.
Du setzt den Detour einfach auf AdresseDerFunktion+OffsetAnDemDuDenJumpHabenMöchte st.

Was du aber beachten musst, sind eventuelle Stackzugriffe und Register.
Du musst dann auf jeden Fall deine Funktion als naked definieren, damit sie keinen Stackframe erstellt! Außerdem darfst du keine lokalen Variablen verwenden!
Und wenn du die Register brauchst (da man normalerweise mit einem Detour etwas verändern möchte und das Rechnungen/Speicherzugriffe/Funktionsaufrufe hervorruft, braucht man die fast immer) musst du die vorher alle auf dem Stack sichern! (pushad und pushfd)
Wenn du inline ASM nutzt, kannst du auch manuell die Register sichern, die du nutzt und sparst so etwas Rechnerei.
Ach ja und natürlich musst du auf die Parameter auch per inline ASM zugreifen, da du keine Parameter deklarieren solltest (denn der Compiler geht bei der Codegenerierung davon aus, dass die Parameter beim Aufruf an der Stelle sind, an der er sie erwartet, was bei eine Detour mitten in der Funktion aber nicht der Fall sein wird).
Außerdem weiß ich nichtmal, ob das überhaupt ginge, da afaik dafür ein Stackframe benötigt wird, der ja nicht erstellt wird.

Bei __stdcall Funktionen ist das einfach, da greifst du auf eventuelle Parameter mit dem EBP Register zu.
Bei __cdecl Funktionen wirst du, da man mit esp arbeitet, selbst das richtige Offset für die Parameter berechnen müssen (welches durch jedes PUSHen und POPen (auch durch das Sichern der Register) beeinfusst wird).

Quote:
Wen du ein hook setzten willst musst du ja 5bytes (jmp+sprungweite) überschreiben. Nun musst du aber darauf achten das wen der Maschinenbefehl der an der addresse ist an der du hooken willst nun keine 5bytes groß ist sondern z.b. 6 bytes das du nicht nur 5 bytes ins trampolin sicherts sondern 6bytes. Andererseits wen der Maschienenbefehl nur 4bytes groß ist dan must du den nächsten Maschinenbefehl der z.b. 3bytes groß ist mit sichern also im trampolin platz für 7 bytes machen.
Das gilt auch für den Funktionsanfang und ist bei MS Detours belanglos.
MrSm!th is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
[Tutorial] Microsoft Detours
07/24/2013 - Coding Tutorials - 74 Replies
Eine kleine .dll wird geschrieben, die mithilfe der Microsoft Detours Library die MessageBoxA Funktion detourt, und den Text ersetzt, sobald sie in einen Prozess injeziert wird. Ich hoffe ich konnte es einigermaßen verständlich erklären (mein Gedankenfluss ist manchmal etwas wirr). Es ist auf Deutsch. Detours Video Tutorial
[Video Tutorial] - Very Easy Tutorial How to make your Own Wallhack in C++
09/01/2012 - Soldier Front Hacks, Bots, Cheats & Exploits - 16 Replies
Hello Everyone!Hellow Philippines - Mabuhay Pinoy Cheaters! Confidentials000 of GZP and Me Babyface21 ay iisa lang! Today i Will Teach you on How to Make Your Own Wallhack in C++ Very Simple By Video Tutorials Step by Step Part 1 - 3 Dont Ask me to Release my Private Wallhack coz i Need it to still Undetected
[cSRO] IPMana 1.0 - Tutorial & Video Tutorial
02/12/2011 - SRO Hacks, Bots, Cheats & Exploits - 6 Replies
Hi all, I'm just posting here for those that have problems setting up the IPMana. First normal tutorial, the Video Tutorial will be at the bottom of the thread. Whats IPMana ? IPMana is similar to QQdaili its just like a proxy program to reduce the lag in cSRO. How can i use IPMana ?



All times are GMT +1. The time now is 22:27.


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.