Zyrex
适用于Windows的高级x86/x86-64钩子库
说明
目前,此存储库中的所有内容都处于高度开发中,可能无法按预期运行。由于时间不足,开发目前暂停,但有望很快恢复。
特性
- 支持x86和x86-64(使用我们的Zydis反汇编库)
- 使用极其安全且简单(了解更多)
- 由于事务API的设计,天生线程安全
- 内置钩子屏障API以防止不必要的钩子递归
- 完整的doxygen文档(master)
钩子方法
内联钩子
修改函数序言以重定向其代码流,并分配一个可用于继续执行原始函数的跳板。
路线图
- Windows内核模式支持
- 多平台支持(macOS、FreeBSD、Linux和UEFI)
- 软件断点(SWBP)钩子
- 在目标函数开头写入中断/特权指令,通过在未处理异常处理程序中捕获由此产生的异常来重定向代码流(仅限Windows)。
- 硬件断点(HWBP)钩子
- 使用CPU调试寄存器钩取代码。不会更改任何代码字节(仅限Windows)。
- 导入/导出地址表钩子
- 通过在运行时替换COFF二进制文件的导入地址表(IAT)和导出地址表(EAT)条目来钩取代码(仅限Windows)。
- 虚拟方法表钩子
- 通过在运行时替换对象实例的虚拟方法表(VMT)条目来钩取代码。
构建
Unix
Zyrex在大多数平台上无需任何外部依赖即可干净地构建。您可以使用CMake为您喜欢的C99编译器生成项目文件。
git clone --recursive 'https://github.com/zyantific/zyrex.git'
cd zyrex
mkdir build && cd build
cmake ..
make
Windows
可以使用Visual Studio 2017项目或使用CMake构建Zyrex(视频指南)。
版本
方案
版本遵循语义版本控制方案。所有稳定性保证仅适用于API —— 除非在发行说明中明确提及,否则不能假定补丁之间的ABI稳定性。
分支
master
包含下一个未发布的Zyrex版本的最新代码。可能会出现更多的错误和问题,在标记的提交之外不保证API稳定性。maintenance/v1
包含最新稳定v1版本的代码。
许可证
Zyrex采用MIT许可证授权。