Mir ist nicht bekannt, das die
DLL in jeden Prozess injiziert werden muss. Es ist aber so, das (nach meinem Halbwissen) Windows es nicht zulässt, das eine EXE einen globalen Hook einrichtet, denn wenn die EXE wegballert, ohne den Hook wegzunehmen, schießt sich dadurch Windows ab.
Also hat MS sich gedacht: Globale Hooks nur in
DLL. Du schreibst also eine kleine Hook-
DLL, lädst die permanent und initialisierst aus dem
DLL-Code heraus den Hook. Nun sieht Windows, das der Hook aus eine
DLL zeigt und die Welt ist in Ordnung, denn Windows kontrolliert, wann die
DLL wieder aus dem Speicher verschwindet. Über ein Callback realisierst Du die Benachrichtigung, das etwas passiert ist.
Ich denke mal, das meint Luckie et al. mit 'injizieren', oder? Leider finde ich meine
DLL nicht mehr, die das so gemacht hat. Ich weiss nur noch, das man den
DLL-Initialisierungscode (DllMain) selbst schreiben muss, damit das klappt.
Das hier hab ich bei torry gefunden. Ich habe es nicht getestet, aber vielleicht hilft es Dir (und ist eine Alternative zu Luckies Methode).