
[رسمية] أداة هندسة عكسية لنظام أندرويد تركز على أتمتة التلاعب الديناميكي باستخدام 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-*؟
تحليل Manifest (محدود)
قبل التشغيل الأول، يتم تحليل Android Manifest للتطبيق. في الواقع، يتم اكتشاف الشذوذ في manifest مثل التكوين غير الآمن حقًا على هذا المستوى.
الغرض الوحيد من تحليل Android Manifest هو تغذية أنواع أخرى من المحللين.
تحليل الأذونات
يتم سرد وتحديد كل الأذونات المستخرجة من Manifest ومقارنتها بمواصفات Android لإصدار Android API المستهدف.
توفر Dexcalibur - فقط في بعض الحالات - وصفًا لغرض الإذن، وأقل إصدار Android API، إلخ.
تحليل الأنشطة
تحليل المزودين
تحليل الخدمات
تحليل المستقبلات
مراقبة الشبكة
مراقبة Intent
مراقبة الوصول إلى الملفات
لا يمكنك العثور على قائمة متعدد المستخدمين؟ ليست مشكلة، لا توجد قائمة ولكن يمكن تحقيق عمل تعاوني بسيط.
يقوم Dexcalibur بتشغيل خادم ويب. لذا، إذا كان العديد من الأشخاص على نفس شبكة خادم الويب هذا وإذا كان جدار الحماية للمضيف مهيأً جيدًا، يمكنك أن تكون عدة أشخاص يعملون على نفس نسخة Dexcalibur.
القيود الحالية هي:
شكر خاص للمساهمين:
قبل التعمق:
dexcalibur --reinstall؟ إذا لم يكن الأمر كذلك، جربه.أولاً، تحقق من حفظ الإعدادات العامة في <user_directory>/.dexcalibur/
$ ls -la ~/.dexcalibur
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user staff 2784 29 avr 11:47 ..
-rw-r--r-- 1 test_user staff 204 29 avr 11:41 config.json
$ cat ~/.dexcalibur/config.json
{
"workspace":"/Users/test_user/dexcaliburWS3",
"registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
"registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}
بعد ذلك، تحقق من أن هيكل مساحة عمل Dexcalibur كما يلي (قد يختلف محتوى مجلد /api).
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
drwxr-xr-x 8 test_user staff 256 29 avr 11:41 sdk_androidapi_29_google
/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x 4 test_user staff 128 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rwxr-xr-x 1 test_user staff 17661172 29 avr 11:41 apktool.jar
drwxr-xr-x 18 test_user staff 576 29 avr 11:41 platform-tools
/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rw-r--r-- 1 test_user staff 314 29 avr 11:41 config.json
/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
إذا كنت تستخدم جهازًا فعليًا متصلًا عبر USB، فتأكد من تمكين وضع المطور و تصحيح أخطاء USB.
إذا كنت تستخدم جهازًا افتراضيًا، اذهب إلى /splash.html، واختر Device Manager، وانقر فوق Connect over TCP ... واتبع التعليمات. إذا كنت لا تعرف عنوان IP لجهازك، دع Dexcalibur يكتشفه عن طريق تحديد مربع automatic configuration.
تحتاج إلى تسجيل الجهاز الهدف قبل أن تتمكن من استخدامه. أثناء التسجيل، يقوم Dexcalibur بجمع بيانات الجهاز الوصفية ويدفع إصدارًا متوافقًا من خادم Frida.
تُستخدم هذه البيانات الوصفية لاختيار أهداف frida-server و frida-gadget الصحيحة.
إذا ظهرت علامة تعجب حمراء ! على سطر في قائمة الأجهزة، فإن سطح المكتب الخاص بك غير مصرح به من قبل الجهاز. ربما تحتاج إلى التأكيد.
إذا كان جهازك مدرجًا في DeviceManager وتم تحديد العمود online، فانقر فوق enroll
إذا كان جهازك مدرجًا في DeviceManager وتم تحديد العمود online، فانقر فوق enroll
إصدار Dexcalibur < v0.7 لم يكن قادرًا على اكتشاف الجهاز المحاكى تلقائيًا واستخدامه بسبب تحليل غير كامل لمخرجات ADB.
منذ الإصدار >= v0.7، بمجرد تشغيل جهازك الافتراضي، اذهب إلى /splash.html أو انقر فوق DEXCALIBUR في شريط التنقل.
انقر فوق زر Device Manager في القائمة اليسرى، وانقر فوق زر Refresh في أعلى الجدول.
يجب أن يظهر صف يبدأ بمعرف ADB لجهازك الافتراضي.
أولاً، مثل أي جهاز هدف، يجب عليك تسجيله.
انقر فوق Connect over TCP ... لإضافة جهاز جديد عبر TCP أو لتوصيل جهاز مسجل عبر TCP.
إذا لم يتم تسجيل الجهاز من قبل، فسيتم التسجيل عبر TCP. في بعض الحالات، يكون الاتصال عبر TCP أبطأ من عبر USB. لذا، قد يستغرق التسجيل وقتًا إضافيًا.
إذا تم تسجيل الجهاز عبر USB، يصبح نوع النقل المفضل الجديد لهذا الجهاز هو TCP.
قم بإنشاء pull request على هذا المستودع أو أنشئ issue.
قم بإنشاء pull request على مستودع dexcalibur-doc.
التوثيق متاح هنا (موقع الوثائق) و هنا (wiki)
![]() |
|---|
| لقد قدموا ترخيصًا لجميع المنتجات <3 |
يوجد حاليًا القليل من الموارد التوثيقية والتدريبية حول Dexcalibur. إذا استخدمت Dexcalibur بنجاح للفوز في تحدي CTF أو للعثور على ثغرة أمنية، أشجعك بشدة على مشاركة تجربتك.