Ghidraboy: SM83 / Game Boy Extension ل Ghidra
تجريبي جدا! لا يوجد توافق ضمانات!
تدعم إصدارات Ghidra:

سمات
- SM83 Sharp (CPU Core المستخدم في Game Boy)
- Game Boy ROM Loader:
- يمكن تحميل roms غير مصحبة (<= 32 كيلو بايت ، مثل Tetris)
- يمكن تحميل roms banked (> 32 كيلو بايت ، على سبيل المثال بوكيمون)
- يمكن تحميل ROMs Boot ROM (DMG/DMG0/MGB/SGB/SGB2)
- يمكن تحميل ROMs Boot ROM (CGB/CGB0)
- كتل الذاكرة بناءً على خريطة ذاكرة الأجهزة
- تستخدم المناطق المصرفية التراكبات (TODO: اكتشف ما إذا كانت هناك طريقة أفضل لدعمها)
- تتم معالجة الاختلافات GB vs GBC (مثل WRAM Banked)
- رموز سجلات الأجهزة (نطاق 0xFFXX)
- تتم معالجة الاختلافات GB vs GBC (مثل وجود Key1 Record)
- لعبة أنواع بيانات رأس خرطوشة Game Boy
- الأنواع المذكورة لبعض الأشياء
كيفية التثبيت
- قم بتنزيل إصدار Ghidraboy Prebuilt ، أو قم بإنشائه بنفسك.
- ابدأ Ghidra
- ملف -> تثبيت الامتدادات
- اضغط على أيقونة Plus ("إضافة تمديد")
- اختر ملف Ghidraboy zip الذي تم بناؤه أو تنزيله
- أعد تشغيل Ghidra عندما يُطلب منه تحميل التمديد بشكل صحيح
كيفية البناء
كشرط مسبق ، تحتاج إلى تثبيت Ghidra في مكان ما (تثبيت فعلي ، وليس نسخة من رمز مصدر Ghidra!).
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
أو
./gradlew -Pghidra.dir=/path/to/ghidra
يمكنك بعد ذلك العثور على امتداد مدمج. zip في دليل build/distributions .
أسئلة / مشاكل مفتوحة
- من الصعب قراءة إخراج decompiler إذا تم استخدام بعض الإرشادات (مثل دورات ، JP HL لـ Jumptables)
- يفترض "اتفاقية الاتصال ASM" أن جميع السجلات يمكن أن تكون مدخلات و/أو مخرجات. غالبًا ما يتم تخمين المدخلات/المخرجات بشكل غير صحيح ، لذا فإن الضبط اليدوي مطلوب لكل وظيفة تقريبًا
- هل تراكب هو الحل الوحيد / الأفضل للتعامل مع مناطق الذاكرة المصرفية؟ في الوقت الحالي ، في ROMs Banked ، يجب حل كل استدعاء دالة إلى 0x4000-0x7FFF
رخصة
مرخصة بموجب ترخيص Apache ، الإصدار 2.0.