Быстрый и легкий x86/x86-64 Дизассемблер и библиотека генерации кодов.
В следующем примере программы используется Zydis для разобравания данного буфера памяти и печатает вывод на консоли.
Zydis/Примеры/DisassemblesImple.c
Строки от 38 до 63 в 214536а
Приведенный выше пример программы генерирует следующий выход:
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
Линии от 39 до 62 в B37076E
Приведенный выше пример программы генерирует следующий выход:
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
Мы вручную поддерживаем проект Visual Studio 2022 в дополнение к логике сборки Cmake.
Платформы: Windows
Cmake может быть проинструктирован создать проект Visual Studio практически для любой версии VS. Видеоид, описывающий, как использовать графический интерфейс Cmake для генерации таких файлов проекта, доступен здесь. Не путайте явное использование MacOS в видео: Windows просто работает на виртуальной машине.
Платформы: любая платформа с рабочим компилятором C11
Мы предоставляем автозапрессованный вариант одного заголовка и единого исходного файла Zydis. Чтобы использовать этот вариант Zydis в вашем проекте, все, что вам нужно сделать, это скопировать эти два файла в свой проект. Объединенные сборки можно найти на нашей странице релиза как 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 |
| Никсос | nix-shell -p zydis |
| Ubuntu | apt-get install libzydis-dev zydis-tools |
| VCPKG | vcpkg install zydis |
Пример того, как использовать Zydis в вашем собственном проекте на основе Cmake, можно найти в этом репо.
ZydisInfo инструмент Инструмент командной строки ZydisInfo может использоваться для проверки практически всей информации, которую Zydis предоставляет о инструкции.

Официальные привязки существуют для выбора языков:
Если вы ищете фронт-энд ассемблера в стиле ASMJIT для энкодера, посмотрите Zasm. Zasm также обеспечивает идиоматическую обертку C ++ вокруг интерфейса декодера и форматета.
Версии следуют схеме семантической версий. Все гарантии стабильности применяются только к API. Стабильность ABI обеспечивается только между версиями патчей.
master держит код кровотечения в следующей невыпущенной версии Zydis. Увеличение количества ошибок и проблем необходимо ожидать, а стабильность API не гарантируется вне помеченных коммитов.-beta , -rc и т. Д.maintenance/v4 указывает на код последнего выпуска V4maintenance/v3 указывает на код последнего выпуска V3maintenance/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.