Frage

Ich habe versucht, zu einem Remote-Prozess eine benutzerdefinierte recv () winsock2.0 Methode Haken, so dass meine Funktion ausführt, statt des einen in dem Prozess, ich habe das schon googeln und ich fand einige wirklich gutes Beispiel, aber sie Fehlen Beschreibung

typedef (WINAPI * WSAREC)( SOCKET s, char *buf, int len, int flags ) = recv;

Nun meine Frage ist, was bedeutet das, oder tut, das ist so etwas wie ein Zeiger auf die realen recv () Funktion?

Und dann das andere Stück Code für die benutzerdefinierte Funktion

int WINAPI Cus_Recv( SOCKET s, char *buf, int len, int flags ) 
{
    printf("Intercepted a packet");

    return WSAREC( s, buf, len, flags ); // <- What is this?
}

Sorry, wenn diese Fragen wirklich grundlegende klingen, ich lerne nur gestartet 2 oder 3 vor Wochen. Danke.

War es hilfreich?

Lösung

Wo haben Sie so ein Beispiel nennen?

Die erste Zeile versucht, einen neuen Typ WSAREC zu definieren, der ein Zeiger auf eine Funktion ist dieselbe Signatur wie recv() aufweist. Leider ist es auch versucht, eine Variable dieses Typs zu deklarieren die Adresse der recv() Funktion zu speichern. die typedef ist falsch, da die Funktion einen Rückgabetyp fehlt. so ist es nicht kompiliert unter Visual Studio 2003.

Sie können mehr Glück mit:

int (WINAPI * WSAREC)( SOCKET s, char *buf, int len, int flags ) = &recv;

, die nur eine Variable vom Typ „Zeiger auf Funktion“ erklärt, die speichert die Adresse des recv().

nun das zweite Snippet ist eine Funktion, die die gleiche Signatur wie die recv()function hat, die eine Meldung ausgibt, ruft dann die ursprüngliche recv() durch den Funktionszeiger oben erklärt.

Sie den Code hier nur zeigt, wie eine Funktion über einen Zeiger nennen: es nichts im aktuellen Prozess ersetzen.

Ich bin auch nicht sicher, können Sie mit einem anderen Prozess stören und eine Funktion an Ihrem Willen ersetzen. es wäre eine große Bedrohung für die Sicherheit des Systems sein. aber warum würden Sie tun, dass in erster Linie ??

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top