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

此文的產生花費了大量時間對EasyHook進行深刻了解同一時候參考了大量文檔

先來簡單比較一下EasyHook與Detour鉤取後程序流程

Detours:鉤取API函數後。產生兩個地址,一個地址相應真Hook函數地址。一個相應真實API地址
EasyHook:鉤取API函數後,全部API指向同一地址。經過ACL控制是否跳轉到真實API地址

Detour:僅僅要鉤取以後,相關於一個API變成兩個函數
EasyHook:鉤取以後,相關於仍是一個API,經過控制ACL來推斷是否跳轉到真實API

EasyHook使用中的一種特殊狀況:
      需要實現這樣一個功能,截獲打開文件(CreateFile)和獲取文件大小(GetFileSize)函數,且在打開文件時需要獲取文件的大小,即在HookCreateFile中同一時候使用CreateFile和GetFileSize。

此時問題來了。html

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

假設存在不少其它的函數,必將致使問題。spa



EasyHook的啓動與中止

EasyHook兩種ACL表。一種是包括方式( LhSetExclusiveACL ),一種是排除方式( LhSetExclusiveACL ),包括方式。對於增長到ACL中的線珵。全部Hook。排除方式。對於增長到ACL中的線程,全部取消Hook。

經過動態調整開關狀態就能夠實現Hook的啓動與中止
相關文章
相關標籤/搜索