Windows黑客基礎 1 Hook本程序的訊息

2022-02-19 17:03:09 字數 1894 閱讀 6824

1.需要用到的函式

學過windows程式設計的應該都知道,windows的核心機制是訊息機制,訊息是作業系統告訴應用程式發生了什麼事情,比如當使用者移動了滑鼠或者按鍵後,作業系統會通知應用程式

實際上在windows下,我們可以監控作業系統傳送給另外乙個程序的訊息,然後決定對這個訊息怎麼處理,比如繼續傳送,或者改變訊息,或者不讓這個訊息發給應用程式,也可以讓應用程式處理完訊息後通知監控的程序 這些都依賴乙個api,setwindowshookex

hhook winapi setwindowshookex(

_in_  int idhook,

_in_  hookproc lpfn,

_in_  hinstance hmod,

_in_  dword dwthreadid

);idhook就是我們要監控的訊息型別

lpfn是當我們收到這個訊息後,要交給哪個函式去處理,函式的型別是hookproc,這個函式定義在winuser.h裡面,原型是

typedef lresult (callback* hookproc)(int code, wparam wparam, lparam lparam);

hmod是我們函式所在模組,如果我們的函式是在dll裡面,那麼我們需要兩個api,乙個是loadlibrary,乙個是getprocaddress,前者對映乙個dll到我們的程序裡面,後者則是從乙個dll

返回我們所需要的函式

dwthreadid是我們要監視的執行緒id,如果是0的話就是系統鉤子,也就是我們監視的程序所有訊息都會獲取

詳細的解釋請參考msdn:

在我們擷取到監視的程序的訊息後,我們可以呼叫callnexthookex來將訊息繼續傳遞,當然也可以選擇不讓訊息繼續傳遞,如果我們不喜歡將該訊息傳遞給監視的程序,就在函式裡面return 1

,如果要把他傳送給監視的程序,就return 0

2.擷取本程序的訊息

1.建立專案

我們用vs建立乙個win32專案,這樣就預設給我們建立了乙個接收訊息的視窗,具體過程如下 (vs2008環境下):

檔案->新建專案->選擇win32專案,並且輸入名稱->點選確定

進入嚮導後,直接點選完成,這樣就建立了乙個win32的預設專案,當然為了除錯方便,我們需要對一些設定進行更改

選中專案的屬性,選擇配置屬性->鏈結器->系統->子系統,選擇控制台

這樣做的目的是為了方便我們可以直接利用cout輸出除錯資訊

2.進行設定,方便除錯

設定完成後編譯會無法通過,因為win32專案預設main函式跟c++的main函式不一樣,所以我們需要對main函式進行改造,將函式原型改成c++的預設形式後,通過getmodulehandle獲得本程序的hinstance,就可以了

接下來我們在windows的訊息處理函式裡面增加處理keyboard的**:

case

wm_keydown:

printf(

"按下按鍵\n");

break;

接下來只要在程式開頭呼叫我們的函式:

lresult callback keyboardproc(int

ncodec,wparam wparam,lparam lparam)

void

sethook(hinstance hmoudle)

在程式呼叫sethook後,就能攔截到我們程序的鍵盤訊息

對於擷取本程序的訊息,**並不複雜,10+行的**就能攔截本程序的鍵盤訊息,訊息型別很多種,還有debug訊息,mouse訊息等,都可以進行攔截

windows 黑客程式設計基礎技術

基礎技術 monday,february 3,2020 3 27 pm 1.介紹 研發時通常會使用第三方庫,但並非所有的第三方庫都會提供靜態庫,大多數會提供動態鏈結庫 dll。dll延遲載入優點是將必須的 dll檔案以資源檔案的形式插入到程式中。在正式呼叫到必須的dll之前,程式都可以正常執行。程式...

Windows黑客程式設計基礎 一 系統服務

windows黑客程式設計基礎 一 系統服務 songnianhu 163.com 部落格 blog.csdn.net shangguanwaner 前兩天和乙個同學聊天,他念的是xx大學計算機專業,他向我抱怨說天天在學校學的東西好象都沒什麼用,對hacker程式設計倒頗有興趣,就是不知到從何學起。...

Windows黑客程式設計基礎 一 系統服務

windows黑客程式設計基礎 一 系統服務 songnianhu 163.com 部落格 blog.csdn.net shangguanwaner 前兩天和乙個同學聊天,他念的是xx大學計算機專業,他向我抱怨說天天在學校學的東西好象都沒什麼用,對hacker程式設計倒頗有興趣,就是不知到從何學起。...