Volver al ranking

lifting-bits/remill

C++

Library for lifting machine code to LLVM bitcode

x86x86-64aarch64llvmllvm-irinstruction-semanticsarmv7armv8thumb2sparcv8sparcv9
Crecimiento de estrellas
Estrellas
1.8k
Forks
183
Crecimiento semanal
Issues
62
5001k1.5k
jul 2016nov 2019mar 2023jul 2026
README

Remill Slack Chat

Remill is a static binary translator that translates machine code instructions into LLVM bitcode. It translates AArch64 (64-bit ARMv8), SPARC32 (SPARCv8), SPARC64 (SPARCv9), x86 and amd64 machine code (including AVX and AVX512) into LLVM bitcode. AArch32 (32-bit ARMv8 / ARMv7) support is underway.

Remill focuses on accurately lifting instructions. It is meant to be used as a library for other tools, e.g. McSema.

Build Status

Build Status

Documentation

To understand how Remill works you can take a look at the following resources:

If you would like to contribute you can check out: How to contribute

API Documentation

Generate detailed API documentation using 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

See docs/DOCUMENTATION.md for more details on documentation style and contributing.

Getting Help

If you are experiencing undocumented problems with Remill then ask for help in the #binary-lifting channel of the Empire Hacking Slack.

Supported Platforms

Remill is supported on Linux platforms and has been tested on Ubuntu 22.04. Remill also works on macOS, and has experimental support for Windows.

Remill's Linux version can also be built via Docker for quicker testing.

Dependencies

Remill uses the following dependencies:

Name Version
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+

Getting and Building the Code

We will build the project using the superbuild in dependencies/. For more details on the dependency management system, see Remill Dependency Management.

Clone the repository

git clone https://github.com/lifting-bits/remill
cd remill

Linux/macOS

# 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

Windows (requires clang-cl)

Note: This requires running from a Visual Studio developer prompt.

# 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

macOS with Homebrew LLVM:

# 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

Linux with system LLVM:

# 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
Repositorios relacionados
ventoy/Ventoy

A new bootable USB solution.

CGNU General Public License v3.0bootable-usbmultiboot
ventoy.net
78.2k4.9k
x64dbg/x64dbg

An open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis.

C++Otherdebuggerwindows
x64dbg.com
49k2.8k
copy/v86

x86 PC emulator and x86-to-wasm JIT, running in the browser

JavaScriptnpmBSD 2-Clause "Simplified" Licenseemulatorvirtualization
copy.sh/v86/
23.3k1.9k
reactos/reactos

A free Windows-compatible Operating System

CGNU General Public License v2.0operating-systemc
reactos.org
17.9k2.2k
mytechnotalent/Reverse-Engineering

A FREE comprehensive reverse engineering tutorial covering x86, x64, 32-bit/64-bit ARM, 8-bit AVR and 32-bit RISC-V architectures.

AssemblyApache License 2.0reverse-engineeringhacking
14k1.4k
unicorn-engine/unicorn

Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)

CGNU General Public License v2.0emulatorframework
unicorn-engine.org
9.2k1.5k
capstone-engine/capstone

Capstone disassembly/disassembler framework for ARM, ARM64 (ARMv8), Alpha, BPF, Ethereum VM, HPPA, LoongArch, M68K, M680X, Mips, MOS65XX, PPC, RISC-V(rv32G/rv64G), SH, Sparc, SystemZ, TMS320C64X, TriCore, Webassembly, XCore and X86.

Creverse-engineeringdisassembler
capstone-engine.org
8.9k1.7k
cross-rs/cross

“Zero setup” cross compilation and “cross testing” of Rust crates

Rustcrates.ioApache License 2.0rustcross-compilation
8.3k460
FEX-Emu/FEX

A fast usermode x86 and x86-64 emulator for Arm64 Linux

C++MIT Licenseemulatorx86
fex-emu.com
7.7k301
klange/toaruos

Complete, independent operating system built by humans.

CUniversity of Illinois/NCSA Open Source Licenseoperating-systemtoaruos
toaruos.org
6.8k540
SuLingGG/OpenWrt-Rpi

Raspberry Pi & NanoPi R2S/R4S & G-Dock & x86 OpenWrt Compile Project. (Based on Github Action / Daily Update)

ShellMIT Licenseopenwrtgithub-actions
6.3k1.2k
janestreet/magic-trace

magic-trace collects and displays high-resolution traces of what a process is doing

OCamlMIT Licenseintelx86
magic-trace.org
6.2k199