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
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.
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)
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)
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.
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))
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?
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.
@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.
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
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.
@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.
[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 ?