
Bibliothèque pour lever du code machine en bitcode LLVM.
Remill est un traducteur binaire statique qui traduit les instructions de code machine en bitcode LLVM. Il traduit le code machine AArch64 (ARMv8 64 bits), SPARC32 (SPARCv8), SPARC64 (SPARCv9), x86 et amd64 (y compris AVX et AVX512) en bitcode LLVM. La prise en charge d'AArch32 (ARMv8 32 bits / ARMv7) est en cours.
Remill se concentre sur l'élévation précise des instructions. Il est destiné à être utilisé comme bibliothèque pour d'autres outils, par exemple McSema.
Pour comprendre comment Remill fonctionne, vous pouvez consulter les ressources suivantes :
Si vous souhaitez contribuer, vous pouvez consulter : Comment contribuer
Générez une documentation API détaillée à l'aide de 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
Consultez docs/DOCUMENTATION.md pour plus de détails sur le style de documentation et les contributions.
Si vous rencontrez des problèmes non documentés avec Remill, demandez de l'aide dans le canal #binary-lifting du Slack Empire Hacking.
Remill est pris en charge sur les plateformes Linux et a été testé sur Ubuntu 22.04. Remill fonctionne également sur macOS et offre un support expérimental pour Windows.
La version Linux de Remill peut également être compilée via Docker pour des tests plus rapides.
Remill utilise les dépendances suivantes :
Nous allons compiler le projet à l'aide du superbuild dans dependencies/. Pour plus de détails sur le système de gestion des dépendances, consultez Gestion des dépendances de 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
Remarque : cela nécessite d'exécuter ces commandes depuis une invite de développeur 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
| Nom | Version |
|---|
| Git | Dernière |
| 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+ |