
मशीन कोड को LLVM बिटकोड में लिफ्ट करने के लिए लाइब्रेरी
Remill एक स्थैतिक बाइनरी अनुवादक है जो मशीन कोड निर्देशों को LLVM bitcode में अनुवादित करता है। यह AArch64 (64-bit ARMv8), SPARC32 (SPARCv8), SPARC64 (SPARCv9), x86 और amd64 मशीन कोड (AVX और AVX512 सहित) को LLVM bitcode में अनुवादित करता है। AArch32 (32-bit ARMv8 / ARMv7) समर्थन कार्य प्रगति पर है।
Remill सटीक रूप से निर्देशों को लिफ्ट करने पर केंद्रित है। इसे अन्य टूल्स के लिए एक लाइब्रेरी के रूप में उपयोग करने का इरादा है, जैसे McSema।
Remill कैसे काम करता है, यह समझने के लिए आप निम्नलिखित संसाधनों को देख सकते हैं:
यदि आप योगदान करना चाहते हैं, तो आप देख सकते हैं: योगदान कैसे करें
Doxygen का उपयोग करके विस्तृत API दस्तावेज़ीकरण तैयार करें:
# 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 के साथ अनिर्दिष्ट समस्याओं का सामना कर रहे हैं, तो 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+ |