Velozes e leves x86/x86-64 desmontador e biblioteca de geração de código.
O programa de exemplo a seguir usa o ZYDIS para desmontar um determinado buffer de memória e imprime a saída no console.
zydis/exemplos/desmontosimple.c
Linhas 38 a 63 em 214536a
O programa de exemplo acima gera a seguinte saída:
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/exemplos/codemov.c
Linhas 39 a 62 em B37076E
O programa de exemplo acima gera a seguinte saída:
48 C7 C0 37 13 00 00
Mais exemplos podem ser encontrados no diretório de exemplos deste repositório.
Existem muitas maneiras de disponibilizar Zydis em seu sistema. A lista de subseções a seguir comumente usadas opções.
Plataformas: Windows, MacOS, Linux, BSDs
Você pode usar o CMake para construir Zydis em todas as plataformas suportadas. As instruções sobre como instalar o CMake podem ser encontradas aqui.
git clone --recursive ' https://github.com/zyantific/zydis.git '
cd zydis
cmake -B build
cmake --build build -j4Plataformas: Windows
Mantemos manualmente um projeto do Visual Studio 2022, além da lógica do CMake Build.
Plataformas: Windows
O CMake pode ser instruído a gerar um projeto do Visual Studio para praticamente qualquer versão VS. Um guia de vídeo que descreve como usar a GUI do CMake para gerar esses arquivos de projeto está disponível aqui. Não se confunda com o uso aparente de macOS no vídeo: o Windows está simplesmente sendo executado em uma máquina virtual.
Plataformas: qualquer plataforma com um compilador C11 funcionando
Fornecemos um cabeçalho único gerado automaticamente e uma variante de arquivo de origem única do ZyDIS. Para usar essa variante de Zydis em seu projeto, tudo o que você precisa fazer é copiar esses dois arquivos para o seu projeto. As construções amalgamadas podem ser encontradas em nossa página de lançamento como zydis-amalgamated.tar.gz .
Esses arquivos são gerados com o script amalgamate.py .
Plataformas: Windows, MacOS, Linux, FreeBSD
Cabeçalhos pré-criados, bibliotecas compartilhadas e executáveis estão disponíveis através de uma variedade de gerentes de pacotes.
| Repositório | Instalar comando |
|---|---|
| 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 |
Um exemplo de como usar o ZYDIS em seu próprio projeto baseado em cmake pode ser encontrado neste repositório.
ZydisInfo A ferramenta de linha de comando ZydisInfo pode ser usada para inspecionar essencialmente todas as informações que o ZYDIS fornece sobre uma instrução.

Existem ligações oficiais para uma seleção de idiomas:
Se você está procurando um front-end de assembler no estilo ASMJIT para o codificador, confira o Zasm. O Zasm também fornece um invólucro C ++ idiomático em torno da interface decodificador e formatador.
As versões seguem o esquema de versão semântica. Todas as garantias de estabilidade se aplicam apenas à API. A estabilidade da ABI é fornecida apenas entre versões de patch.
master detém o código de borda sangrando da próxima versão zydis não lançada. Quantidades aumentadas de bugs e problemas devem ser esperados e a estabilidade da API não é garantida fora das confirmações marcadas.-beta , -rc , etc. sufixosmaintenance/v4 aponta para o código da versão mais recente do V4maintenance/v3 aponta para o código da versão mais recente do V3maintenance/v2 aponta para o código do último lançamento legado de V2-fPIC for Shared Library Builds /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
Sob algumas circunstâncias (por exemplo, ao construir Zydis como uma biblioteca estática usando o CMake e, em seguida, usar o Makefiles para vinculá -lo manualmente a uma biblioteca compartilhada), o CMake pode deixar de detectar que as informações de realocação devem ser emitidas. Isso pode ser forçado pela passagem -DCMAKE_POSITION_INDEPENDENT_CODE=ON à invocação do cmake.
Oferecemos serviços de consultoria e suporte profissional para o ZYDIS. Se você precisar de uma extensão personalizada, requer ajuda para integrar Zydis ao seu produto ou simplesmente deseja atualizações e tempos de resposta garantidos contratualmente, estamos felizes em ajudar com isso! Please contact us at [email protected].
As doações são coletadas e distribuídas usando a conta de Flobernd.
O ZYDIS é licenciado sob a licença do MIT.