[Tutorial] Microsoft Detours

06/03/2009 19:53 schlurmann#31
Quote:
Originally Posted by volchok View Post
Ist daran etwas falsch ?
Du callst die original MessageBox Funktion, dann landest du natürlich bei mybox und callst wieder usw., das ist 'ne Endlosschleife. Wenn du eine normale MessageBox benutzen willst calle einfach dein Trampolin.

Code:
int WINAPI mybox (HWND hwnd, char* lpText, char* lpCaption, UINT uType)
{
origbox(hwnd, "erster", "MB", uType);
return origbox( hwnd, lpText, lpCaption, uType );
}

Quote:
Originally Posted by volchok View Post
Und wenn ich jetzt eine "nicht-API-Funktion" hooken möchte kann ich mir doch einfach die Adresse mit z.B. IDA holen und die Adresse als Hex dann im ersten Parameter verwenden oder ?
Theoretisch ja, kommt natürlich immer auf die Funktion an. Die Parameter solltest du kennen genauso wie die Calling Convention und ob es eine Memberfunktion ist.

Quote:
Originally Posted by volchok View Post
Aber mal eine Frage zum ersten Parameter der DetourFunction, lässt sich jede WinApi Funktion so leicht hooken indem man lediglich den Namen der Funktion angibt ?
Ja. Solange du die Header Datei hast sowie die .lib gelinkt einfach über
Code:
&Funktionsname
bzw.
Code:
Funktionsname
auf die Startadresse zugreifen.
06/03/2009 20:20 volchok#32
Vielen Danke RDTSC und Schlurmann.
Die Originalfunktion aufzurufen ist natürlich echt sehr blöd, sehe ich ein :}
06/03/2009 21:22 __wadim#33
könnte man das in den sticky bereich schieben?
09/04/2009 13:51 Gianotti#34
vote for sticky
09/04/2009 14:32 Adroxxx#35
#sticked und bei [Only registered and activated users can see links. Click Here To Register...] aufgenommen.
09/07/2009 16:50 Billy_Gates#36
Ich bevorzuge [Only registered and activated users can see links. Click Here To Register...]. Es ist billiger, aber es funktioniert viel besser!
09/15/2009 21:08 rolubo#37
Hab Probleme damit ne Funktion aus einer DLL zu hooken(also die Funktion wird im "Opferprogramm" aus einer anderen dll geladen(ws2_32.dll)) .
Hab nirgends exliziet dazu was gefunden,meistens leider nur global hooks.PLS HELP
Benutze Detours Express 2.1
09/16/2009 14:52 Akorn#38
Quote:
Originally Posted by rolubo View Post
Hab Probleme damit ne Funktion aus einer DLL zu hooken(also die Funktion wird im "Opferprogramm" aus einer anderen dll geladen(ws2_32.dll)) .
Hab nirgends exliziet dazu was gefunden,meistens leider nur global hooks.PLS HELP
Benutze Detours Express 2.1
Einfach so machen wie es im Tutorial von schlurmann gemacht wird.
Die MessageBox funktion die im tut gehookt wird liegt ja auch in einer DLL, ich mein in der USER32.dll oder so.
09/16/2009 17:24 rolubo#39
Quote:
Originally Posted by Akorn View Post
Einfach so machen wie es im Tutorial von schlurmann gemacht wird.
Die MessageBox funktion die im tut gehookt wird liegt ja auch in einer DLL, ich mein in der USER32.dll oder so.
Ja hab ich ja gemacht,habs schon mit detours Express 1.5 und 2.1
versucht aber sobald meine Funktion gecallt wird und ich die erste
Ausgabe geschieht in der übrigens "buf" leer ist komischerweise
bekomm ich einen engine.exe Fehler :(
Meine recvFunktion sieht so aus:

int MyRecv(SOCKET s, const char FAR * buf , int len, int flags)
{
cout << "Gib mir Packete bitte : " << *buf <<endl;
return origRecv(s, buf, len, flags);

}



OllyDbg funktioniert überhaupt nicht wärend das "Opferprogramm" läuft,alles detected sogar mit rootkit und mit IDA kenn ich mich 0 aus.


edit:wenn ich send() detoure gibts sogar "There is a problem with function of AntiHacking"
und "Opferprogramm" geht natürlich aus xD
09/16/2009 17:42 schlurmann#40
Quote:
Originally Posted by rolubo View Post
cout << "Gib mir Packete bitte : " << *buf <<endl;
Mit *buf adressierst du nur den ersten Character.
09/16/2009 20:12 rolubo#41
Quote:
Originally Posted by schlurmann View Post
Mit *buf adressierst du nur den ersten Character.
jaja,ich hat das auch schon anders,also buf[0],buf[1] und so,
das hat aber nix mit dem engine.exe Problem zu tun :/
09/16/2009 20:39 schlurmann#42
Quote:
Originally Posted by rolubo View Post
jaja,ich hat das auch schon anders,also buf[0],buf[1] und so,
das hat aber nix mit dem engine.exe Problem zu tun :/
Das ist genauso dumm, du willst doch den ganzen Buffer ausgeben.

Aber Packets haben ohnehin eine Struktur in der oft ein 0x0 vorkommt, aber das Paket noch nicht zu ende ist. operator<< gibt aber nur aus bis es ein 0 Byte findet, schreib dir eine eigene Schleife.
09/16/2009 20:45 rolubo#43
Quote:
Originally Posted by schlurmann View Post
Das ist genauso dumm, du willst doch den ganzen Buffer ausgeben.

Aber Packets haben ohnehin eine Struktur in der oft ein 0x0 vorkommt, aber das Paket noch nicht zu ende ist. operator<< gibt aber nur aus bis es ein 0 Byte findet, schreib dir eine eigene Schleife.
Jaja,natürlich.Es ging ja nur ersmal darum,dass ich überhaupt "etwas"
sehe,also das ich weiss das ich was empfange.
Habs dann doch noch hinbekommen,hatte wo anders n Fehler
und hab auch schnell ne schleife geschrieben die mir den ganzen buf ausgibt+ unnützes aussortiert,läuft
DANKE :D
11/28/2009 00:34 xWaffeleisen#44
Sehr schönes Tutorial :)

Nur wie macht man jetzt so einen Detour für eine Funktion, z.B. in einem Spiel oder ähnlichem. Da muss man ja irgendwie die Adressen angeben. Ein Tutorial dazu fände ich echt Klasse und sehr hilfreich.
11/28/2009 12:51 Gianotti#45
Quote:
Originally Posted by xWaffeleisen View Post
Sehr schönes Tutorial :)

Nur wie macht man jetzt so einen Detour für eine Funktion, z.B. in einem Spiel oder ähnlichem. Da muss man ja irgendwie die Adressen angeben. Ein Tutorial dazu fände ich echt Klasse und sehr hilfreich.
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?