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的启动与停止
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值