全局鉤子

全局鉤子是系統鉤子的一種,當指定的一些訊息被系統中任何應用程式所處理時,這個鉤子就被調用。

基本介紹

  • 中文名:全局鉤子
  • 解釋:用於計算機編程中
鉤子簡介,鉤子的原理,運行機制,

鉤子簡介

鉤子一詞多用於計算機編程中,英文叫hook,指利用api來提前攔截並處理windows訊息的一種技術。如鍵盤鉤子,許多木馬都有這東西,監視你的鍵盤操作。
在某種操作後彈出的關於全局鉤子的界面在某種操作後彈出的關於全局鉤子的界面
全局鉤子是系統鉤子的一種,當指定的一些訊息被系統中任何應用程式所處理時,這個鉤子就被調用。

鉤子的原理

Windows系統是建立在事件驅動的機制上的,說穿了就是整個系統都是通過訊息的傳遞來實現的。而鉤子是Windows系統中非常重要的系統接口,用它可以截獲並處理送給其他應用程式的訊息,來完成普通應用程式難以實現的功能。鉤子的種類很多,每種鉤子可以截獲並處理相應的訊息,如鍵盤鉤子可以截獲鍵盤訊息,外殼鉤子可以截取、啟動和關閉應用程式的訊息等。

運行機制

鉤子實際上是一個處理訊息的程式段,通過系統調用,把它掛入系統。每當特定的訊息發出,在沒有到達目的視窗前,鉤子程式就先捕獲該訊息,亦即鉤子函式先得到控制權。這時鉤子函式即可以加工處理(改變)該訊息,也可以不作處理而繼續傳遞該訊息,還可以強制結束訊息的傳遞。對每種類型的鉤子由系統來維護一個鉤子鏈,最近安裝的鉤子放在鏈的開始,而最先安裝的鉤子放在最後,也就是後加入的先獲得控制權。要實現Win32的系統鉤子,必須調用SDK中的API函式SetWindowsHookEx來安裝這個鉤子函式,這個函式的原型是HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId);,其中,第一個參數是鉤子的類型;第二個參數是鉤子函式的地址;第三個參數是包含鉤子函式的模組句柄;第四個參數指定監視的執行緒。如果指定確定的執行緒,即為執行緒專用鉤子;如果指定為空,即為全局鉤子。其中,全局鉤子函式必須包含在DLL(動態程式庫)中,而執行緒專用鉤子還可以包含在執行檔中。得到控制權的鉤子函式在完成對訊息的處理後,如果想要該訊息繼續傳遞,那么它必須調用另外一個SDK中的API函式CallNextHookEx來傳遞它。鉤子函式也可以通過直接返回TRUE來丟棄該訊息,並阻止該訊息的傳遞。

相關詞條

熱門詞條

聯絡我們