إضافة JADX Magic Strings
مكوّن إضافي لـ JADX يستخرج المعلومات من ثوابت السلاسل النصية.
الميزات
يستخرج المكوّن الإضافي ويحلل ثوابت السلاسل النصية من الكود المُفكَّك للعثور على:
- مراجع ملفات المصدر: يكتشف المراجع إلى ملفات مصدر Java/Kotlin (
.java, .kt, .kts, .scala, .groovy) في ثوابت السلاسل النصية
- مرشحو أسماء الدوال: يحدد أسماء الدوال المحتملة من السلاسل النصية باستخدام أنماط regex
- تحليل السلاسل النصية: يجمع جميع ثوابت السلاسل النصية مع الدوال والفئات المرتبطة بها
التثبيت
الخيار 1: التثبيت من GitHub (موصى به)
إذا كان هذا المكوّن الإضافي منشورًا على GitHub، يمكنك تثبيته مباشرة:
jadx plugins --install "github:0rshemesh:jadx-magic-strings"
الخيار 2: البناء والتثبيت من المصدر
-
استنساخ المستودع:
git clone https://github.com/0rshemesh/jadx-magic-strings.git
cd jadx-magic-strings
-
بناء المكوّن الإضافي:
-
تثبيت المكوّن الإضافي:
jadx plugins --install-jar build/libs/jadx-magic-strings-1.0.1.jar
أو انسخ ملف JAR يدويًا إلى دليل المكوّنات الإضافية في JADX:
- Linux/Mac:
~/.local/share/jadx/plugins/dropins/
- Windows:
%APPDATA%\jadx\plugins\dropins\
بناء المكوّن الإضافي
يمكن بناء المكوّن الإضافي بشكل مستقل:
سيتم إنشاء ملف JAR للمكوّن الإضافي في:
build/libs/jadx-magic-strings-1.0.1.jar
المتطلبات:
- Java 11 أو أحدث
- Gradle (أو استخدم غلاف Gradle المرفق:
./gradlew)
الاستخدام
في واجهة JADX الرسومية
-
ثبّت المكوّن الإضافي (انظر قسم التثبيت أعلاه)
-
شغّل واجهة JADX الرسومية:
-
افتح ملف APK/DEX الخاص بك في واجهة JADX الرسومية
-
انتظر اكتمال فك التجميع (يعمل المكوّن الإضافي تلقائيًا بعد فك التجميع)
-
الوصول إلى المكوّن الإضافي:
- انتقل إلى قائمة Plugins في شريط القوائم
- انقر على "Magic Strings: Show Results"
- ستفتح نافذة حوار بعدة علامات تبويب:
- Source Files: عرض شجري يوضح مسارات ملفات المصدر المكتشفة ومراجعها
- Top Candidates + Source Files: عرض مدمج لمرشحي الدوال الأعلى تسجيلًا، مُجمّعين حسب ملف المصدر
- Method Candidates (Filtered): جدول يعرض مرشحي أسماء الدوال بعد التصفية
- All Strings: جدول يعرض جميع ثوابت السلاسل النصية المستخرجة

في واجهة أوامر JADX (CLI)
يعمل المكوّن الإضافي تلقائيًا أثناء فك التجميع، لكن لا توجد واجهة CLI لعرض النتائج. استخدم الواجهة الرسومية لعرض المعلومات المستخرجة.
كيف يعمل
- بعد فك التجميع، يفحص المكوّن الإضافي جميع الدوال في جميع الفئات
- يستخرج ثوابت السلاسل النصية من عُقد التعليمات (تعليمات CONST_STR)
- يحلل السلاسل النصية باستخدام أنماط regex:
- ملفات المصدر: يطابق مسارات الملفات المنتهية بـ
.java, .kt, إلخ.
- أسماء الدوال: يطابق أنماط camelCase التي تبدو كأسماء دوال
- يخزن النتائج في بنية بيانات يمكن الوصول إليها عبر الواجهة الرسومية
أمثلة على حالات الاستخدام
- الهندسة العكسية: العثور على أسماء ملفات المصدر الأصلية التي قد تكشف بنية المشروع
- إزالة التعتيم: تحديد أسماء الدوال من سلاسل التصحيح أو رسائل الخطأ
- تحليل الكود: فهم العلاقات بين السلاسل النصية والدوال
- تحليل البرمجيات الخبيثة: استخراج السلاسل النصية المثيرة للاهتمام التي قد تشير إلى وظائف معينة
القيود
- يعمل المكوّن الإضافي فقط بعد اكتمال فك التجميع
- يعتمد استخراج السلاسل النصية على الكود الذي يتم فك تجميعه (بعض الكود المُعمّى قد لا يحتوي على سلاسل نصية يمكن الوصول إليها)
- يستخدم كشف أسماء الدوال استدلالات وقد ينتج نتائج إيجابية خاطئة
- يعتمد كشف ملفات المصدر على السلاسل النصية التي تحتوي على مسارات ملفات (غير موجودة دائمًا)
استكشاف الأخطاء وإصلاحها
المكوّن الإضافي لا يظهر في القائمة:
- تأكد من تثبيت المكوّن الإضافي بشكل صحيح
- تحقق من أن ملف JAR للمكوّن الإضافي موجود في دليل المكوّنات الإضافية
- تحقق من وجود ملف الخدمة:
META-INF/services/jadx.api.plugins.JadxPlugin
- تأكد من استخدام إصدار متوافق من JADX (1.5.2+)
لا تظهر أي نتائج:
- قد لا يحتوي الكود على سلاسل نصية ذات صلة
- جرب فك تجميع ملف APK/DEX مختلف
- بعض الكود المُعمّى قد لا يحتوي على سلاسل نصية قابلة للاستخراج
أخطاء البناء:
- تأكد من استخدام Java 11 أو أحدث
- شغّل
./gradlew clean build لإعادة بناء كل شيء
- تحقق من أن إصدار JADX في
build.gradle.kts يطابق إصدارًا متاحًا على Maven Central
المؤلف
تم الإنشاء والصيانة بواسطة 0rshemesh.
الترخيص
هذا المكوّن الإضافي مرخص بموجب رخصة Apache 2.0. راجع ملف LICENSE للحصول على التفاصيل.