Dexcalibur هو منصة هندسية عكسية Android يركز على أتمتة الأجهزة. خصوصيتها هي استخدام التحليل الديناميكي لتحسين الاستدلال على التحليل الثابت. يهدف إلى أتمتة المهام المملة المتعلقة بالأدوات الديناميكية ، مثل:
هل تريد مشاركة شيء ما أم أنك بحاجة إلى بعض المساعدة؟ انضم إلى الدردشات الرسمية لدينا:
Telegram - أسرع طريقة لإعطاء رد
الوثائق الرسمية متوفرة هنا (الموقع - العمل قيد التقدم).
شاهد آخر الأخبار هنا: http://docs.dexcalibur.org/news.html
إظهار مقاطع فيديو Dexcalibur التجريبية: العرض التوضيحي: أقل من دقيقة واحدة لربط 61 طريقة؟ ليست مشكلة. (يوتيوب)
يساهم !
لا تتردد! هناك عدة طرق للمساهمة:
اذهب لتثبيت Doc
البديل: استخدم 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 Globaly باستخدام NPM (خيار -g ) ، فيمكن إطلاق Dexcalibur من Terminal عن طريق القيام بـ $ dexcalibur ، وإلا في الموقع الذي يمكن تشغيله بواسطة $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js .
التثبيت من المصدر: من مجلد dexcalibur ، قم بتشغيل $ dexcalibur أو $ node dexcalibur.js .
لنظام التشغيل Windows
تثبيت NPM: حدث إذا تم تثبيت DexCalibur Globaly باستخدام NPM (خيار -g ) ، يجب إطلاق DexCalibur من المحطة عن طريق تشغيل الأمر التالي من node <NPM_ROOT>/dexcalibur/dexcalibur.js .
تثبيت من المصدر: من مجلد dexcalibur ، إلى المحطة ، قم بتشغيل node dexcalibur.js .
أنت تستخدم إصدارًا سابقًا من Dexcalibur؟
اتبع الخطوات نفسها من تثبيت جديد ، وعندما يجب عليك إدخال مسار مساحة العمل ، أدخل موقع مساحة العمل الحالية.
فقط عن طريق العمل:
$ npm install -g dexcalibur
سيتم اكتشاف التكوين الحالي ومساحة العمل تلقائيًا.
يوضح لقطات الشاشة التحديث التلقائي لـ XREFs في وقت التشغيل.
في الواقع ، فإن أكبر قيود هو Dexcalibur غير قادر على إنشاء رمز مصدر للوظيفة الأصلية التي تستهدف Hook (في مكتبة JNI). ومع ذلك ، يمكنك إعلان اعتراض فريدا يدويًا عن طريق تحرير خطاف.
على افتراض أن Dexcalibur لا يوفر (للحظة) ميزات لتحليل الجزء الأصلي مثل JNI Library أو JNA ، تم فصل الميزات والقيود المتعلقة بجزء Java فقط.
تعتمد دقة التحليل على اكتمال صورة Android API المستخدمة خلال الخطوات المبكرة للتحليل. هذا يعني أنه إذا كنت تستخدم ملف DEX تم إنشاؤه من ملف Android.jar من Android SDK ، فقد تكون بعض الإشارات إلى الأساليب الداخلية أو الحقول أو الفئات من Android Java API مفقودة. يتم الحصول على نتائج أفضل عندما يبدأ التحليل من ملف "boot.oat" الذي تم استخلاصه مباشرة من جهاز حقيقي يعمل على تشغيل إصدار Android المتوقع.
تودو: اكتب النص
تودو: اكتب النص
السلوكيات المتعقبة
يمكن للمحلل الثابت الذي يشارك في "Run Smali (VM)" أن يكتشف وقبوله ولكن تتبع السلوكيات التالية:
في الواقع ، لا يتم دعم المعالجات/المستمعين لهذا التعليمات غير الصالحة ولكن يتم تتبع الأحداث وتقديمها.
Dexcalibur IR
ينتج VM تمثيلًا وسيطًا مخصصًا ومبسطًا (IR) والذي يتم عرضه فقط لمساعدة المحلل على إجراء تحليله.
اعتمادًا على قيمة عمق CallStack والتكوين ، يمكن أن تتضمن IR أو عدم تنفيذ التعليمات في الوظيفة المسمى. إذا دخل التنفيذ في كتلة المحاولة واستمر في العودة ، ولكن لا تثير الصيد أبدًا ، فلن يتم تقديم كتلة الصيد. في الواقع ، فإن الغرض من Dexcalibur IR هو جعل فقط "ما تم تنفيذه" أو "ما يمكن تنفيذه وفقًا لقيمة بعض الرمز" في سياق VM.
يساعد Dexcalibur IR في قراءة نسخة تم تنظيفها من البود من خلال إزالة Goto غير المجدية والمسند غير المعتاد. يمكن إنشاء Dexcalibur IR بواسطة VM مع 2 مستويين تبسيط:
من المستوى الأول ، يمكن استخدام IR إذا كنت لا تثق في المستوى الثاني من IR:
المستوى الثاني:
Android API Mock
تودو
تفاصيل
يتبع Smali VM الخطوات:
كيف تعليمات مقابض VM-* تعليمات؟
تحليل واضح (محدود)
قبل التشغيل الأول ، يتم تحليل بيان Android للتطبيق. في الواقع ، يتم اكتشاف الحالات الشاذة إلى هذا التكوين غير الآمن في هذا المستوى.
الغرض الوحيد من تحليل Android البيان هو ملء نوع آخر من المحللين.
تحليل الإذن
يتم سرد كل أذونات مستخرجة من البيان وتحديدها ومقارنتها بمواصفات Android لإصدار API Android المستهدف.
يوفر Dexcalibur - فقط في بعض الحالات - وصفًا لغرض الإذن ، إصدار API الذي يقل الحد الأدنى ، ...
تحليل الأنشطة
تحليل مقدمي الخدمات
تحليل الخدمات
تحليل أجهزة الاستقبال
مراقبة الشبكة
رصد نية
مراقبة الوصول إلى الملف
لا يمكنك العثور على قائمة متعددة المستخدمين؟ ليست مشكلة ، لا توجد قائمة ولكن يمكن تحقيق عمل تعاوني بسيط.
يقوم 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.
إنشاء طلب سحب على هذا المستودع أو إنشاء مشكلة.
إنشاء طلب سحب على مستودع DexCalibur-DOC.
الوثائق متوفرة هنا (موقع DOC) وهنا (ويكي)
![]() |
|---|
| عرضوا ترخيصًا لجميع المنتجات <3 |
هناك بالفعل عدد قليل من الموارد والتوثيق والتدريب حول Dexcalibur. إذا استخدمت بنجاح Dexcalibur للفوز بالتحدي CTF أو لإيجاد الضعف ، فأنا أشجعك بشدة على مشاركة تجربتك.