
يقوم بفك تجميع ملفات Android APK/XAPK/JAR/AAR واستخراج واجهات HTTP API وأنماط المصادقة وتدفقات الاستدعاء باستخدام jadx، مع استعادة أسماء Kotlin المقاومة لـ R8 لأغراض البحث الأمني واختبار الاختراق.
مهارة Claude Code تقوم بفك تجميع ملفات Android APK/XAPK/JAR/AAR وتستخرج واجهات HTTP APIs التي يستخدمها التطبيق — نقاط نهاية Retrofit، استدعاءات OkHttp، عناوين URL المضمّنة، أنماط المصادقة — حتى تتمكن من توثيقها وإعادة إنتاجها دون الحاجة إلى الكود المصدري الأصلي.
دعم Kotlin من الدرجة الأولى: تطبيقات Android الحديثة مبنية بـ Kotlin/KMP، ومشوّشة بشكل كبير باستخدام R8. تستعيد هذه المهارة أسماء فئات Kotlin الأصلية من البيانات الوصفية التي لا يستطيع R8 إزالتها، وتستخرج واجهات API من Ktor وApollo (GraphQL) وKoin — وليس فقط حزمة Retrofit/OkHttp الكلاسيكية. راجع استعادة أسماء Kotlin أدناه.
دعم Windows / PowerShell (تجريبي): سكربتات
*.ps1إلى جانب سكربتات bash هي مساهمة مجتمعية حديثة، ولا تزال قيد التثبيت. لأي مشكلات، يرجى فتح issue على هذا المستودع (وليس على forks المساهمين الأصلية): يتم صيانة سكربتات PowerShell هنا بواسطة @SimoneAvogadro.
| القدرة | الوصف |
|---|---|
| البصمة أولاً (المرحلة 0) | فرز APK/XAPK في ثوانٍ — اكتشاف الإطار (Flutter / React Native / Cordova / Xamarin / native-Kotlin)، حزمة HTTP، مستوى التشويش والمكتبات الأصلية قبل إنفاق الوقت على فك تجميع كامل |
| فك التجميع | ملفات APK وXAPK وJAR وAAR باستخدام jadx وFernflower/Vineflower (محرك واحد أو مقارنة جنباً إلى جنب) |
| استعادة أسماء Kotlin | إعادة بناء أسماء فئات *Repository / *ViewModel / *UseCase الأصلية من ملفات ثنائية مشوّشة بـ R8 باستخدام بيانات Kotlin الوصفية التي لا يستطيع R8 إزالتها |
| استخراج واجهات API | Retrofit وOkHttp وVolley وحزم Kotlin/KMP الحديثة: Ktor وApollo (GraphQL) وKoin DI — نقاط النهاية، عناوين URL المضمّنة، ترويسات المصادقة، الرموز ومخططات توقيع الطلبات HMAC |
| تتبع تدفقات الاستدعاء | من Activities/Fragments عبر ViewModels والمستودعات وصولاً إلى استدعاءات HTTP |
| تحليل الهيكل | Manifest، الحزم، أنماط المعمارية |
| التعامل مع التشويش | استخراج المسارات/عناوين URL المقاوم لـ R8 بالإضافة إلى استراتيجيات للتنقل في مخرجات ProGuard/R8 |
مطلوب:
اختياري (موصى به):
راجع plugins/android-reverse-engineering/skills/android-reverse-engineering/references/setup-guide.md للحصول على تعليمات التثبيت التفصيلية.
داخل Claude Code، شغّل:
/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
ستكون المهارة متاحة بشكل دائم في جميع الجلسات المستقبلية.
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git
ثم في Claude Code:
/plugin marketplace add /path/to/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
/decompile path/to/app.apk
يقوم هذا بتشغيل سير العمل الكامل: فحص التبعيات، فك التجميع، وتحليل الهيكل الأولي.
تنشط المهارة عند عبارات مثل:
يمكن أيضاً استخدام السكربتات بشكل مستقل:
# Check dependencies
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh
# Install a missing dependency (auto-detects OS and package manager)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh jadx
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh vineflower
# Fingerprint an APK/XAPK BEFORE decompiling (Phase 0 triage):
# framework, HTTP stack, obfuscation level, native libs, notable SDKs
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/fingerprint.sh app.apk
# Decompile APK with jadx (default)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk
# Decompile XAPK (auto-extracts and decompiles each APK inside)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app-bundle.xapk
# Decompile with Fernflower
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower library.jar
# Run both engines and compare
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk
# Find API calls — defaults to a full scan across every supported stack
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --retrofit
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --urls
# Modern Kotlin/KMP stacks and obfuscation-resistant extraction
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --ktor # Ktor client
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --apollo # Apollo / GraphQL
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --paths # quoted path literals that survive R8 inlining
معظم تطبيقات Kotlin/KMP الواقعية تُشحن عبر R8، لذا تظهر الفئات المفكوكة
بأسماء مثل a.b.c. يعيد R8 تسمية رموز JVM لكنه لا يستطيع إزالة سلاسل
بيانات Kotlin الوصفية — يحتاج وقت تشغيل Kotlin (reflection، coroutines) إلى
الأسماء المؤهلة بالكامل الأصلية في وقت التشغيل. تستخرج هذه المهارة تلك
التعليقات التوضيحية @DebugMetadata / @Metadata لإعادة بناء خريطة
obfuscated → real لأسماء الفئات. على تطبيق نموذجي، تستعيد ما يقارب 100% من
فئات *Repository / *ViewModel / *UseCase / *Impl التي تريد فعلاً
قراءتها.
# 1. Build the mapping from the decompiled sources
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/recover-kotlin-names.sh output/sources/ output/names/
# → output/names/mapping.tsv, mapping.json, by_package/