You are on page 1of 12

Lp trnh C trn Windows

K thut lp trnh Hook (ph lc)


Nguyn Tri Tun Khoa CNTT H.KHTN.Tp.HCM Email: nttuan@ fit.hcmuns.edu.vn

Ni dung

Lp trnh s kin Gii thiu k thut Hook Minh ha cch lp trnh Hook

C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM

Spring 2004

Lp trnh s kin

C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM

Spring 2004

Gii thiu k thut Hook

Hook l g ? Mc tiu ca Hook ? Cc loi Hook Th tc Hook (Hook procedure) Chui Hook (Hook chain)
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 4

Gii thiu k thut Hook Hook l g ?

Hook l mt c ch trong lp trnh s kin, cho php ng dng c th ci t mt hm gim st vo qu trnh lu chuyn cc thng ip ng dng c th chn v x l cc thng ip trc khi n n c ca s/ng dng ch
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 5

Gii thiu k thut Hook Hook l g ? (tt)

C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM

Spring 2004

Gii thiu k thut Hook Hook l g ? (tt)

C 2 cch ci t Hook:
Ci t cc b (Thread Hook): hm gim st c ci vo sau Thread message Queue c tc dng gim st tt c cc thng ip trong mt tiu trnh hay mt ng dng c th Ci t ton cc (Global Hook): hm gim st c ci vo sau Systemd message Queue c tc dng gim st tt c cc thng ip trong ton h thng

Vi Global Hook, hm ci t phi c lu trong mt DLL


C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 7

Gii thiu k thut Hook Mc tiu ca Hook ?

Gim st bn phm: cc ng dng g ting Vit, iu khin thit b bng bn phm, Gim st mouse: Clickn See Theo di vic s dng cc ng dng, Capture screen ng dng dy hc bng my tnh (CBT Computer-based Training)
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 8

Gii thiu k thut Hook Cc loi Hook ? WH_KEYBOARD: Hook gim st thng ip t bn phm: WM_KEYDOWN, WM_KEYUP WH_MOUSE: Hook gim st thng ip t chut WH_GETMESSAGE: Hook gim st thng ip chung (keyboard, mouse, hay cc message khc) WH_CBT: Windows gi hm hook CBT trc khi to lp (create), kch hot (active), hy (destroy), minimize, maximize, di chuyn (move), thay i kch thc (size), ca ca s giao din
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 9

Gii thiu k thut Hook Cc loi Hook ?...(tt)

WH_JOURNALPLAYBACK: cho php a message vo System message queue s dng gi lp hay thc hin li 1 dy cc message ca bn phm hay mouse (playback). y l mt Global Hook WH_JOURNALRECORD: gim st v ghi nhn li (record) cc thng ip t chut v bn phm. y l mt Global Hook
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 10

Gii thiu k thut Hook Th tc Hook (Hook procedure)

Th tc Hook: l hm dng gim st cc thng ip m ng dng ci vo h thng Dng chung ca Hook Procudure: LRESULT CALLBACK HookProc( int nCode, WPARAM wParam, LPARAM lParam);
nCode: xc nh hnh ng cn x l. Gi tr ca nCode ty thuc loi Hook wParam, lParam: cha thng tin ca message
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 11

Gii thiu k thut Hook Th tc Hook(tt)

Mi loi Hook cn c cch x l khc nhau khi xy dng Hook Procedure C th ci t nhiu Hook Procedure bng cch dng hm SetWindowsHook hay SetWindowsHookEx Hook Procedure ci sau s lun nm v tr u tin trong dy th tc Hook
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 12

Gii thiu k thut Hook Chui Hook (Hook chain)

Chui Hook: l mt dy cc th tc Hook c lin kt theo th t u tin thc hin gim dn HH Windows qun l cc chui Hook ring bit cho tng loi Hook Khi c 1 message xy ra, Windows s gi message n th tc Hook u tin trong chui Hook c loi tng ng message s c chuyn ln lt n cc th tc Hook k tip sau
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 13

Gii thiu k thut Hook Chui Hook(tt)

S Hook Chain
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 14

Minh ha cch lp trnh Hook

Cc hm thao tc vi Hook Ci t th tc Hook V d th tc Hook Chuyn message cho th tc Hook k tip Hy b ci t Hook
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 15

Minh ha cch lp trnh Hook - Cc hm thao tc vi Hook

SetWindowsHookEx CallNextHookEx UnhookWindowsHookEx

C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM

Spring 2004

16

Minh ha cch lp trnh Hook - Ci t th tc Hook Mt ng dng cn phi thc hin vic Ci t th tc Hook khi mun gim st message Hm SetWindowsHookEx s ci t th tc Hook vo im bt u ca chui Hook HHOOK SetWindowsHookEx( int hookMsg, HOOKPROC hookProc, HINSTANCE hIns, DWORD threadId);
hookMsg: loi Hook hookProc: con tr n th tc Hook. Trng hp Global Hook, th tc Hook phi lu trong DLL; vi Thread Hook, th tc Hook c th cha trong chnh thread tng ng hIns: handle ca module cha th tc Hook threadId: ID ca thread. Nu l 0, Hook s l Global
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 17

Minh ha cch lp trnh Hook - Ci t th tc Hook(tt)


V d 1: ci t Keyboard Hook ton cc (load-time) SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)fnKeyboardProc, hInstDLL, 0); V d 2: ci t Keyboard Hook ton cc (run-time) HOOKPROC fnKeyboardProc; static HINSTANCE hInstDLL; static HHOOK hHook; hInstDLL = LoadLibrary((LPCTSTR) myKBDLL.dll"); fnKeyboardProc = (HOOKPROC)GetProcAddress(hInstDLL, KeyboardProc"); hHook = SetWindowsHookEx(WH_KEYBOARD, fnKeyboardProc, hInstDLL, 0); V d 3: ci t Keyboard Hook cc b SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)fnKeyboardProc, NULL, GetCurrentThread());
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 18

Minh ha cch lp trnh Hook - V d th tc Hook


V d 4: Th tc hook cho Keyboard LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode >= 0 && nCode == HC_ACTION) { pMsg = (MSG *)lParam; if (pMsg->message == WM_KEYDOWN) { char s[] = {LOBYTE(wParam),\0}; MessageBox(NULL, s, Hook, 0); } } return CallNextHookEx(hHook, nCode, wParam, lParam); }
C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM Spring 2004 19

Lp trnh Hook - Chuyn message cho th tc Hook k tip

Sau khi thc hin xong, th tc Hook s gi hm CallNextHookEx chuyn message n th tc Hook k tip trong chui Hook LRESULT CallNextHookEx( HHOOK hHook, int code, WPARAM wParam, LPARAM lParam);
hHook: handle ca Hook (hin hnh) nhn v t hm SetWindowsHookEx code, wParam, lParam: cc gi tr ca th tc Hook hin ti truyn cho th tc Hook k tip trong chui Hook

C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM

Spring 2004

20

Lp trnh Hook - Chuyn message cho th tc Hook k tip

Th tc Hook c th khng chuyn thng ip n th tc Hook k tip trong chui Hook Lu : vic khng chuyn message c th gy ra li nghim trng cho h thng

C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM

Spring 2004

21

Lp trnh Hook - Hy b ci t Hook

S dng k thut Hook s lm gim kh nng thc thi ca h thng Do , khi khng s dng Hook na nn hy b Hook khi h thng BOOL UnhookWindowsHooks( HHOOK hHook);
hHook: handle ca hook cn hy b

C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM

Spring 2004

22

Cm n - Hi & p

C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM

Spring 2004

23

You might also like