Instalarea capcanelor în ferestre

Astăzi vom vorbi despre instalarea de cârlige (capcane) în Windows. Cârligul este un mecanism de interceptare a mesajelor, prin stabilirea unei funcții speciale pe partea superioară a teancului funcțiilor de cârlig a sistemului. Fără instalarea unor astfel de capcane, este aproape imposibil să se renunțe la diferite instrumente de administrare la distanță, spyware și alte programe care într-o oarecare măsură controlează utilizatorul care utilizează Windows. Hook'i sunt globale (pentru întregul sistem) și locale (pentru orice flux).

Puteți instala în sistemul de cârlig folosind funcția SetWindowsHookEx (), cu următorul antet:

HHOOK SetWindowsHookEx (int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD
dwThreadId);

Dacă nu înțelegeți codul Sy-shny, antetul lui Delphi arată astfel:

SetWindowsHookEx (idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId:
DWORD): HHOOK;

Funcția SetWindowsHookEx () returnează un descriptor dacă cârligul este setat și returnează 0 dacă apare o eroare.
Să examinăm mai atent toți parametrii de intrare ai acestei funcții:

1. idHook - constantă, determină tipul de cârlig care este instalat. Poate lua una dintre următoarele valori:

WH_CALLWNDPROC - Transmite mesaje înainte de a trimite la funcția de fereastră și se apelează la trimiterea unui mesaj la procedura ferestrei. O captură este declanșată de fiecare dată când este apelată funcția SendMessage.

WH_CALLWNDPROCRET - Controlează mesajele după ce sunt trimise la funcția de fereastră.

WH_CBT - Chemat să se ocupe de cele mai multe casete de mesaj, mouse-ul, și tastatură (creând ferestre, ferestre de activare, ferestre, distrugand dimensiunea ferestrei schimbare, înainte de a instala focalizare itp)

WH_DEBUG - Chemată înainte de orice altă capcană. Util pentru depanarea cârligelor.

WH_GETMESSAGE - Chemat când se citește un mesaj din coada de aplicații.

WH_HARDWARE - Se numește când se citește un mesaj din hardware-ul instalat pe computer din coada aplicației.

WH_JOURNALPLAYBACK - Chemat când se citește un mesaj din coada de sistem. Este folosit pentru a adăuga evenimente de sistem la coadă.

WH_JOURNALRECORD - Chemat când se solicită un eveniment din coada de sistem. Este folosit pentru a înregistra evenimentele sistemului.

WH_KEYBOARD - Chemat când mesajul din coada aplicației citește WM_Keydown sau WM_Keyup. Una dintre cele mai comune capcane este.

WH_MOUSE - Chemat când se citește un mesaj de mouse din coada aplicației.

WH_MSGFILTER - Se numește atunci când mesajul trebuie procesat de caseta de dialog a aplicației, de meniu sau de aplicație.

WH_SHELL - Numit când ferestrele de nivel superior sunt create și distruse sau când aplicația shell trebuie să devină activă.

2. lpfn este un pointer la funcția de cârlig propriu-zis. Titlul ei:

funcția HOOKFUNCTION (cod: Integer; Wparam: WPARAM; lparam: LPARAM): LRESULT
stdcall;

Valorile parametrilor de intrare depind de tipul de cârlig. Dacă puneți un cârlig global, această funcție trebuie să fie în dll.

3. hmod - ia valoarea hInstance sau a descriptorului DLL (în capcane globale).

4. dwThreadId - identifică firul în care este inserată capcana. În cârligele globale, acest parametru trebuie să fie 0.

Pentru a elimina cârligul instalat, există funcția UnhookWindowsHookEx (). Ca parametru, trebuie să utilizați un pointer (descriptor) pe funcția de cârlig (valoarea returnată de funcția SetWindowsHookEx ()).

Ei bine, asta e tot, cu elementele de bază pe care le cunoști. Acum vom scrie un mic program de benzi desenate care pune cârligul pe mesajul de citire al mouse-ului (WH_MOUSE). Fă-o, astfel încât atunci când apăsați butonul mouse-ului dreapta ascunde butonul „Start“, făcând clic pe stânga - există, mediu - a schimbat titlul ferestrei active. Funcția de cârlig va fi în DLL. În plus, în dll vor exista două proceduri - sethook () și removehook (), respectiv, setarea și îndepărtarea capcanei.

Iată codul pentru biblioteca dll:

- lib.dll -

utilizări
ferestre, mesaje;
var
H. Thandle;

- lib.dll -

În programul propriu-zis, cârligul va fi setat printr-un apel din DLL al procedurii de setare, șters prin apelarea procedurii de eliminare. Un exemplu de instalare și eliminare a cârligului, precum și biblioteca sursă DLL se află în arhiva atașată.

Distribuiți acest articol cu ​​prietenii dvs.:

  • Acum 23 minute

Necurs a învățat cum să realizeze capturi de ecran și să le spună operatorilor problemele

Într-o rețea întunecată, pentru 5.000 de dolari, ei vând un mic sat, ceea ce face ATM-urile "scuipă" bani

Trusted Platform Module-ul Infineon Technologies este vulnerabil, iar cheile RSA sunt nesigure

Ce furnizori au reparat deja vulnerabilitățile asociate cu WPA2 și atacul KRACK

Specialiștii de la Doctor Web au studiat o backdoor scrisă în Python

Articole similare