Bibliothèque de génération rapide et légère x86 / x86-64.
Le programme d'exemple suivant utilise ZYDIS pour démonter un tampon de mémoire donné et imprime la sortie de la console.
Zydis / Exemples / DésassementImple.c
Lignes 38 à 63 en 214536a
Le programme d'exemple ci-dessus génère la sortie suivante:
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 / Exemples / EncodeMov.c
Lignes 39 à 62 en B37076E
Le programme d'exemple ci-dessus génère la sortie suivante:
48 C7 C0 37 13 00 00
Plus d'exemples peuvent être trouvés dans le répertoire des exemples de ce référentiel.
Il existe de nombreuses façons de rendre les Zydis disponibles sur votre système. La liste des sous-sections suivantes a utilisé des options couramment utilisées.
Plateformes: Windows, MacOS, Linux, BSDS
Vous pouvez utiliser CMake pour construire des Zydis sur toutes les plates-formes prises en charge. Des instructions sur la façon d'installer Cmake peuvent être trouvées ici.
git clone --recursive ' https://github.com/zyantific/zydis.git '
cd zydis
cmake -B build
cmake --build build -j4Plateformes: Windows
Nous maintenons manuellement un projet Visual Studio 2022 en plus de la logique de construction CMake.
Plateformes: Windows
CMake peut être chargé de générer un projet Visual Studio pour à peu près toutes les versions VS. Un guide vidéo décrivant comment utiliser l'interface graphique Cmake pour générer de tels fichiers de projet est disponible ici. Ne soyez pas confus par l'utilisation apparente de macOS dans la vidéo: Windows est simplement en cours d'exécution dans une machine virtuelle.
Plateformes: Toute plate-forme avec un compilateur C11 fonctionnel
Nous fournissons un en-tête unique généré automatiquement et une variante de fichiers source unique de ZYDIS. Pour utiliser cette variante de Zydis dans votre projet, il vous suffit de copier ces deux fichiers dans votre projet. Les versions fusionnées peuvent être trouvées sur notre page de sortie en tant que zydis-amalgamated.tar.gz .
Ces fichiers sont générés avec le script amalgamate.py .
Plateformes: Windows, MacOS, Linux, FreeBSD
Les en-têtes prédéfinis, les bibliothèques et les exécutables partagés sont disponibles via une variété de gestionnaires de packages.
| Dépôt | Installer la commande |
|---|---|
| Arch Linux | pacman -S zydis |
| Debian | apt-get install libzydis-dev zydis-tools |
| Homebrew | brew install zydis |
| Nixos | nix-shell -p zydis |
| Ubuntu | apt-get install libzydis-dev zydis-tools |
| vcpkg | vcpkg install zydis |
Un exemple sur la façon d'utiliser les Zydis dans votre propre projet basé sur CMake peut être trouvé dans ce dépôt.
ZydisInfo L'outil de ligne de commande ZydisInfo peut être utilisé pour inspecter essentiellement toutes les informations que Zydis fournit sur une instruction.

Les liaisons officielles existent pour une sélection de langues:
Si vous cherchez un assembleur de style ASMJIT Front-end pour l'encodeur, consultez Zasm. Zasm fournit également un wrapper C ++ idiomatique autour du décodeur et de l'interface de format.
Les versions suivent le schéma de version sémantique. Toutes les garanties de stabilité s'appliquent uniquement à l'API. La stabilité ABI est fournie uniquement entre les versions du patch.
master détient le code de bord de saignement de la version Zydis suivante suivante. Des quantités accrues de bogues et de problèmes doivent être attendues et la stabilité de l'API n'est pas garantie en dehors des engagements marqués.-beta , -rc , etc. suffixesmaintenance/v4 pointe vers le code de la dernière version de V4maintenance/v3 pointe vers le code de la dernière version de V3maintenance/v2 pointe vers le code de la dernière version héritée de V2-fPIC pour les versions de bibliothèque partagées /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
Dans certaines circonstances (par exemple, lorsque la création de Zydis en tant que bibliothèque statique à l'aide de CMake, puis en utilisant des makefiles, pour les lier manuellement dans une bibliothèque partagée), CMake pourrait ne pas détecter que les informations de relocalisation doivent être émises. Cela peut être forcé en passant -DCMAKE_POSITION_INDEPENDENT_CODE=ON l'invocation cmake.
Nous offrons des services de conseil et un soutien professionnel aux entreprises pour les Zydis. Si vous avez besoin d'une extension personnalisée, avez besoin d'aide pour intégrer les Zydis dans votre produit ou si vous souhaitez simplement les mises à jour garanties contractuellement et les délais de revirement, nous sommes heureux d'aider à cela! Veuillez nous contacter à [email protected].
Les dons sont collectés et distribués à l'aide du compte de Flobernd.
Zydis est autorisé sous la licence du MIT.