高速および軽量X86/X86-64分解およびコード生成ライブラリ。
次の例プログラムでは、Zydisを使用して特定のメモリバッファーを分解し、出力をコンソールに印刷します。
zydis/examples/sassemblesimple.c
214536aの38〜63行
上記の例プログラムは、次の出力を生成します。
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/Examples/encodemov.C
B37076Eの39〜62行
上記の例プログラムは、次の出力を生成します。
48 C7 C0 37 13 00 00
このリポジトリの例ディレクトリには、その他の例があります。
システムでZydisを利用できるようにする方法はたくさんあります。次のサブセクションには、一般的に使用されるオプションがリストされています。
プラットフォーム: Windows、MacOS、Linux、BSDS
Cmakeを使用して、サポートされているすべてのプラットフォームでZydisを構築できます。 cmakeのインストール方法に関する手順は、こちらをご覧ください。
git clone --recursive ' https://github.com/zyantific/zydis.git '
cd zydis
cmake -B build
cmake --build build -j4プラットフォーム: Windows
CMakeビルドロジックに加えて、Visual Studio 2022プロジェクトを手動で維持しています。
プラットフォーム: Windows
Cmakeは、ほとんどすべてのVSバージョンのVisual Studioプロジェクトを生成するように指示できます。 Cmake GUIを使用してそのようなプロジェクトファイルを生成する方法を説明するビデオガイドは、こちらから入手できます。ビデオでのMacOSの明らかな使用に混乱しないでください。Windowsは仮想マシンで単に実行されています。
プラットフォーム:作業C11コンパイラを備えた任意のプラットフォーム
Zydisの自動生成シングルヘッダーとシングルソースファイルバリアントを提供します。プロジェクトでZydisのこのバリアントを使用するには、これらの2つのファイルをプロジェクトにコピーする必要があります。アマルガメートされたビルドは、 zydis-amalgamated.tar.gzとしてリリースページにあります。
これらのファイルは、 amalgamate.pyスクリプトで生成されます。
プラットフォーム: Windows、MacOS、Linux、FreeBSD
事前に構築されたヘッダー、共有ライブラリ、実行可能ファイルは、さまざまなパッケージマネージャーを通じて利用できます。
| リポジトリ | コマンドをインストールします |
|---|---|
| Arch Linux | pacman -S zydis |
| デビアン | apt-get install libzydis-dev zydis-tools |
| ホームブリュー | brew install zydis |
| nixos | 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
状況によっては(たとえば、ZydisをCmakeを使用して静的ライブラリとして構築し、MakeFilesを使用して共有ライブラリに手動でリンクする場合)、Cmakeは再配置情報を放出する必要があることを検出できない場合があります。これは-DCMAKE_POSITION_INDEPENDENT_CODE=ON cmakeの呼び出しを渡すことで強制することができます。
Zydisのコンサルティングサービスと専門的なビジネスサポートを提供しています。カスタム拡張機能が必要な場合、Zydisを製品に統合するのに支援が必要な場合、または単に契約上保証された更新とターンアラウンド時間を希望する場合は、喜んでお手伝いします。 [email protected]までお問い合わせください。
寄付は、Floberndのアカウントを使用して収集および配布されます。
ZydisはMITライセンスに基づいてライセンスされています。