Dll注入技術之訊息鉤子

2021-06-21 01:26:52 字數 1527 閱讀 8564

dll注入技術之訊息鉤子注入

訊息鉤子注入原理是利用windows 系統中setwindowshookex()這個api,他可以攔截目標程序的訊息到指定的dll中匯出的函式,利用這個特性,我們可以將dll注入到指定程序中。主要流程如下圖所示

1.準備階段

需要編寫乙個dll,並且顯式匯出mymessageproc()函式,主要**如下:

lresult

winapi mymessageproc(

intcode,

wparam

wparam,

lparam

lparam)    

顯示匯出某個函式需要在.def檔案中的exports填寫mymessageproc(),如下圖所示:

2.hook階段

使用setwindowshookex()之前首先需要將hook的dll 載入到本身的程序中,以此得到dll的模組控制代碼,再使用getprocaddress()得到dll中顯示匯出的函式mymessageproc()的函式位址,最後遍歷出待注入程序的執行緒id,這樣setwindowshookex()就可以利用這些引數進行hook了。主要**如下圖所示:

//載入dll到本身程序

hmod = loadlibrary(pdllname);  

if(!hmod) 

return

false;  

//得到顯示函式的位址

lpfunc = (dword

)getprocaddress(hmod, 

"mymessageproc"

);  

if(!lpfunc)  

//得到待注入exe的程序id

dwprocessid = getprocessid(pexename);  

if(!dwprocessid)  

//得到待注入exe的執行緒id

dwthreadid = getthreadid(dwprocessid);  

if(!dwthreadid)  

//利用hook進行注入

hhook = setwindowshookex(  

wh_getmessage,//wh_keyboard,//wh_callwndproc,

(hookproc)lpfunc,  

hmod,  

dwthreadid);  

3.釋放階段

利用loadlibrary()得到的模組控制代碼把本身程序的dll釋放掉,**如下所示:

if(hmod) freelibrary(hmod);  

訊息鉤子注入只需要對setwindowshookex()和dll匯出函式有深刻的認識就可以很容編寫,所以**簡單,比較容易實現。

Dll注入技術之訊息鉤子

黑客反病毒 dll注入技術之訊息鉤子注入 訊息鉤子注入原理是利用windows 系統中setwindowshookex 這個api,他可以攔截目標程序的訊息到指定的dll中匯出的函式,利用這個特性,我們可以將dll注入到指定程序中。主要流程如下圖所示 1 準備階段 需要編寫乙個dll,並且顯式匯出m...

函式鉤子 Dll注入

在應用層可以設定的鉤子方法有許多種,其中經典的鉤子是訊息鉤子,訊息鉤子分為兩種,一種是系統級全域性鉤子,另外一種是執行緒級區域性鉤子,它們都是通過下面這一組函式來實現訊息勾取,實現相對簡單。設定鉤子 setwindowshookex 釋放鉤子 unhookwindowshookex 繼續鉤子 cal...

Dll注入技術之登錄檔注入

黑客反病毒論壇 dll注入技術之reg注入 dll注入技術指的是將乙個dll檔案強行載入到exe檔案中,並成為exe檔案中的一部分,這樣做的目的在於方便我們通過這個dll讀寫exe檔案記憶體資料,例如 hook exe檔案中的api 或以被注入exe的身份去執行一些操作等等。reg注入原理是利用在w...