Start- und Endadresse einer geladenen dll ermitteln
-
Moin Moin,
wie der Titel schon sagt, versuche ich die Start und die Endadresse einer geladenen DLL zu kommen.
Folgender Hintergedanke :
Ich ermittele derzeit die exportierten Funktionen einer DLL und würde diese mit der Start und Endadresse abgleichen. Sollte eine Funktion ausserhalb dieses Adressraumes liegen, so müsste die Funktion doch gehooked sein oder ?
Viele Grüße
-
Du kannst über die geladenen DLL's (Modules) iterieren und zusatz Informationen abfragen.
http://msdn2.microsoft.com/en-us/library/ms682489.aspx
Simon
-
simon.gysi schrieb:
Du kannst über die geladenen DLL's (Modules) iterieren und zusatz Informationen abfragen.
http://msdn2.microsoft.com/en-us/library/ms682489.aspx
SimonDas klappt prima.
Vielen Dank.
-
BTW: Die Startadresse einer DLL ist ihr Handle, das druch GetModuleHandle oder LoadLibrary returniert wird.
-
Und: alle "gehookten" Funktionen findest du nicht wenn du nur die Einsprungadressen anguckst, denn es gibt auch eine Hooking-Technik wo die ersten paar Byte einer Funktion überschrieben werden.
-
Api schrieb:
Sollte eine Funktion ausserhalb dieses Adressraumes liegen, so müsste die Funktion doch gehooked sein oder ?
Nicht unbedingt. Die Funktion könnte dann auch "geforwarded" sein.
-
Das einfachste ist sicherlich GetModuleInformation: http://msdn2.microsoft.com/en-us/library/ms683201(VS.85).aspx
Sollte ja wenigstens für eigene DLLs bzw. DLLs ohne forwards helfen - schützt Dich aber auch nicht davor, daß jemand Dir ein anderes DLL unterschiebt.