
مكتبة لرفع كود الآلة إلى LLVM bitcode
Remill هو مترجم ثنائي ثابت يقوم بترجمة تعليمات الكود الآلي إلى LLVM bitcode. يترجم Remill كود الآلة لـ AArch64 (ARMv8 64 بت)، SPARC32 (SPARCv8)، SPARC64 (SPARCv9)، x86 و amd64 (بما في ذلك AVX و AVX512) إلى LLVM bitcode. الدعم لـ AArch32 (ARMv8 / ARMv7 32 بت) قيد التطوير.
يركز Remill على رفع التعليمات بدقة. وهو مصمم لاستخدامه كمكتبة لأدوات أخرى، مثل McSema.
لفهم كيفية عمل Remill، يمكنك إلقاء نظرة على الموارد التالية:
إذا كنت ترغب في المساهمة، يمكنك الاطلاع على: كيفية المساهمة
أنشئ توثيق API مفصل باستخدام 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
انظر docs/DOCUMENTATION.md لمزيد من التفاصيل حول أسلوب التوثيق والمساهمة.
إذا كنت تواجه مشكلات غير موثقة مع Remill، فاطلب المساعدة في قناة #binary-lifting على Empire Hacking Slack.
Remill مدعوم على منصات Linux وتم اختباره على Ubuntu 22.04. يعمل Remill أيضًا على macOS، وله دعم تجريبي لنظام Windows.
يمكن أيضًا بناء إصدار Remill لنظام Linux عبر Docker لاختبار أسرع.
يستخدم Remill التبعيات التالية:
سنقوم ببناء المشروع باستخدام superbuild في dependencies/. لمزيد من التفاصيل حول نظام إدارة التبعيات، انظر إدارة تبعيات 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
ملاحظة: يتطلب ذلك التشغيل من موجه أوامر مطور 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 | 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+ |