Entwickler-Ecke

Windows API - Hook auf funktionspointer


Aya - Do 10.01.08 20:46
Titel: Hook auf funktionspointer
Hi,

ich habe mir einen Hook gebastelt um abzufangen wenn ein Programm eine gewisse funktion aufruft. Das klappt soweit auch wunderbar, allerdings nur solange, wie die funktion von einer EXE aufgerufen werden... wenn eine DLL sie aufruft versagt mein Hook :(

Weiß jemand woran das liegen kann??

Aya~


Xentar - Do 10.01.08 21:42

Ich selber kenn mich mit Hooks nicht aus.
Und ich vermute mal, dass man dir ohne Quellcode nur wenig helfen kann?


uall@ogc - Sa 12.01.08 21:01

kommt auf den Hook an (Import/Export/Code etc.) und bist sicher dass die selbe Funktion von der Dll aufgerufen wird?


BenBE - Sa 19.01.08 00:27

Zusatzfrage: Globaler oder Prozess-Lokaler Hook?
IAT, ETH, BCO oder anderer Hook?

Wie sieht dein Hook aus???


AHT - Di 29.01.08 14:41

Ohne zu wissen, wie du da genau hookst, lässt sich das wirklich nicht sagen.
Manche Programme und DLLs ermitteln die Einsprungsadressen ihrer Importfunktionen einmalig beim Starten und sprechen diese Funktionen dann später über ein Call an (unter Umständen mehr Geschwindigkeit). Hookst du über IAT, hat die DLL sich evtl. schon vor dem Ändern der Pointer die Adressen für ihre Funktionen geholt.

Mit TNT [http://www.delphi-forum.de/viewtopic.php?t=80254] könntest du ja mal schauen, ob deine Pointer oder OP-Codes richtig ausgetauscht wurden.

Desweiteren gibt es auch ein paar sehr wirkungsvolle Methoden, Usermode Hooks einfach zu umgehen und damit auszuschalten.

Gruß

AHT