PolyHook 2.0编译、配置指南:x86/x64架构的C++钩子Hook库

介绍

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生成项目

80ebac04-296a-43e7-b978-9a18cf265590水印版-min

3.编译项目

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

微信图片_2026-01-10_003215_932水印版-min

4.lib文件的安放

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

ScreenShot_2026-01-10_003535_588-min

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的使用方法,敬请期待…

请登录后发表评论

    没有回复内容