Eigene DLL zwischen Anwendung und richtiger DLL zwischenschalten
-
Hallo!
Gibt es eine Möglichkeit folgendes zu realisieren?
Es gibt eine Anwendung, welche auf eine DLL zugreift.
Ich möchte nun, dass die Anwendung meine eigene DLL benutzt, statt der, welche es eigentlich will.
Gut, kein Problem. Nennen wir einfach meine eigene DLL so wie die eigentliche.
Dann werden die zu benutzenden Funktionen in meiner DLL gesucht und aufgerufen.
Nun möchte ich aber nicht alle einzelnen Funktionen der ersetzten DLL in meiner ebenfalls exportieren sondern ich möchte einfach, dass jeder Aufruf einer Funktion bei der richtigen DLL landet.
Ich will nur, dass meine DLL zwischengeschaltet wird.
Praktisch:
Anwendung ruft Funktion in meiner DLL auf und meine DLL ruft diese Funktion dann in der richtigen DLL auf.Das alles möchte ich aber realisieren, ohne für alle möglichen Funktionen die Funktion zu deklarieren. Ich stelle mir sowas vor:
[cpp]
EXTERN_C Universal()
{
FARPROC p = GetProcAddress(RealDLL,Functionname);
__asm( mov eax, p
push eax
retn)
}Gibt es da irgendeine Möglichkeit?
Danke!
-
Ja das geht mit einer pragma Anweisung.
#pragma comment(linker, "/export:SomeFunc=DllWork.SomeOtherFunc")Sagt dem Linker daß deine DLL eine Funktion SomeFunc exportiert, beim Aufruf der Funktion wird dann aber SomeOtherFunc in DllWork.dll aufgerufen.
MfG,
*Ranner*
-
Schau Dir mal "detours" von MS an...
-
Ranner schrieb:
Ja das geht mit einer pragma Anweisung.
#pragma comment(linker, "/export:SomeFunc=DllWork.SomeOtherFunc")Sagt dem Linker daß deine DLL eine Funktion SomeFunc exportiert, beim Aufruf der Funktion wird dann aber SomeOtherFunc in DllWork.dll aufgerufen.
MfG,
*Ranner*Aah und ich hab bei meinem DLL Hook massenhaft Funktionen umgeleitet

Danke, für diesen coolen Tipp
Funktioniert aber leider nicht mit DLL-Dateien, welche einen Punkt im Namen enthalten.