مكتبة ومجموعة من أدوات سطر الأوامر لتحليل رموز التصحيح من ألعاب PS2. ركزت سلسلة الإصدارات 1.x على رموز STABS في أقسام .mdebug، بينما يمكن لسلسلة الإصدارات 2.x أيضًا تحليل رموز ELF القياسية ورموز رابط SNDLL. دعم DWARF قيد التنفيذ.
أداة فك تشابك رموز C++ مع دعم لكل من مخطط تغيير Itanium C++ ABI (GCC 3+) الجديد ونظامGC 2 القديم.
مفكك MIPS EE الأساسي نصف العامل. ربما ليست مثيرة للاهتمام للغاية.
محلل جدول الرموز والقلابة. يمكنه استخراج المعلومات التالية:
يتم دعم تنسيقات الإخراج التالية:
هذا مخصص للاستخدام مع ghidra-emotionengine-reloaded (>= 2.1.0 أو أحد الإصدارات غير المستقرة) لاستيراد كل هذه المعلومات إلى Ghidra. لاحظ أنه على الرغم من الاسم، يجب أن يعمل محلل STABS مع معالجات R3000 (IOP) وربما معالجات MIPS الأخرى أيضًا.
يشبه هذا stdump إلا أنه ينظم مخرجاته في ملفات مصدر منفصلة، ويحتوي على عدد من الميزات الإضافية المصممة لمحاولة جعل المخرجات المذكورة أقرب إلى كود المصدر الصحيح. يجب توفير ملف SOURCES.txt
في دليل الإخراج، والذي يمكن إنشاؤه باستخدام أمر stdump files
(يجب عليك إصلاح المسارات يدويًا بحيث تكون مرتبطة بدليل الإخراج، وإزالة العناوين). بالإضافة إلى ذلك، لن تتم الكتابة فوق الملفات غير الفارغة التي لا تبدأ بـ // STATUS: NOT STARTED
.
إذا تم توفير ملف FUNCTIONS.txt
في دليل المخرجات، كما يمكن إنشاؤه باستخدام البرنامج النصي CCCDecompileAllFunctions.java
المضمن لـ Ghidra، فسيتم استخدام الكود من هذا الملف لملء أجسام الوظائف في المخرجات. في هذه الحالة، المجموعة الأولى من إعلانات المتغيرات المحلية المنبعثة ستكون تلك المستردة من الرموز، وستكون المجموعة الثانية من التعليمات البرمجية المتوفرة في ملف الوظائف. يتم تفكيك أسماء الوظائف.
ستتم طباعة بيانات المتغير الشامل بطريقة منظمة بناءً على نوع البيانات الخاصة به.
سيتم فرز أنواع البيانات في الملفات المقابلة لها. نظرًا لعدم تخزين هذه المعلومات في جدول الرموز، يستخدم UNCC الأساليب البحثية لتعيين الأنواع للملفات. سيتم وضع الأنواع في ملفات .c
أو .cpp
عندما لا يكون هناك سوى وحدة ترجمة واحدة يظهر فيها النوع، وملفات .h
عندما تكون هناك عدة ملفات (وبالتالي عندما يجب استخدام الاستدلال لتحديد مكان وضعها).
يوصى باستخدام منسق التعليمات البرمجية مثل clang-format
أو astyle
في المخرجات.
cmake -B bin/
cmake --build bin/
mdebugread.c
من gdb (القراءة)ecoff.c
من الغاز (الكتابة)include/coff/sym.h
من binutils (الرؤوس)stabs.c
من binutils (القراءة)stabsread.c
من gdb (القراءة)dbxread.c
من gdb (القراءة)dbxout.c
من دول مجلس التعاون الخليجي (الكتابة)stab.def
من دول مجلس التعاون الخليجي (رموز الرموز) يتم إصدار الكود المصدري لمكتبة CCC وأدوات سطر الأوامر المرتبطة بها بموجب ترخيص MIT.
يتم استخدام أداة فك تشابك GNU، التي تحتوي على ملفات مصدر مرخصة بموجب GPL وLGPL. يتم استخدام RapidJSON بموجب ترخيص MIT. يتم استخدام مكتبة GoogleTest بواسطة مجموعة الاختبار بموجب ترخيص BSD المكون من 3 فقرات.