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的启动与中止
相关文章
相关标签/搜索