
واجهة أمامية سريعة لفك تجميع APK على أندرويد تستعلم مباشرة عن ملفات DEX المُجمَّعة، وتستخرج الفئات والإحالات المتبادلة في أجزاء من الثانية دون معالجة مسبقة.
عند فك تصريف تطبيقات Android APK الضخمة، الإجراء المعتاد هو الانتظار. ننتظر الأدوات لتستهلك جيجابايتات من الذاكرة، وتفكيك الملفات بالكامل، وقضاء عشرات الدقائق في بناء فهارس عالمية ثقيلة ومراجع متقاطعة... كل هذا فقط لضمان عمليات بحث سريعة في الكود لاحقًا، لكن هنا التناقض. الملف المُصرَّف مُهيكل بالفعل بشكل كبير، والمفككات الحديثة لا تستفيد من هذا أبدًا، بل تهدر كميات هائلة من الوقت والذاكرة في إعادة بناء قاعدة بيانات منتفخة لعلاقات الكود فوق بيانات مُهيكلة بالفعل. هذا النهج الهندسي يتحدى المنطق السليم. عندما أستطيع استخراج أي علاقة كود من APK مباشرة في أجزاء من الثانية، هل لا تزال هذه المعالجة المسبقة ذات قيمة؟
بدلاً من إجبار المفككات على معالجة مسبقة ثقيلة، نختار الاستعلام من الملف المُصرَّف مباشرة كقاعدة بيانات. بنينا محركًا بلا حالة وبصفر تكلفة إضافية يستخرج ويبحث في الكود عند الطلب في أجزاء من الثانية. في هذا العرض، سنستكشف الهندسة الأساسية المطلوبة لتجاوز الاختناقات التقليدية. سنوضح كيفية التخلي عن التفكيك الكامل عبر التحقيق مباشرة داخل تدفق بتات Deflate، وبناء جداول بحث Huffman كثيفة لاستخراج البيانات الوصفية الأساسية دون لمس كتل البيانات غير ذات الصلة. علاوة على ذلك، سنشرح تفاصيل تحسين مُترجم R8، خاصة كيف يترك النقل الثابت الحتمي وإلغاء تكرار التعليمات تخطيطات فيزيائية عالية التركيز، ونستغل هذا السلوك في المُترجم لتنفيذ عمليات بحث سريعة خاطفة عبر DEX. لربط إزاحات البايت كود الخام هذه بالدوال، هندسنا أساس تحديد موقع التعليمات بزمن O(1)، محققين تحديد الدوال بزمن ثابت دون بناء جداول ربط ثقيلة. أخيرًا، عند الوصول إلى هدف، يستخرج Droid ASC فقط البايت كودات المحددة وتبعياتها، ويعيد بناء DEX أدنى ومتسق ذاتيًا بالكامل في الذاكرة لفك تصريف فوري.
سنعرض هذه البنية مباشرة على APK تجاري بحجم 352MB. ينفذ Droid ASC عمليات بحث مرجعية متقاطعة عالمية في 1.79 ثانية ويفك تصريف الفئات المستهدفة في 177 مللي ثانية باستخدام 141MB فقط من الذاكرة. بمعاملة الملف كقاعدة بيانات للقراءة فقط والعمل بدون معالجة مسبقة، نعيد المفكك إلى جوهره الأساسي. لم يعد أداة فهرسة منتفخة، بل محرك فك تصريف فوري فائق السرعة يعيد تعريف كيفية تحليلنا للكود المُصرَّف جذريًا.

https://github.com/user-attachments/assets/4c4a6813-8561-490c-a573-ef113da861b6
# from PyPI
pip install droidasc
# or from source
pip install .
After installation, the droidasc CLI command is available globally:
usage: droidasc [-h] {getclass,listclass,getmanifest,findrefs} ...
ASC tooling entry.
positional arguments:
{getclass,listclass,getmanifest,findrefs}
getclass Locate the target class in APK, extract one DEX in memory, then decompile.
listclass List classes defined across all DEX entries in APK.
getmanifest Decode AndroidManifest.xml from APK and print it as XML.
findrefs Find code references for string/type/method/field across all DEX entries in APK.
options:
-h, --help show this help message and exit
examples:
droidasc app.apk --gui
droidasc getclass app.apk Lcom/poc/Main; -o Main.java
droidasc getclass app.apk com.poc.Main --threads 16
droidasc listclass app.apk -o classes.txt
droidasc listclass app.apk --prefix com.poc
droidasc getmanifest app.apk -o AndroidManifest.xml
droidasc findrefs app.apk string token -o string_refs.txt
droidasc findrefs app.apk type com.poc.Main
droidasc findrefs app.apk method onCreate --class com.poc.Main
droidasc findrefs app.apk method notify --class MainActivity --fuzzy-class -o method_refs.txt
droidasc findrefs app.apk field apiKey -o field_refs.txt
listclass prints Dalvik class descriptors in APK/DEX definition order, one per
line. With -o, output is written to the selected file instead of stdout.
--prefix com.poc filters by Lcom/poc; an already normalized prefix such as
Lcom/poc is kept unchanged.
You can also use python main.py as before — it delegates to the same entry point.
| Sponsor | Amount |
|---|---|
| HTTChina | 5000¥ |
| c01ns | 11.9¥ |
| gguowang AND cococount | 2¥ |
| Ylarod | 50.11¥ |
شكرًا لجميع الرعاة على دعمكم!
تم بناء ASC على أمل أن يساعد الجميع حقًا في تحسين سير عمل الهندسة العكسية — من تسريع الأجزاء المملة إلى جعل المستحيل يبدو روتينيًا.
Thanks to the Androguard project for providing the Android reverse-engineering and DEX analysis foundation used by Droid ASC.