摘要: //Author:Alex(Yock.W)
//轉(zhuǎn)載請(qǐng)署名出處
前言 基礎(chǔ)知識(shí)
本系列文章會(huì)對(duì)常用的幾種API HOOK方法進(jìn)行全面的分析。
Hook是什么?
鉤子(Hook),是Windows消息處理機(jī)制的一個(gè)平臺(tái),應(yīng)用程序可以在上面設(shè)置子程以監(jiān)視指定窗口的某種消息,而且所監(jiān)視的窗口可以是其他進(jìn)程所創(chuàng)建的。當(dāng)消息到達(dá)后,在目標(biāo)窗口處理函數(shù)之前處理它。鉤子機(jī)制允許應(yīng)用程序截獲處理window消息或特定事件。
鉤子實(shí)際上是一個(gè)處理消息的程序段,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)特定的消息發(fā)出,在沒有到達(dá)目的窗口前,鉤子程序就先捕獲該消息,亦即鉤子函數(shù)先得到控制權(quán)。這時(shí)鉤子函數(shù)即可以加工處理(改變)該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強(qiáng)制結(jié)束消息的傳遞。
Hook原理
每個(gè)Hook都有一個(gè)關(guān)聯(lián)的鏈表,由系統(tǒng)維護(hù),鏈表指針指向被Hook子程調(diào)用的回調(diào)函數(shù):
LRESULT WINAPI HookCallBack
閱讀全文