大家知道HOOK是什么意思嗎?
Hook是一個英語單詞,名詞、動詞,作名詞時意思是“掛鉤,吊鉤”,作及物動詞時意思是“鉤住;引上鉤”,作不及物動詞時意思是“鉤住;彎成鉤狀”。
.hook是Windows中提供的一種用以替換DOS下“中斷”的系統(tǒng)機制。
雙語例句
1、Hang your coat up on that hook.
把你的上衣掛在那個掛鉤上。
2、Hang your coat on the hook.
把你的外套掛在那個鉤上。
3、You can tap into key moments in that lifecycle by implementing one or more of the lifecycle hook interfaces.
你可以通過實現(xiàn)一個或多個生命周期鉤子接口,切入到生命周期中的關鍵時間點。
Hook原理
每一個Hook都有一個與之相關聯(lián)的指針列表,稱之為鉤子鏈表,由系統(tǒng)來維護。這個列表的指針指向指定的,應用程序定義的,被Hook子程調用的回調函數(shù),也就是該鉤子的各個處理子程序。當與指定的Hook類型關聯(lián)的消息發(fā)生時,系統(tǒng)就把這個消息傳遞到Hook子程。
一些Hook子程可以只監(jiān)視消息,或者修改消息,或者停止消息的前進,避免這些消息傳遞到下一個Hook子程或者目的窗口。最近安裝的鉤子放在鏈的開始,而最早安裝的鉤子放在最后,也就是后加入的先獲得控制權。
Windows 并不要求鉤子子程的卸載順序一定得和安裝順序相反。每當有一個鉤子被卸載,Windows 便釋放其占用的內存,并更新整個Hook鏈表。如果程序安裝了鉤子,但是在尚未卸載鉤子之前就結束了,那么系統(tǒng)會自動為它做卸載鉤子的操作。
鉤子子程是一個應用程序定義的回調函數(shù)(CALLBACK Function),不能定義成某個類的成員函數(shù),只能定義為普通的C函數(shù)。用以監(jiān)視系統(tǒng)或某一特定類型的事件,這些事件可以是與某一特定線程關聯(lián)的,也可以是系統(tǒng)中所有線程的事件。