溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Detours Hook

發(fā)布時間:2020-08-02 08:53:19 來源:網絡 閱讀:450 作者:博文視點 欄目:安全技術

 

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

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI