1. 程式人生 > >EasyHook庫系列使用教程之四鉤子的啟動與停止

EasyHook庫系列使用教程之四鉤子的啟動與停止

ros clu 簡單 line IT data- exclusive 線程 調用

此文的產生花費了大量時間對EasyHook進行深入了解同一時候參考了大量文檔
先來簡單比較一下EasyHook與Detour鉤取後程序流程
Detours:鉤取API函數後。產生兩個地址,一個地址相應真Hook函數地址。一個相應真實API地址 EasyHook:鉤取API函數後,所有API指向同一地址。通過ACL控制是否跳轉到真實API地址
Detour:僅僅要鉤取之後,相關於一個API變成兩個函數 EasyHook:鉤取之後,相關於還是一個API,通過控制ACL來推斷是否跳轉到真實API
EasyHook使用中的一種特殊情況: ? ? ? 須要實現這樣一個功能,截獲打開文件(CreateFile)和獲取文件大小(GetFileSize)函數,且在打開文件時須要獲取文件的大小,即在HookCreateFile中同一時候使用CreateFile和GetFileSize。

此時問題來了。

CreateFile此時調用的是真實的API,而GetFileSize將會調用HookGetFileSize。

假設存在很多其它的函數,必將導致問題。

EasyHook的啟動與停止
EasyHook兩種ACL表。一種是包括方式(LhSetExclusiveACL),一種是排除方式(LhSetExclusiveACL

),包括方式。對於增加到ACL中的線珵。所有Hook。排除方式。對於增加到ACL中的線程,所有取消Hook。
通過動態調整開關狀態就可以實現Hook的啟動與停止

EasyHook庫系列使用教程之四鉤子的啟動與停止