在C 中應用HOOK

2021-03-31 08:56:57 字數 1814 閱讀 1216

鉤子

(hook)

,是windows

訊息處理機制的乙個平台

,應用程式可以在上面設定子程以監視指定視窗的某種訊息,而且所監視的視窗可以是其他程序所建立的。當訊息到達後,在目標視窗處理函式之前處理它。鉤子機制允許應用程式截獲處理

window

訊息或特定事件。

關於hook的詳細介紹,在微軟的msdn中有,

enum hooktype //列舉,鉤子的型別

;

intptr _nexthookptr;

//記錄hook編號

3、在form1中引入必須的api

[dllimport("kernel32.dll")]

static

extern

int getcurrentthreadid(); //取得當前執行緒編號的api

[dllimport("user32.dll")]

internal

extern

static

void unhookwindowshookex(intptr handle); //取消hook的api

[dllimport("user32.dll")]

internal

extern

static intptr setwindowshookex(int idhook, [marshalas(unmanagedtype.functionptr)] hookproc lpfn, intptr         hinstance, int threadid);  //設定hook的api

[dllimport("user32.dll")]

internal

extern

static intptr callnexthookex(intptr handle, int code, intptr wparam, intptr lparam);

//取得下乙個hook的api

4、宣告乙個實現的委託

internal delegate intptr hookproc(int code, intptr wparam, intptr lparam);

5、新增自己的hook處理過程

intptr myhookproc(int code, intptr wparam, intptr lparam)

else

}6、新增加入hook鏈和從hook鏈中取消的函式

public

void sethook()

public

void unhook()

}7、在form1的load事件中新增 sethook() , 在form1的closing 事件中新增 unhook()

private

void

form1_load(

object

sender, system.eventargs e)

private

void

form1_closing(

object

sender, system.***ponentmodel.canceleventargs e)

8、執行

輸入 b , 發現 textbox 裡面顯示的是 a 了!

小結:這是乙個非常簡單的hook應用,當我們在做windows程式的時候,可能會用到這些東西。我正在試圖做乙個比較通用的類來進行乙個封裝,以便以後更好的使用。努力ing...

C 中來應用Hook

鉤子 hook 是windows 訊息處理機制的乙個平台 應用程式可以在上面設定子程以監視指定視窗的某種訊息,而且所監視的視窗可以是其他程序所建立的。當訊息到達後,在目標視窗處理函式之前處理它。鉤子機制允許應用程式截獲處理 window 訊息或特定事件。關於hook的詳細介紹,在微軟的msdn中有,...

C 中來應用Hook

鉤子 hook 是windows訊息處理機制的乙個平台,應用程式可以在上面設定子程以監視指定視窗的某種訊息,而且所監視的視窗可以是其他程序所建立的。當訊息到達後,在目標視窗處理函式之前處理它。鉤子機制允許應用程式截獲處理window訊息或特定事件。關於hook的詳細介紹,在微軟的msdn中有,htt...

引用 C 中來應用Hook

鉤子 hook 是windows訊息處理機制的乙個平台,應用程式可以在上面設定子程以監視指定視窗的某種訊息,而且所監視的視窗可以是其他程序所建立的。當訊息到達後,在目標視窗處理函式之前處理它。鉤子機制允許應用程式截獲處理window訊息或特定事件。關於hook的詳細介紹,在微軟的msdn中有,htt...