ein call befindet sich an einer bestimmten adresse mit bestimmten parametern im speicher des klienten. wenn du diese sachen weißt dann wird das nicht so schwer sein
ich denk aber eher daran : wieso überhaupt detouren , wenn du ehh weißt wo die adresse liegt o.0? dann einfach direkt in c++ callen lassen?
Bei einem Detour geht es darum eine Funktion um zu Leiten, das braucht man wenn man zum Beispiel wissen möchte welche Parameter das Programm der Funktion übergeben hat um diese dann Gegebenenfalls zu ändern oder damit etwas an zu stellen.
Es gibt viele Dinge die ohne einen Detour nicht praktikabel um zu setzten sind, dazu gehört es zum Beispiel Datenpakete abzufangen, außerdem kann man durch einen Detour Code innerhalb eines fremden Threads ausführen, was man oft Benötigt wenn man überhaupt Funktion des Programms/Spiels ausführen möchte, da diese oftmals Thread lokale Variablen verwenden.
Wie du siehst unterscheidet sich die Verwendung eines Detours stark vom Aufrufen einer Funktion des Programms und die Problemstellung die dem zu Grunde liegt ist auch eine andere, darum stellt sich die Frage
Quote:
wieso überhaupt detouren , wenn du ehh weißt wo die adresse liegt o.0? dann einfach direkt in c++ callen lassen?
Bei einem Detour geht es darum eine Funktion um zu Leiten, das braucht man wenn man zum Beispiel wissen möchte welche Parameter das Programm der Funktion übergeben hat um diese dann Gegebenenfalls zu ändern oder damit etwas an zu stellen.
Es gibt viele Dinge die ohne einen Detour nicht praktikabel um zu setzten sind, dazu gehört es zum Beispiel Datenpakete abzufangen, außerdem kann man durch einen Detour Code innerhalb eines fremden Threads ausführen, was man oft Benötigt wenn man überhaupt Funktion des Programms/Spiels ausführen möchte, da diese oftmals Thread lokale Variablen verwenden.
Wie du siehst unterscheidet sich die Verwendung eines Detours stark vom Aufrufen einer Funktion des Programms und die Problemstellung die dem zu Grunde liegt ist auch eine andere, darum stellt sich die Frage überhaupt nicht.
eine frage hätte ich zudem noch : in dem tutorial von schlurmann ( send funktion von metin hooken und benutzen ) kann er eine funktion callen (ohne detours ) und das mit einer simplen dll injection .
es geht also doch auch ohne detours wie ich das sehe oder irre ich mich da?
eine frage hätte ich zudem noch : in dem tutorial von schlurmann ( send funktion von metin hooken und benutzen ) kann er eine funktion callen (ohne detours ) und das mit einer simplen dll injection .
es geht also doch auch ohne detours wie ich das sehe oder irre ich mich da?
ich lasse mich gerne belehren
Das lässt sich mittels Function Pointer realisieren.
Ich glaub ihr verwechselt hier etwas. Detours sind nicht da um irgendwelche Funktionen zu callen. Sie sind da um, wie der Name schon sagt, eine Funktion umzuleiten. Wenn diese Funktion vom Programm aufgerufen wird, wird erst der Call/Jump zu einer anderen Funktion ausgeführt, am Ende der Funktion wird dann wieder zum Original zurückgesprungen. Der Stack verändert sich beim Jump nicht und so kann man sogar sehr komfortabel auf die Parameter zugreifen (das geht auch beim Call, nur muss dann beachtet werden, dass ganz oben auf dem Stack die return Adresse liegt), nützlich zum Beispiel wenn man bestimmte Funktionsparameter überwachen/verändern möchte.
Detours müssen auch nicht am Funktionsanfang stehen, oft ist ein Detour an einer anderen Stelle sehr hilfreich, wenn man zum Beispiel Register an einer bestimmten Stelle auslesen möchte.
Ich glaub ihr verwechselt hier etwas. Detours sind nicht da um irgendwelche Funktionen zu callen. Sie sind da um, wie der Name schon sagt, eine Funktion umzuleiten. Wenn diese Funktion vom Programm aufgerufen wird, wird erst der Call/Jump zu einer anderen Funktion ausgeführt, am Ende der Funktion wird dann wieder zum Original zurückgesprungen. Der Stack verändert sich beim Jump nicht und so kann man sogar sehr komfortabel auf die Parameter zugreifen (das geht auch beim Call, nur muss dann beachtet werden, dass ganz oben auf dem Stack die return Adresse liegt), nützlich zum Beispiel wenn man bestimmte Funktionsparameter überwachen/verändern möchte.
Detours müssen auch nicht am Funktionsanfang stehen, oft ist ein Detour an einer anderen Stelle sehr hilfreich, wenn man zum Beispiel Register an einer bestimmten Stelle auslesen möchte.
also könnte ich zum beispiel wenn ich eine msgbox detoure irgendeinen schrott ausführen lassen der nichts mit dem call zu tun hat?
hm
ich hol den Thread mal wieder hoch, weil ich ein kleines Problem habe (sowohl auf win7 als auch auf XP!)
Also ich injecte die DLL mit Winject und Winject sagt mir auch, dass alles geklappt hat (und beim nochmaldigen Drücken, dass die DLL schon geladen wurde!), aber trotzdem wird die MessageBox nicht gehooked.
Da ich kein Freund von C&P bin, habe ich mein eigenes Testprogramm geschrieben:
Ich vermute es liegt daran, dass zwar die DLL geladen wird, aber der Code nicht ausgeführt.
Woran kann es liegen (unter XP mit Admin Konto angemeldet, unter w7 ausgeführt als Admin)?
Ich weiß zwar nicht, wo der Unterschied zwischen der Schreibweise von Schlurmann und meiner ist, aber es geht^^
Das mit der lib verstehe ich auch nicht, da sie schon im Header gelinkt wird, aber ich habe es mal so wie Schlurmann sicherheitshalber gemacht und es gab trotzdem keine Fehler von wegen 2 mal das selbe gelinkt oder so^^
Naja dann versuche ich mal mit dieser Schreibweise meine kleine MessageBox Dll zu machen.
@Schlurmann:
Wolltest du nicht auch noch ein Tutorial machen, wie man Parameter etc. bei Nicht-Api-Funktionen rauskriegt?
Ich will so einiges. Vorwiegend will ich aber mein Abitur.
Na dann viel Glück
Ich mach meins in 3 Jahren.
Weißt du zufällig, wie detours.h implementiert ist?
Ich wollte eine eigene kleine Klasse schreiben, die einem mehr Möglichkeiten bietet, aber im komm beim Schreiben der Opcodes nicht weiter...
nichtmal was ganz einfaches was eigentlich klappen müsste wie
Code:
memcpy(IsDebuggerPresent,Opcodes,5); /*egal was, es klappt nicht, wenn ich aber stattdessen
einen Pointer zu einer eigenen Variable bei Dst angebe, klappts, logisch,
aber warum nicht bei Funktionen?*/
bringt die DllMain schon dazu, nicht zu returnen (Winject sagt, injecten fehlgeschlagen, obwohl die MessageBox in meiner DllMain kam; in der Liste der executable Modules ist die Dll aber auch nicht....)
MS Detours 1.5 07/16/2010 - Kal Online - 10 Replies hi,
i'm having problem trying to compile my dll using ms detours 2.1 (not 1.5, sorry)
detours.lib(detours.obj) : error LNK2001: unresolved external symbol "struct HINSTANCE__ * __stdcall Detoured(void)" (?Detoured@@YGPAUHINSTANCE__@@XZ)
G:\KalOnline\d3dx9_29.dll : fatal error LNK1120: 1 unresolved externals
could someone tell me how to solve it?
could not google it.
Can EDX Detours be used for multibotting 06/19/2010 - SRO Private Server - 12 Replies After editing source code can this be done? In EDX Detours thread he wrote this app can be used for another programs after tweaking the source. But i don't have any programming skills,so anyone who knows c++ please take a look at it http://www.elitepvpers.com/forum/sro-guides-templat es/308740-guide-using-windows-detours-redirect-sil kroad-proxy.html