Reko - محلل ثنائي مفتوح المصدر
Reko هو محلل ثنائي مفتوح المصدر مكتوب في C# يحول الأكواد الآلية إلى C-like مصدر. خاصيته البارزة هي عرض الهندسة المعمارية خاصة للمنصات القديمة والغريبة: إلى جانب x86 و x64 و ARM يتعامل مع 6502 و Z80 و 68000 و VAX و PDP-11 و SPARC و PowerPC والكثير غيره. هذا يجعلها الخيار العملي للحوسبة الرجعية والثابتة القديمة والأهداف المضمنة حيث الأدوات السائدة لا توجد على الإطلاق. يوفر محرر واجهة رسومية ومحلل سطر أوامر.
التثبيت
| الطريقة | كيف |
|---|
| الإصدار | تنزيل من GitHub Releases (Windows/Linux/macOS) |
| واجهة رسومية | تشغيل reko (WPF/Avalonia UI) |
| CLI | decompile / reko-cli binary |
| من المصدر | بناء حل .NET |
| التحقق | reko-cli --version |
تحليل سطر الأوامر
| الأمر | الوصف |
|---|
reko-cli binary.exe | تحليل بكشف التنسيق التلقائي |
reko-cli --arch x86-protected-32 raw.bin | فرض هندسة معمارية |
reko-cli --base 0x8000 raw.bin | اضبط عنوان التحميل |
reko-cli --loader raw ... | معاملة الإدخال كصورة خام |
reko-cli -o outdir binary | دليل الإخراج |
# تحليل ROM Z80 خام محمل في 0x0000
reko-cli --loader raw --arch z80 --base 0x0000 game.rom
القطع الأثرية للإخراج
| الملف | يحتوي على |
|---|
*.c | C المحللة المصدر |
*.h | تصريحات النوع/الهيكل المستعادة |
*.dis | قائمة التفكيك |
*.reko | ملف المشروع (أعد التحميل في واجهة رسومية) |
| رسم بياني الاستدعاء | هيكل البرنامج |
الهندسات المعمارية المدعومة (تحديد)
| حديث | قديم / مضمنة |
|---|
| x86 / x86-64 | 6502 / 65C02 |
| ARM / AArch64 | Z80 / 8080 |
| MIPS | 68000 (m68k) |
| PowerPC | VAX و PDP-11 |
| SPARC | 8051 و AVR |
| RISC-V | Cray و Alpha وأكثر |
هذا هو السبب في الوصول إلى Reko: عندما يكون الثنائي من وحدة تحكم الثمانينات أو جهاز تحكم صناعي أو جهاز mainframe فإن محللي الأكواد الأخرى ببساطة لا تحمله.
خط أنابيب التحليل
| المرحلة | تفعل |
|---|
| التحميل | تحليل الحاوية (PE/ELF/raw/إلخ.) |
| المسح | اكتشف الأكواد مقابل البيانات وابحث عن الإجراءات |
| إعادة الكتابة | رفع التعليمات إلى تمثيل وسيط |
| التحليل | تدفق البيانات واستدلال النوع واستعادة الهيكل |
| البناء | إعادة بناء الحلقات والشروط |
| الإخراج | انبعث C والرؤوس |
يساعد فهم المراحل عندما يكون الإخراج سيء — عادة الإصلاح هو إرشاد مرحلة المسح بنقاط البداية الصحيحة وعناوين التحميل.
العمل في واجهة رسومية
| المهمة | كيف |
|---|
| فتح ثنائي | ملف → فتح واختر محمل/arch إذا لزم الأمر |
| إجراءات التصفح | جزء قائمة الإجراءات |
| اعرض C محللة | جزء الأكواد لكل إجراء |
| إعادة تسمية/إعادة الكتابة | عدل الرموز لتحسين الإخراج |
| إعادة تشغيل التحليل | أعد التحليل بعد التعليقات |
| حفظ المشروع | .reko يحافظ على التعليقات |
التكرار — التعليق وإعادة التحليل والقراءة مرة أخرى — هو كيفية الحصول على الإخراج القابل للقراءة حقاً من ثنائي مجرد.
تحسين جودة الإخراج
| المشكلة | الإصلاح |
|---|
| الأكواد تُرى كبيانات | علامة نقاط البداية / بدايات الإجراءات |
| عنوان التحميل خاطئ | ضبط --base بشكل صحيح |
| إخراج مشوه | تأكيد الهندسة المعمارية وترتيب البايتات |
| لا شيء له اسم | أعد تسمية الإجراءات/المتغيرات أثناء التعلم |
| التوقيعات المفقودة | وفر ملفات بيانات التوقيع/النوع |
Reko مقابل محللي الأكواد الأخرى
| الجانب | Reko | Ghidra | RetDec |
|---|
| الهندسات المعمارية القديمة | استثنائي | جيد | معتدل |
| واجهة رسومية تفاعلية | نعم | نعم (أغنى) | لا |
| دفعة قابلة للنص البرمجي | نعم (CLI) | نعم | نعم |
| اللغة | C# | Java | C++ |
| الأفضل للـ | أهداف Retro/غريبة | RE تفاعلي عام | خطوط أنابيب الدفعات والمضمنة |
استخدم Ghidra للعمل التفاعلي السائد و RetDec لخطوط الأنابيب الدفعة; Reko تحقق مكانتها عندما الهندسة المعمارية غير عادية.
الموارد