Re[4]: [so] Intrebari tema 2

Catalin Alexandru so@cursuri.cs.pub.ro
Sat, 13 Nov 2004 17:53:06 +0200


 

> Nu prea vad ce ai putea sa faci cu hookul ala... Poti sa elaborezi?

E destul de simplu:

 - in dll faci o functie GetMsgProc(), care nu face decat sa cheme
urmatoarea functie in lantul de hook-uri; nu ne intereseaza functia
in sine, doar faptul ca obtinem acces gratuit la mecanismul de 
injectie oferit de sistemul de operare.
 - din server incarci dll-ul, obtii un pointer la functia GetMsgProc()
si chemi SetWindowsHookEx() folosind functia asta. Toate procesele or 
sa adauge functia asta in lant, ocazie cu care o sa incarce si dll-ul.

Singura chestie e ca trebuie ca dll-ul sa contina o sectiune de 
date "shared" pentru a permite ca toate procesele sa vada handle-ul
hook-ului (intors de SetWindowsHookEx).

Frumos la metoda asta este ca dll-ul poate fi descarcat printr-un
apel la UnhookWindowsHookEx().

Dar, data fiind modificarea temei, chestiile astea nu mai conteaza :)

Catalin