快速X86/X86-64拆卸器和代码生成库。
以下示例程序使用Zydis拆卸给定的内存缓冲区,并将输出打印到控制台。
zydis/示例/dissemblesimple.c
第38至63行214536a
上面的示例程序生成以下输出:
007FFFFFFF400000 push rcx
007FFFFFFF400001 lea eax , [ rbp - 0x01 ]
007FFFFFFF400004 push rax
007FFFFFFF400005 push qword ptr [ rbp + 0x0C ]
007FFFFFFF400008 push qword ptr [ rbp + 0x08 ]
007FFFFFFF40000B call [ 0x008000007588A5B1 ]
007FFFFFFF400011 test eax , eax
007FFFFFFF400013 js 0x007FFFFFFF42DB15zydis/示例/encodemov.c
B37076E中的第39至62行
上面的示例程序生成以下输出:
48 C7 C0 37 13 00 00
在此存储库的示例目录中可以找到更多示例。
有很多方法可以在系统上提供Zydis。以下子部分列出了常用选项。
平台: Windows,MacOS,Linux,BSD
您可以使用CMAKE在所有受支持的平台上构建Zydis。可以在此处找到有关如何安装CMAKE的说明。
git clone --recursive ' https://github.com/zyantific/zydis.git '
cd zydis
cmake -B build
cmake --build build -j4平台: Windows
除了CMake Build Logic外,我们还可以手动维护Visual Studio 2022项目。
平台: Windows
可以指示CMAKE为几乎所有VS版本生成一个Visual Studio项目。一份视频指南,描述了如何使用Cmake GUI生成此类项目文件的视频指南。不要因为视频中明显使用MacOS的使用而混淆:Windows只是在虚拟机中运行。
平台:具有工作C11编译器的任何平台
我们提供了Zydis的自动生成的单个标头和单源文件变体。要在项目中使用Zydis的这种变体,您需要做的就是将这两个文件复制到您的项目中。合并构建可以在我们的发行页面上找到zydis-amalgamated.tar.gz 。
这些文件是用amalgamate.py脚本生成的。
平台: Windows,MacOS,Linux,FreeBSD
可以通过各种软件包管理人员获得预构建的标题,共享库和可执行文件。
| 存储库 | 安装命令 |
|---|---|
| Arch Linux | pacman -S zydis |
| Debian | apt-get install libzydis-dev zydis-tools |
| 自制 | brew install zydis |
| 尼克斯 | nix-shell -p zydis |
| Ubuntu | apt-get install libzydis-dev zydis-tools |
| vcpkg | vcpkg install zydis |
可以在此仓库中找到有关如何在基于CMAKE的项目中使用Zydis的示例。
ZydisInfo工具ZydisInfo命令行工具可用于检查Zydis提供有关指令的所有信息。

精选语言的官方绑定:
如果您正在寻找编码器的ASMJIT风格的汇编器前端,请查看ZASM。 ZASM还在解码器和格式接口周围提供了一个惯用的C ++包装器。
版本遵循语义版本管理方案。所有稳定性保证仅适用于API。仅在补丁版本之间提供ABI稳定性。
master拥有下一个未发行的Zydis版本的出血边缘代码。必须预期的错误和问题增加,并且在标记提交之外不能保证API稳定性。-beta , -rc等。后缀maintenance/v4指向V4最新版本的代码maintenance/v3指向V3最新版本的代码maintenance/v2指向V2的最后一个遗产版本的代码-fPIC /usr/bin/ld: ./libfoo.a(foo.c.o): relocation R_X86_64_PC32 against symbol `bar' can not be used when making a shared object; recompile with -fPIC
在某些情况下(例如,当使用CMAKE构建Zydis作为静态库时,然后使用MakeFiles手动将其链接到共享库中),Cmake可能无法检测到必须发出重定位信息。这可以通过将-DCMAKE_POSITION_INDEPENDENT_CODE=ON传递到cmake Invocation来强制。
我们为Zydis提供咨询服务和专业业务支持。如果您需要自定义扩展名,请需要帮助将Zydis集成到您的产品中,或者只是希望合同保证更新和周转时间,我们很乐意为此提供帮助!请通过[email protected]与我们联系。
使用Flubernd的帐户收集和分发捐款。
Zydis已获得MIT许可证的许可。