快速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許可證的許可。