RetDec - محلل الأكواد الآلية المعاد توجيهها
RetDec (محلل Retargetable من Avast) هو محلل أكواد آلية مفتوح المصدر الذي يحول الثنائيات المجمعة مرة أخرى إلى أكواد عالية المستوى قابلة للقراءة. “معاد التوجيه” هي الخاصية الرئيسية: بدلاً من الاستعداد للهندسة المعمارية الواحدة فإنه يرفع مجموعات تعليمات عديدة — x86 و ARM و MIPS و PIC32 و PowerPC — إلى LLVM IR ثم يحلل تلك التمثيل المشترك إلى C أو pseudocode شبيه بـ Python. يعمل بشكل مستقل ويتكامل مع IDA و Ghidra و radare2.
التثبيت
| الطريقة | كيف |
|---|
| بناء الإصدار | تنزيل الحزمة المُنشاة مسبقاً من GitHub Releases |
| من المصدر | بناء CMake (انظر مستندات البناء في الريبو) |
| Docker | docker run -v "$PWD:/dst" retdec/retdec |
| التحقق | retdec-decompiler --version |
تحليل الأكواد الأساسي
| الأمر | الوصف |
|---|
retdec-decompiler binary.exe | تحليل إلى binary.exe.c |
retdec-decompiler -o out.c binary | اختر مسار الإخراج |
retdec-decompiler --backend-no-debug binary | إخراج أنظف |
retdec-decompiler --cleanup binary | إزالة الملفات الوسيطة |
retdec-decompiler --help | قائمة الخيارات الكاملة |
# تحليل واقرأ النتيجة
retdec-decompiler suspicious.exe
less suspicious.exe.c
صيغ الإخراج
| العلم | ينتج |
|---|
| (افتراضي) | مصدر C |
-f py | pseudocode شبيه بـ Python |
--backend-emit-cfg | رسوم بيانية للتحكم في التدفق |
--backend-emit-cg | رسم بياني الاستدعاء |
--config out.json | إعدادات التحليل المنظمة/النتائج |
| LLVM IR | إخراج .ll الوسيط أثناء التحليل |
الهندسات المعمارية المدعومة
| الهندسة المعمارية | الصيغ |
|---|
| x86 / x86-64 | PE و ELF و Mach-O |
| ARM / Thumb | ELF و PE و raw |
| MIPS | ELF و raw |
| PIC32 | ELF و Intel HEX |
| PowerPC | ELF |
تغطية الهندسة المعمارية الواسعة تجعل RetDec مفيد بشكل خاص للعمل المضمنة والثابتة حيث الثنائيات MIPS و PIC32 شائعة والمحللات الرئيسية توفر أقل.
الخيارات المفيدة
| الخيار | التأثير |
|---|
-a arch | فرض هندسة معمارية |
-e endian | ضع جدول الحروف (little/big) |
-m mode | الوضع: bin وraw وll |
--raw-entry-point ADDR | نقطة البداية للثنائيات الخام |
--raw-section-vma ADDR | عنوان التحميل للكود الخام |
--select-ranges A-B | تحليل فقط نطاق العناوين |
--select-functions f1,f2 | تحليل وظائف معينة |
# بقايا البرامج الثابتة الخام: أخبر RetDec كيفية تحميلها
retdec-decompiler -m raw -a mips -e big \
--raw-entry-point 0x80000000 --raw-section-vma 0x80000000 firmware.bin
ميزات التحليل
| الميزة | توفر |
|---|
| كشف صيغة الملف | تحليل PE/ELF/Mach-O |
| كشف المترجم/packer | بصمة سلسلة الأدوات |
| تحديد الدالة القائم على التوقيع | تعرف على كود المكتبة المرتبط بشكل ثابت |
| إعادة بناء النوع | استعادة الهياكل والأنواع |
| استخدام معلومات التصحيح | DWARF/PDB عند الحاجة |
تحديد الدالة البحتة يهم الكثير في الممارسة: يتيح لك تخطي آلاف الأسطر من libc المرتبط بشكل ثابت والتركيز على منطق التطبيق الخاص به.
التكاملات
| الأداة | الملحق |
|---|
| IDA Pro | RetDec IDA plugin |
| Ghidra | RetDec Ghidra plugin |
| radare2 | r2retdec |
| API | تحليل برمجياً عبر CLI/config |
RetDec مقابل محللي الأكواد الأخرى
| الجانب | RetDec | Ghidra | Hex-Rays (IDA) | Binary Ninja |
|---|
| التكلفة | مفتوح المصدر/مجاني | مفتوح المصدر/مجاني | تجاري | تجاري |
| الهندسات المعمارية | الكثيرة (بما فيها PIC32) | الكثيرة | الكثيرة (لكل ترخيص محلل) | الكثيرة |
| تفاعلي | لا (دفعة) | نعم (واجهة رسومية) | نعم | نعم |
| الأفضل للـ | تحليل الأكواد الدفعة والتلقائي المضمنة | عمل RE تفاعلي | أعلى جودة إخراج | واجهة برمجية حديثة/تجربة المستخدم |
يكمل Ghidra للعمل التفاعلي — RetDec يسطع لخطوط الأنابيب الآلية والهندسات المعمارية غير العادية.
الموارد