Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#10

Re: Mausrad abfangen - drehung außerhalb der anwendung erken

  Alt 20. Dez 2006, 12:03
Zitat von alzaimar:
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.
Die Injektion nimmt Windows vor. Das hat also schon seine Richtigkeit und ist auch was Luckie meint. Was er allerdings übersehen hat, ware die Tatsache, daß die Journal-Hooks auch aus einer EXE heraus global operieren können. Und der Begriff Hardware-Hook war ohnehin für die Katz.

Das mit dem Abschiessen des Systems war bis Windows ME ein Problem. Heute nicht mehr

Zitat von alzaimar:
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.
Nein, der simple Grund ist, daß nur eine DLL in mehreren Prozessen gleichzeitig existieren kann. Wenn du das überprüfen möchtest, kannst du gern mal in deiner Hookfunktion den Rückgabewert von GetCurrentProcessId() ausgeben lassen

Zitat von alzaimar:
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.
SetWindowsHookEx erledigt das für dich. Fensterhooks (worüber wir hier reden) haben nichts, aber auch garnichts mit API-Hooks zu tun!
  Mit Zitat antworten Zitat