Problem mit API-Hook (Detours)
-
Hi.
Ich wollte mal ein Programm überwachen. Da dachte ich mir, es wäre doch eine tolle Idee einfach entsprechende Funktionen zu hooken. Naja, ich komme gleich zum Code für eine DLL die per Detours socket() hooken soll:DLL: http://nopaste.org/p/aDTfRZB7c
Ja ich weiß, gruseliger Code.
Nun...mein Problem ist dass viele Programme gar nicht starten bzw sie generell abstürzen etc. Was daran ist mein Fehler?
Hier mal ein Beispiel beim Testen mit µTorrent:
http://i31.tinypic.com/jfyt8k.jpgNoch eine andere Frage. Bei vielen Programmen lässt sich der Hook nicht installieren, also die Ws2_32.dll wird nicht geladen. Könnte das daran liegen dass viele Sprachen eigene Implementierungen der Socket-Verbindungen haben oder stellt Windows noch mehr Möglichkeiten zur Auswahl?
Grüße
-
schonmal was anderes anstatt MS Detours probiert?
void *DetourFunc(BYTE *src, const BYTE *dst, const int len) { BYTE *jmp = (BYTE*)malloc(5+len); DWORD dwback; VirtualProtect(src,len,PAGE_READWRITE,&dwback); memcpy(jmp,src,len); jmp += len; jmp[0] = 0xE9; *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5; src[0] = 0xE9; *(DWORD*)(src+1) = (DWORD)(dst - src) - 5; VirtualProtect(src,len,dwback,&dwback); return (jmp-len); } //--------------------------------------------------------------------------- typedef SOCKET (__stdcall *tSocket)(int af, int type, int protocol); tSocket trueSocketFunction; ... tSocket = (trueSocketFunction)DetourFunc((BYTE*)GetProcAddress(GetModuleHandle("Ws2_32.dll"), "socket"),(BYTE*)hookedSocketFunction,5);greetz KN4CK3R
-
Vergiss die Frickelkacke da oben.
MS Detours rul0rt.Schreib:
tSocket trueSocketFunction = socket;Vergiss das GetProcAddress().
-
die Frickelkacke funktioniert wunderbar und lässt sich gut für seine Zwecke anpassen.
greetz KN4CK3R
-
Achso, Detours braucht umsonst vier Funktionsaufrufe, um einen Hook zu setzen. Drei davon machen nichts. Achsooo...
-
scheint so, wie du siehst reicht ja die eine Funktion

greetz KN4CK3R
-
Funzt das bei jeder Funktion: Nein
Absturzgefahr: Erhöht
Threadsafe: NeinAlso laber nicht.
-
gib mir ne Beispielfunktion wo es nicht funktioniert
greetz KN4CK3R
-
[Hier stand etwas, was hier nie stehen sollte] :p
-
Hallo das Thema ist zwar schon alt aber ich hoffe trotzdem auf eure Hilfe!
Ich bin ein Neuling in sacehn c++ aber ich sitze seit Tagen schon daran, die send und recv Funktion von Firefox mithilfe einer c++ dll zu hooken ... bisher erfolglos
Mein Problem ist, das ich sowas zum ersten mal mache... Würde mich über Tipps und Anregungen freuen
(vllt ein gutes Tut, gute Beispiele usw...)