DetoursHook

Detours Hook
Detours是微軟開發(fā)的一個函數(shù)庫,主要用于動態(tài)Hook運(yùn)行中的程序,其具體介紹參見http://research.microsoft.com/en-us/projects/detours/。
在游戲或外掛分析中,可以利用Detours庫提供的接口來動態(tài)Hook任意地址,截獲函數(shù)調(diào)用并輸出打印信息。
Detours Hook的3個關(guān)鍵概念
要理解Detours Hook,必須先理解Detours中的3個關(guān)鍵概念。
ØTarget函數(shù):即要Hook的目標(biāo)函數(shù)或目標(biāo)地址。
ØTrampoline函數(shù):即跳板函數(shù),主要負(fù)責(zé)保存原始Target函數(shù)頭的若條指令,并加上一個跳轉(zhuǎn)指令以保持對原始Target函數(shù)調(diào)用的語義完整性。
ØDetour函數(shù):即截獲Target函數(shù)的調(diào)用之后,所要執(zhí)行的自定義函數(shù)。
在Detours Hook中,生成Trampoline函數(shù)與Target函數(shù)之間的關(guān)系如圖6-10所示。
Detours Hook
圖6-10 Trampoline函數(shù)與Target函數(shù)的關(guān)系
從圖6-10中可以看出,Trampoline函數(shù)是由Target函數(shù)頭加jmp指令組成的。
Target函數(shù)、Detour函數(shù)以及Trampoline函數(shù)之間的關(guān)系如圖6-11所示。
Detours Hook
圖6-11 Target函數(shù)、Detour函數(shù)和Trampoline函數(shù)間關(guān)系
從圖6-11中可知,一旦Target函數(shù)被執(zhí)行,程序?qū)凑?→2→3,即Traget→Detour→Trampoline的順序執(zhí)行,最后再回到Target函數(shù)的執(zhí)行過程。
Detours Hook引擎
Detours Hook引擎采用上面介紹的Detours Hook機(jī)制,經(jīng)過精心的設(shè)計,使這個Hook引擎支持動態(tài)Hook幾乎任意地址,以方便管理,而不用為了Hook一個地址去增加代碼以及重新編譯代碼(注意:這里的“任意地址”在可以被修改的地址區(qū)域內(nèi))。
首先還是讓我們看看如圖6-12所示的這個引擎的概要設(shè)計,然后再詳細(xì)介紹一下每一塊的具體內(nèi)容。
Detours Hook
圖6-12 Detours Hook引擎概要設(shè)計
如圖6-12所示的Detours Hook引擎,從涉及的內(nèi)存結(jié)構(gòu)上看,主要由4個塊組成,分別是JMP塊、HOOK_INFO塊、Trampoline塊和HKC塊,而從處理函數(shù)上看,主要由DispatchHook和ProcessHook組成。
具體細(xì)節(jié)見<<游戲外掛***藝術(shù)>>6.4節(jié)。
Detours Hook
電子工業(yè)出版社出版

本文題目:DetoursHook
URL地址:http://bm7419.com/article20/pcoeco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、服務(wù)器托管企業(yè)網(wǎng)站制作、Google、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司