Rápido y liviano X86/X86-64 Desmontrezca y biblioteca de generación de códigos.
El siguiente programa de ejemplo utiliza Zydis para desmontar un búfer de memoria dado e imprime la salida en la consola.
zydis/ejemplos/dissemblesimple.c
Líneas 38 a 63 en 214536a
El programa de ejemplo anterior genera la siguiente salida:
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/ejemplos/encodemov.c
Líneas 39 a 62 en B37076E
El programa de ejemplo anterior genera la siguiente salida:
48 C7 C0 37 13 00 00
Se pueden encontrar más ejemplos en el directorio de ejemplos de este repositorio.
There are many ways to make Zydis available on your system. La siguiente lista de subsecciones se usa comúnmente.
Plataformas: Windows, MacOS, Linux, BSDS
Puede usar CMake para construir Zydis en todas las plataformas compatibles. Las instrucciones sobre cómo instalar Cmake se pueden encontrar aquí.
git clone --recursive ' https://github.com/zyantific/zydis.git '
cd zydis
cmake -B build
cmake --build build -j4Plataformas: Windows
Mantenemos manualmente un proyecto Visual Studio 2022 además de la lógica de compilación CMake.
Plataformas: Windows
Se puede instruir a CMake para generar un proyecto de Visual Studio para casi cualquier versión de VS. Aquí está disponible una guía de video que describe cómo usar la GUI CMake para generar dichos archivos de proyecto. No se confunda con el uso aparente de macOS en el video: Windows simplemente se está ejecutando en una máquina virtual.
Plataformas: cualquier plataforma con un compilador C11 que funcione
Proporcionamos un encabezado único generado automático y una variante de archivo de fuente única de ZYDIS. Para usar esta variante de Zydis en su proyecto, todo lo que necesita hacer es copiar estos dos archivos en su proyecto. Las construcciones amalgamadas se pueden encontrar en nuestra página de lanzamiento como zydis-amalgamated.tar.gz .
Estos archivos se generan con el script amalgamate.py .
Plataformas: Windows, MacOS, Linux, FreeBSD
Los encabezados previos a la construcción, las bibliotecas compartidas y los ejecutables están disponibles a través de una variedad de administradores de paquetes.
| Repositorio | Comando de instalación |
|---|---|
| Arch Linux | pacman -S zydis |
| Debian | apt-get install libzydis-dev zydis-tools |
| Cerveza casera | brew install zydis |
| Nixos | nix-shell -p zydis |
| Ubuntu | apt-get install libzydis-dev zydis-tools |
| VCPKG | vcpkg install zydis |
Se puede encontrar un ejemplo sobre cómo usar Zydis en su propio proyecto basado en CMake en este repositorio.
ZydisInfo La herramienta de línea de comandos ZydisInfo se puede usar para inspeccionar esencialmente toda la información que Zydis proporciona sobre una instrucción.

Existen enlaces oficiales para una selección de idiomas:
Si está buscando un front-end de ensamblador de estilo ASMJIT para el codificador, consulte Zasm. Zasm también proporciona un envoltorio C ++ idiomático alrededor del decodificador y la interfaz Formatter.
Las versiones siguen el esquema de versiones semánticas. Todas las garantías de estabilidad se aplican solo a la API. La estabilidad de ABI se proporciona solo entre las versiones de parche.
master sostiene el código de borde sangrado de la próxima versión de Zydis inédita. Se deben esperar mayores cantidades de errores y problemas y la estabilidad de la API no está garantizada fuera de los confirmaciones etiquetadas.-beta , -rc , etc.maintenance/v4 señala el código de la última versión de V4maintenance/v3 señala el código de la última versión de V3maintenance/v2 señala el código de la última versión heredada de V2-fPIC para compilaciones de bibliotecas compartidas /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
En algunas circunstancias (por ejemplo, al construir Zydis como una biblioteca estática que usa CMake y luego usando Makefiles para vincularlo manualmente a una biblioteca compartida), CMake podría no detectar que la información de reubicación debe emitirse. Esto se puede forzar pasando -DCMAKE_POSITION_INDEPENDENT_CODE=ON la invocación de cmake.
Ofrecemos servicios de consultoría y apoyo comercial profesional para Zydis. Si necesita una extensión personalizada, requiera ayuda para integrar Zydis en su producto o simplemente desea actualizaciones y tiempos de respuesta garantizados contractualmente, ¡nos complace ayudarlo! Póngase en contacto con nosotros en [email protected].
Las donaciones se recopilan y distribuyen utilizando la cuenta de Flobernd.
Zydis tiene licencia bajo la licencia MIT.