Professional Documents
Culture Documents
Hook 609
Hook 609
2. C ch hot ng ca Hook
H thng duy tr mt chui hook (hook chain) cho mi loi hook. Mi chui
ny l mt danh sch lin kt cc con tr t bit, con tr ny chnh l cc
hm callback ca ng dng c sn, n cn c gi l hm hook (hm lc,
filter function)
Khi c mt thng ip c sinh ra thuc mt loi hook no , n s c h
thng y i vo hm hook u tin trong chui, ln lt tng hm mt (qua
tt c cc hook trong chui). Cng vic ca hm hook c th phc tp hay
n gin ty thuc vo tng loi hook. Hm hook cho mt s loi ch c th
gim st, s khc c th sa i thng ip hoc dng li vic x l thng
ip trn chui hook trc khi chng n cc hook tip theo hoc n ca s
ch.
3. ng dng ca Hook
- Cho php to ra cc chng trnh h tr g ting Vit nh : Vietkey
- Cho php to ra cc chung trnh Test t ng phn mm (bng cch pht
sinh cc s kin phm, chut ging nh ngi dng ang nhp vo).
- Cho php thay i giao din cc ng dng ang chy.
- Cho php xem phn tr gip ca cc ng dng bng vic nhn mt phm
no , v d nh nhn F1 chng hn
- V nhiu ng dng khc na ty vo tr tng tng ca cc bn !
4 . Ci t Hook
Giao din lp trnh ng dng (API) ca Windows cung cp 3 hm thao tc
vi hook :
SetWindowsHookEx
UnhookWindowsHookEx
CallNextHookEx
a) Ci t mt Filter Function vo chui cc Filter Function ca mt hook
Tc v ny c thc hin thng qua hm SetWindowsHookEx, khai bo ca
hm ny nh sau :
HHOOK SetWindowsHookEx( int idHook, HOOKPROC lpfn,
HINSTANCE hMod, DWORD dwThreadId);
WH_KEYBOARD
Thread , Global
WH_MOUSE
Thread , Global
WH_MSGFILTER
Thread , Global
WH_SYSMSGFILTER
Global
Vi mt loi hook xc nh, hook cc b s c gi trc, sau l hook
ton cc.
b) G b mt Filter Function ra khi chui cc Filter Function ca mt hook
Windows cung cp hm UnhookWindowsHookEx gip chng ta thc hin vic
ny. Khai bo ca n nh sau :
BOOL UnhookWindowsHookEx( HHOOK hhk);
Tham s : hhook ch ra hm hook c d b . y l gi tr c tr v bi
hm SetWindowsHookEx khi hm Hook c ci t.
Ch : Hm UnhookWindowsHookEx phi c s dng trong s kt hp vi
hm SetWindowsHookEx.
c) Chi tit v Filter Function
Filter Function l mt hm c gn vi loi hook m chng ta mun ci t.
Hm ny c gi bi h iu hnh Windows ch khng c gi bi ng
dng, y cng l l do m ngi ta thng gi n l Callback Function. Tuy
nhin , thng nht v mt thut ng, t nay v sau chng ta vn gi n l
Filter Function.
Tt c cc Filter Function u c dng sau :
LRESULT CALLBACK FilterFunc(int nCode, WPARAM wParam, LPARAM
lParam);
y FilterFunc ch l tn hm tng trng, khi ci t, Filter Function s
c tn bt k theo ca ngi lp trnh .
ngha ca tng tham s truyn cho hm :
s kin cho Filter Function khc trong cng mt chui. Lc ny, nu loi hook
chng ta ang ci t cho php hu b s kin, v Filter Function ca chng
ta cng c cng quyt nh l hy b, n s khng phi gi hm
CallNextHookEx.
5. Chng trnh minh ha
hiu r hn v Hook ,cc bn c th xem mt v d n gin v s dng
Hook. Trong v d ny chng ta s ci t mt Hook ,cho php c thng tin
v menu bar chun ca bt k chng trnh ng dng no v lu cc thng
tin ny thnh mt tp tin resource ( sau ta c th d dng s dng trong
chng trnh ca mnh!)
Trong v d ny chng ta s s dng Hook WH_GETMESSAGE chn bt cc
thng ip gi n hng i thng ip . V khi chng trnh ca chng ta bt
c thng ip WM_NCLBUTTONDOWN (thng ip ny uc pht sinh khi
chng ta click chut ln thanh tiu ca ca s) , chng trnh s cho m
hp thoi Save As cho ngui dng chn ng dn v t tn cho file
resource s c to ra .V lc ny chung trnh s lu ton b ni dung ca
menubar xung thnh file resource m chng ta t tn.
* Trong v d ny v ta mun ly thng tin v menu bar ca tt c ng dng
trn Windows nn ta phi s dng mt tp tin .DLL lp mt Hook loi ton
cc (cn cc hook loi cc b ch cho php chn cc thng ip trong ni b
ng dng c ci t Hook m thi).