Sleigh هي لغة تستخدم لوصف دلالات مجموعات التعليمات من المعالجات الدقيقة للأغراض العامة ، مع تفاصيل كافية لتسهيل الهندسة العكسية للبرامج التي تم تجميعها لهذه الهياكل. إنه جزء من منصة الهندسة العكسية Ghidra ويؤكد اثنين من مكوناتها الرئيسية: محركات تفكيكها وتفكيكها.
يوفر هذا المستودع مشروع بناء قائم على CMAKE لـ Sleigh بحيث يمكن بناؤه وتعبئته كمكتبة مستقلة وإعادة استخدامها في مشاريع أخرى غير Ghidra.
| اسم | يدعم |
|---|---|
| Linux | نعم |
| ماكوس | نعم |
| النوافذ | نعم |
| اسم | إصدار | حزمة Linux للتثبيت | حزمة MacOS Homebrew للتثبيت |
|---|---|---|---|
| (يبني الرأس) Zlib | مؤخرًا | Zlib1g-dev | زلب |
| غيت | أحدث | غيت | ن/أ |
| cmake | 3.18+ | cmake | cmake |
ملاحظة : يسحب مشروع Cmake هذا رمز مصدر Ghidra من الإنترنت أثناء التكوين. راجع الملاحظة في قسم رمز مصدر Ghidra لمزيد من التفاصيل.
لبناء وثائق:
| اسم | إصدار | حزمة Linux للتثبيت | حزمة MacOS Homebrew للتثبيت |
|---|---|---|---|
| Doxygen | أحدث | Doxygen | Doxygen |
| GraphViz | أحدث | GraphViz | GraphViz |
# Clone this repository (CMake project for sleigh)
git clone https://github.com/lifting-bits/sleigh.git
cd sleigh
# Configure CMake
cmake -B build -S .
# Build Sleigh
cmake --build build --parallel 8
# Install Sleigh
cmake --install build --prefix ./installلم يتم تضمين رمز مصدر Ghidra فعليًا في هذا الريبو GIT ، وبشكل افتراضي ، ستقوم CMAKE تلقائيًا بسحب نسخة مستقرة من الإنترنت من أجلك.
يرجى الاطلاع على src/README.md لمزيد من المعلومات حول كيفية تخصيص رمز مصدر Ghidra الذي سيتم استخدامه/تجميعه ، بما في ذلك تحديد نسختك المحلية من مصدر Ghidra.
يدعم تكوين CMAKE أيضًا بناء حزم مزلقة.
على سبيل المثال:
# Package Sleigh
cmake --build build --target package تم تضمين برنامج مثال يسمى sleigh-lift لإظهار كيفية استخدام واجهة برمجة تطبيقات التزلج. يستغرق سلسلة من البايتات سداسي عشرية ويمكن أن تفكيكها أو رفعها إلى الرمز p. يمكن استدعاء البرنامج على النحو التالي ، حيث يجب أن تكون وسيطة action إما disassemble أو pcode :
sleigh-lift [action] [sla_file] [bytes] [-a address] [-p root_sla_dir] [-s pspec_file]على سبيل المثال ، لتفكيك سلسلة البايت التالية:
$ sleigh-lift disassemble x86-64.sla 4881ecc00f0000
0x00000000: SUB RSP,0xfc0ورفعها إلى P-Code:
$ sleigh-lift pcode x86-64.sla 4881ecc00f0000
(register,0x200,1) = INT_LESS (register,0x20,8) (const,0xfc0,8)
(register,0x20b,1) = INT_SBORROW (register,0x20,8) (const,0xfc0,8)
(register,0x20,8) = INT_SUB (register,0x20,8) (const,0xfc0,8)
(register,0x207,1) = INT_SLESS (register,0x20,8) (const,0x0,8)
(register,0x206,1) = INT_EQUAL (register,0x20,8) (const,0x0,8)
(unique,0x12c00,8) = INT_AND (register,0x20,8) (const,0xff,8)
(unique,0x12c80,1) = POPCOUNT (unique,0x12c00,8)
(unique,0x12d00,1) = INT_AND (unique,0x12c80,1) (const,0x1,1)
(register,0x202,1) = INT_EQUAL (unique,0x12d00,1) (const,0x0,1) إذا كنت لا ترغب في إنشاء sleigh-lift ، فيجب عليك تعيين خيار Cmake Variable sleigh_BUILD_EXTRATOOLS لإيقاف OFF أثناء تكوين Cmake.
يحتوي هذا المستودع على مساعد ليس جزءًا من مزلقة/غيدا ، والتي يمكنك العثور عليها في دليل support . يحتوي على التوقيع التالي ويمكنه مساعدة المستخدم في العثور على موقع ملف Spec المعطى على النظام:
std::optional<std::filesystem::path>
FindSpecFile (std::string_view file_name,
const std::vector<std::filesystem::path> &search_paths =
gDefaultSearchPaths ); ستبحث وظيفة sleigh::FindSpecFile في المسارات التي يوفرها المستخدم عبر وسيطة search_paths للحصول على ملف spec مع اسم file_name . الوسيطة الافتراضية لـ search_paths هي sleigh::gDefaultSearchPaths التي تحتوي على أدلة التثبيت/الإنشاء التي تم إنشاؤها أثناء تكوين CMake ومجموعة من مواقع التثبيت الشائعة.
إذا كنت لا ترغب في إنشاء مساعدين ، فيجب عليك تعيين خيار CMake Variable sleigh_BUILD_SUPPORT إلى OFF أثناء تكوين CMAKE.
يوفر تثبيت Sleigh واجهة Cmake التي يمكنك استخدامها عند إنشاء مشروعك.
يمكنك العثور على مثال على كيفية استخدام ملف تكوين حزمة CMake في مثال Find_Package.
نحن نقدم أيضًا وظيفة Cmake Helper sleigh_compile لتجميع ملفات .slaspec باستخدام برنامج التحويل البرمجي.
يمكنك العثور على مثال Cmake أكثر تعقيدًا مع تجميع مواصفات مزلقة في دليل example ، والذي يستخدم رمز مصدر مثال مزلقة مقدمة من المنبع.
أخيرًا ، يمكنك تحديد موقع ملفات الزلاجات المترجمة التي تم تثبيتها من خلال Cmake Variable sleigh_INSTALL_SPECDIR ، وهو طريق مطلق إلى دليل الجذر لملفات الزلاجات المترجمة --- يجب عليك فحص هذا يدويًا لمعرفة ما يمكن توقعه.
الإشارة إلى ملف CMAKE CONFIG وملف CMAKE specfiles المقترحة لمعرفة المزيد حول متغيرات ووحدات CMAKE المكشوفة.
انظر ملف الترخيص.