Hallo,
Ich will eine Funktion aus einer
DLL abändern bzw. umleiten auf meine eigene.
Wenn also die Funktion X aus der
DLL aufgerufen wird soll die Funktion Y aus meinem Programm ausgeführt werden.
Zur zeit bin ich soweit, dass ich an die Stelle im
DLL-Speicher wo die eigentliche Funktion steht einen Sprung zu
meiner Funktion aus der Exe schreibe. Allerdings ist die Adresse wohl falsch (verständlich da die
DLL eine andere Basisadresse hat).
Zur Zeit mache ich das Sinngemäß so:
AdresseMeineFunktion := @MeineFunktion;
dann füge ich in den
DLL-Speicher folgendes ein (natürlich als
asm-Code):
jmp dword ptr [AdresseMeineFunktion]
Aber wie gesagt stimmt die Adresse innerhalb der
DLL nicht. Wie kann ich die Adresse umrechnen so das die
DLL dann wirklich auf den Speicher der Exe zeigt wo die
DLL liegt.
Gegeben ist:
Adresse der Exe-Funktion
HINSTANCE der EXE
HINSTANCE der
DLL
Adresse der
DLL-Funktion