Hi Thomas,
mit dem IAT Hook werden jedoch nicht alle Aufrufe der API abgefangen, sondern nur alle statischen (logisch: da nur diese in der IAT stehen). Der Codehook, wenn er denn funktioniert, fängt jedoch alle ab.
Über Vor- und Nachteile kann man sich hier informieren:
help.madshi.net/ApiHookingMethods.htm
Madshi bietet selbst (leider nur kommerziell, früher gabs auch eine freie Version) ebenfalls eine weitaus ausgereiftere Version zum API hooken an.
Eine von mir erweiterte Version des IAT Hooks wäre der Relcoation hook, der die Relocation Section der PE Datei nach JMP [ADDR] durchsucht und diese auch noch mithookt. Dann können einige dynamisch geladenen Funktionen zusätzlich zum IAT gehookt werden.
PUSH ADDR, RET ist auch eine von mir eingeführte Art des JUMPs. Dieser Jump ist genau wie ein relativer Jump nur 6Bytes groß, hat aber den Vorteil, dass man diesen widerum einfach durch Codekopieren hooken kann. So kann man die selbe API mehrmals hooken ohne den relativen Code anzupassen.
Das relative Adressen angepasst werden müsste noch implementiert werden. Da hast du richtig gesehen, dass es noch nicht in der derzeitigen Version implementiert wird. Alternativ kannst du die WideChar API hooken, da sowieso jeder Call der A in den Aufruf der W Version endet. Und dort sollte (hoffentlich) kein relativer Call am Anfang der Funktion sein.