
機械語をLLVMビットコードに変換するライブラリ
Remillは、マシンコード命令をLLVMビットコードに変換する静的バイナリトランスレータです。AArch64(64ビットARMv8)、SPARC32(SPARCv8)、SPARC64(SPARCv9)、x86、amd64のマシンコード(AVXおよびAVX512を含む)をLLVMビットコードに変換します。AArch32(32ビットARMv8 / ARMv7)のサポートは現在開発中です。
Remillは、命令の正確なリフティングに重点を置いています。他のツール(例:McSema)のライブラリとして使用されることを意図しています。
Remillの動作を理解するには、以下のリソースを参照してください:
貢献を希望される場合は、以下をご確認ください:貢献方法
Doxygenを使用して詳細なAPIドキュメントを生成します:
# Doxygenのインストール(macOS)
brew install doxygen graphviz
# Doxygenのインストール(Ubuntu/Debian)
sudo apt-get install doxygen graphviz
# ドキュメントの生成
doxygen
# ブラウザで docs/doxygen/html/index.html を開く
ドキュメントのスタイルや貢献方法の詳細については、docs/DOCUMENTATION.mdを参照してください。
Remillに関する文書化されていない問題が発生した場合は、Empire Hacking Slackの#binary-liftingチャンネルで助けを求めてください。
RemillはLinuxプラットフォームでサポートされており、Ubuntu 22.04でテストされています。RemillはmacOSでも動作し、Windowsの実験的サポートがあります。RemillのLinux版は、Dockerを使用して迅速なテスト用にビルドすることもできます。
Remillは以下の依存関係を使用します:
dependencies/内のスーパービルドを使用してプロジェクトをビルドします。依存関係管理システムの詳細については、Remill Dependency Managementを参照してください。
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
注: これは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
| 名前 | バージョン |
|---|
| Git | 最新 |
| 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以上 |