
[رسمية] أداة هندسة عكسية لنظام أندرويد تركز على أتمتة التلاعب الديناميكي باستخدام Frida. تقوم بتفكيك dex، وتحليله بشكل ثابت، وإنشاء hooks، واكتشاف reflected methods، وتخزين البيانات المعترضة، وتقوم بأشياء جديدة منها. هدفها أن تكون منصة شاملة للهندسة العكسية لنظام أندرويد.

Dexcalibur هي منصة لعكس هندسة تطبيقات أندرويد تركز على أتمتة الأدوات (instrumentation). خصوصيتها هي استخدام التحليل الديناميكي لتحسين خوارزميات التحليل الثابت. تهدف إلى أتمتة المهام المملة المتعلقة بالأدوات الديناميكية، مثل:
هل تريد مشاركة شيء ما أو تحتاج إلى مساعدة؟ انضم إلى محادثاتنا الرسمية:
Telegram - أسرع طريقة للحصول على رد
التوثيق الرسمي متاح هنا (موقع - قيد العمل).
شاهد آخر الأخبار هنا: http://docs.dexcalibur.org/News.html
شاهد فيديوهات توضيحية لـ Dexcalibur: عرض توضيحي: أقل من دقيقة لوضع hooks على 61 طريقة؟ ليست مشكلة. (youtube)
ساهم!
لا تتردد! هناك عدة طرق للمساهمة:
اذهب إلى وثائق التثبيت
بديل: استخدم Docker
adb (ومحاكي Android إذا كان مناسبًا)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashلنظامي Linux و MacOS
تثبيت NPM: إذا تم تثبيت Dexcalibur بشكل عام باستخدام NPM (خيار -g)، فيمكن تشغيل Dexcalibur من الطرفية عن طريق كتابة $ dexcalibur، وإلا فمن الموقع يمكن تشغيله بكتابة $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js.
تثبيت من المصدر: من مجلد dexcalibur، قم بتشغيل $ dexcalibur أو $ node dexcalibur.js.
لنظام Windows
تثبيت NPM: حتى إذا تم تثبيت Dexcalibur بشكل عام باستخدام NPM (خيار -g)، يجب تشغيل Dexcalibur من الطرفية عن طريق تشغيل الأمر التالي من terminal: node <NPM_ROOT>/dexcalibur/dexcalibur.js.
تثبيت من المصدر: من مجلد dexcalibur، في الطرفية، قم بتشغيل الأمر node dexcalibur.js.
هل تستخدم إصدارًا سابقًا من Dexcalibur؟
اتبع نفس خطوات التثبيت الجديد، وعندما يُطلب منك إدخال مسار مساحة العمل، أدخل موقع مساحة العمل الحالية.
فقط عن طريق:
$ npm install -g dexcalibur
سيتم الكشف تلقائيًا عن التكوين ومساحة العمل الحاليين.
تُظهر لقطات الشاشة التالية التحديث التلقائي لـ xrefs أثناء التشغيل.


حاليًا، أكبر قيد هو أن Dexcalibur غير قادر على إنشاء كود مصدر لـ hook يستهدف دوال أصلية (في مكتبة JNI). ومع ذلك، يمكنك التصريح يدويًا عن Interceptor من Frida عن طريق تعديل hook.
بافتراض أن Dexcalibur لا يوفر (حاليًا) ميزات لتحليل الجزء الأصلي مثل مكتبة JNI أو JNA، فقد تم تفصيل الميزات والقيود المتعلقة بجزء Java فقط.
دقة التحليل تعتمد على اكتمال صورة Android API المستخدمة خلال الخطوات المبكرة للتحليل. وهذا يعني، إذا كنت تستخدم ملف DEX تم إنشاؤه من ملف Android.jar من Android SDK، فقد تكون بعض المراجع إلى الدوال الداخلية، أو الحقول، أو الفئات من واجهة برمجة تطبيقات Android Java مفقودة. يتم الحصول على نتائج أفضل عندما يبدأ التحليل من ملف "boot.oat" مستخرج مباشرة من جهاز حقيقي يعمل بالإصدار المتوقع من Android.
TODO: كتابة نص
TODO: كتابة نص
السلوكيات المتتبعة
المحلل الثابت المشارك في إجراء "Run smali (VM)" قادر على اكتشاف وقبول ولكن تتبع السلوكيات التالية:
حاليًا، لا يتم دعم المعالجات/المستمعين لمثل هذه التعليمات غير الصالحة ولكن يتم تتبع الأحداث وعرضها.
IR الخاص بـ Dexcalibur
تنتج الآلة الافتراضية تمثيلًا وسيطًا (IR) مخصصًا ومبسطًا يتم عرضه فقط لمساعدة المحلل في إجراء تحليله.
اعتمادًا على قيمة عمق callstack والتكوين، يمكن أن يتضمن IR التعليمات المنفذة داخل الدالة المستدعاة أو لا. إذا دخل التنفيذ في كتلة try واستمر حتى الإرجاع، ولكن لم ينفذ catch، فلن يتم عرض كتلة catch. في الواقع، الغرض من IR الخاص بـ Dexcalibur هو عرض "ما تم تنفيذه" أو "ما يمكن تنفيذه اعتمادًا على قيمة بعض الرموز" في سياق الآلة الافتراضية.
يساعد IR الخاص بـ Dexcalibur في قراءة نسخة منقحة من bytecode عن طريق إزالة goto غير الضرورية و predicate غير الشفافة. يمكن إنشاء IR الخاص بـ Dexcalibur بواسطة الآلة الافتراضية بمستويين من التبسيط:
المستوى الأول من IR، يمكن استخدامه إذا كنت لا تثق في المستوى الثاني من IR:
المستوى الثاني:
محاكاة Android API
TODO
التفاصيل
تتبع الآلة الافتراضية smali الخطوات التالية:
كيف تتعامل الآلة الافتراضية مع تعليمات invoke-*؟