介绍
PolyHook 2.0 是一个用于x86/x64架构的C++钩子(Hook)库,主要用于拦截和修改程序函数执行,在软件逆向、安全研究和性能分析等领域有广泛运用
支持的主要钩子技术:
内联钩子 (Inline Hook)
虚函数表钩子 (VTable Hook)
导入地址表钩子 (IAT Hook)
导出地址表钩子 (EAT Hook)
硬件断点钩子 (Hardware Breakpoint Hook)
软件断点钩子 (Software Breakpoint Hook)
基于上述能力,PolyHook 2.0常用于:
-
安全研究与逆向工程:分析恶意软件行为、监控关键API调用
-
游戏修改与辅助开发:修改游戏逻辑、数据或增加功能
-
性能分析与调试:测量函数耗时、动态跟踪程序流程
-
软件功能增强与兼容性修复:在不修改原程序的情况下注入新功能或修复问题
下载与配置
1.下载核心项目
https://github.com/stevemk14ebr/PolyHook_2_0
依赖项目1:asmjit
https://github.com/asmjit/asmjit/tree/a3199e8857792cd10b7589ff5d58343d2c9008ea
下载解压到核心项目的asmjit文件夹
依赖项目2:asmtk
https://github.com/asmjit/asmtk/tree/3bce8a48aa895e6d639501d1f1105ab5fe007753
下载解压到核心项目的asmtk文件夹
依赖项目3:zydis
https://github.com/zyantific/zydis/tree/a2278f1d254e492f6a6b39f6cb5d1f5d515659dc
下载解压到核心项目的zydis文件夹
依赖项目4:zycore
https://github.com/zyantific/zycore-c/tree/0b2432ced0884fd152b471d97ecf0258ff4d859f
下载解压到核心项目的zydis\dependencies\zycore文件夹
2.使用CMake生成项目
- 选择你的核心代码目录,然后选择最终生成项目的目录
- 点击configurem,选择VS2019,x64,然后点击确定
- 点击generate生成项目

3.编译项目
双击polyhook2,然后编译库,会生成所有的lib文件

4.lib文件的安放
推荐把所有的lib放在一个文件夹里,复制进来即可

5.包含目录和库目录设置
可以参考本人的包含目录
E:\ThirdPartyLibrary\PolyHook_2_0-master\zydis\dependencies\zycore\include
E:\ThirdPartyLibrary\PolyHook_2_0-master\zydis\include
E:\ThirdPartyLibrary\PolyHook_2_0-master\asmtk
E:\ThirdPartyLibrary\PolyHook_2_0-master\asmjit\src
E:\ThirdPartyLibrary\PolyHook_2_0-master\polyhook2
E:\ThirdPartyLibrary\PolyHook_2_0-master
本人的库目录(刚才说过了,把lib库全部放在一个文件夹里面,可以方便包含)
E:\ThirdPartyLibrary\PolyHook2019\Mylib
附加依赖项:连接器->输入
PolyHook_2.lib
Zydis.lib
Zycore.lib
asmtk.lib
asmjit.lib
使用
项目属性为为Debug版本,因为Release模式的编译器优化(特别是函数内联)是会导致挂钩失效。
后续会在本帖继续更新DLL版本HOOK和硬件断点HOOK的使用方法,敬请期待…



没有回复内容