EasyHook库系列使用教程之四钩子的启动与停止

Posted zhchoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的启动与停止

以上是关于EasyHook库系列使用教程之四钩子的启动与停止的主要内容,如果未能解决你的问题,请参考以下文章

WatchOS开发教程之四: Watch与 iPhone的通信和数据共享

WatchOS开发教程之四: Watch与 iPhone的通信和数据共享

c#使用easyhook库进行API钩取

Docker系列教程之四Dockerfile入门

FileCoin 挖矿教程之四:日常维护

iOS与EV3混合机器人编程系列之四iOS_WiFi_EV3_Library 剖析之中的一个:WiFi UDP和TCP