
Biblioteca para elevação de código de máquina para bitcode LLVM
Remill é um tradutor binário estático que traduz instruções de código de máquina em LLVM bitcode. Ele traduz código de máquina AArch64 (ARMv8 de 64 bits), SPARC32 (SPARCv8), SPARC64 (SPARCv9), x86 e amd64 (incluindo AVX e AVX512) para LLVM bitcode. O suporte para AArch32 (ARMv8 de 32 bits / ARMv7) está em andamento.
O Remill foca em extrair instruções com precisão. Ele é destinado a ser usado como uma biblioteca para outras ferramentas, por exemplo, McSema.
Para entender como o Remill funciona, você pode dar uma olhada nos seguintes recursos:
Se você gostaria de contribuir, confira: Como contribuir
Gere documentação detalhada da API usando Doxygen:
# Install Doxygen (macOS)
brew install doxygen graphviz
# Install Doxygen (Ubuntu/Debian)
sudo apt-get install doxygen graphviz
# Generate documentation
doxygen
# Open docs/doxygen/html/index.html in your browser
Veja docs/DOCUMENTATION.md para mais detalhes sobre estilo de documentação e contribuição.
Se você estiver enfrentando problemas não documentados com o Remill, peça ajuda no canal #binary-lifting do Empire Hacking Slack.
O Remill é suportado em plataformas Linux e foi testado no Ubuntu 22.04. O Remill também funciona no macOS e tem suporte experimental para Windows.
A versão Linux do Remill também pode ser compilada via Docker para testes mais rápidos.
O Remill utiliza as seguintes dependências:
Compilaremos o projeto usando o superbuild em dependencies/. Para mais detalhes sobre o sistema de gerenciamento de dependências, veja Gerenciamento de Dependências do Remill.
git clone https://github.com/lifting-bits/remill
cd remill
# Step 1: Build dependencies (including LLVM)
cmake -G Ninja -S dependencies -B dependencies/build
cmake --build dependencies/build
# Step 2: Build remill
cmake -G Ninja -B build -DCMAKE_PREFIX_PATH:PATH=$(pwd)/dependencies/install -DCMAKE_BUILD_TYPE=Release
cmake --build build
Nota: Isso requer execução a partir de um terminal de desenvolvedor do Visual Studio.
# Step 1: Build dependencies
cmake -G Ninja -S dependencies -B dependencies/build -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl
cmake --build dependencies/build
# Step 2: Build remill
cmake -G Ninja -B build -DCMAKE_PREFIX_PATH:PATH=%CD%/dependencies/install -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_BUILD_TYPE=Release
cmake --build build
# Install LLVM via Homebrew
brew install llvm@17
LLVM_PREFIX=$(brew --prefix llvm@17)
# Build dependencies with external LLVM
cmake -G Ninja -S dependencies -B dependencies/build -DUSE_EXTERNAL_LLVM=ON "-DCMAKE_PREFIX_PATH:PATH=$LLVM_PREFIX"
cmake --build dependencies/build
# Build remill
cmake -G Ninja -B build "-DCMAKE_PREFIX_PATH:PATH=$(pwd)/dependencies/install" -DCMAKE_BUILD_TYPE=Release
cmake --build build
# Build dependencies with external LLVM
cmake -G Ninja -S dependencies -B dependencies/build -DUSE_EXTERNAL_LLVM=ON
cmake --build dependencies/build
# Build remill
cmake -G Ninja -B build "-DCMAKE_PREFIX_PATH:PATH=$(pwd)/dependencies/install" -DCMAKE_BUILD_TYPE=Release
cmake --build build
| Nome | Versão |
|---|
| Git | Latest |
| CMake | 3.21+ |
| Ninja | 1+ |
| Google Flags | 52e94563 |
| Google Log | v0.7.1 |
| Google Test | v1.17.0 |
| LLVM | 15+ |
| Clang | 15+ |
| Intel XED | v2025.06.08 |
| Python | 3+ |