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。

此時問題來了。

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

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



EasyHook的啟動與停止

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

通過動態調整開關狀態就可以實現Hook的啟動與停止


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM