Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/reversenseorg/dexcalibur
أمان أندرويدالتحليل الثابتالتحليل الديناميكي (عزل)الهندسة العكسيةمصممي الأخطاءالاختبار العشوائيأمن الجوالتحليل الملفات الثنائية
GitHubreversenseorg/dexcalibur

dexcalibur

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

1.2k1306منذ 3 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع

قيد العمل : الانتقال إلى dexcalibur 2.0 | الاسم الرمزي : Reversense

npm dependencies npm npm Docker Automated build Build Status Twitter Follow PRs Welcome Maintainability

Dexcalibur banner

Dexcalibur

Dexcalibur هي منصة لعكس هندسة تطبيقات أندرويد تركز على أتمتة الأدوات (instrumentation). خصوصيتها هي استخدام التحليل الديناميكي لتحسين خوارزميات التحليل الثابت. تهدف إلى أتمتة المهام المملة المتعلقة بالأدوات الديناميكية، مثل:

  • فك ترجمة/فك تجميع bytecode المعترض أثناء التشغيل
  • كتابة كود hook وإدارة عدد كبير من رسائل hook
  • البحث عن أنماط/أشياء مثيرة للاهتمام لوضع hooks عليها
  • معالجة البيانات التي تم جمعها بواسطة hook (ملف dex، طريقة تم استدعاؤها، محمل فئة، ...)
  • وغيرها ... ولكن ليس هذا فقط، لأن Dexcalibur لديها محرك تحليل ثابت خاص بها وقادرة على تنفيذ أجزاء جزئية من smali.

هل تريد مشاركة شيء ما أو تحتاج إلى مساعدة؟ انضم إلى محادثاتنا الرسمية:

Telegram - أسرع طريقة للحصول على رد

https://discord.gg/Pfw7Kc3dS

التوثيق الرسمي متاح هنا (موقع - قيد العمل).

شاهد آخر الأخبار هنا: http://docs.dexcalibur.org/News.html

شاهد فيديوهات توضيحية لـ Dexcalibur: عرض توضيحي: أقل من دقيقة لوضع hooks على 61 طريقة؟ ليست مشكلة. (youtube)

كيف تدعم Dexcalibur؟

ساهم!

لا تتردد! هناك عدة طرق للمساهمة:

  • قم بإنشاء pull request مرتبط بإصلاح أو ميزة جديدة
  • أنشئ issue لمساعدتي في تصحيح/تطوير الأدوات
  • ساعدني في تطوير واجهة المستخدم
  • أرسل لي بريدًا إلكترونيًا بتعليقاتك
  • إلخ ...

أ. التثبيت

أ.1 تثبيت جديد

اذهب إلى وثائق التثبيت

بديل: استخدم Docker

  • على جهاز المضيف، قم بتثبيت adb (ومحاكي Android إذا كان مناسبًا)
  • docker-compose build android-dexcalibur
  • docker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bash

أ.2 تشغيل Dexcalibur

لنظامي 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.

أ.3 التحديث

من إصدار <= 0.6.x

هل تستخدم إصدارًا سابقًا من Dexcalibur؟

اتبع نفس خطوات التثبيت الجديد، وعندما يُطلب منك إدخال مسار مساحة العمل، أدخل موقع مساحة العمل الحالية.

من إصدار >= 0.7

فقط عن طريق:

root@kitploit:~
$  npm install -g dexcalibur

سيتم الكشف تلقائيًا عن التكوين ومساحة العمل الحاليين.

ج. لقطات الشاشة

تُظهر لقطات الشاشة التالية التحديث التلقائي لـ xrefs أثناء التشغيل.

Xref auto update

Features

د. الميزات والقيود

حاليًا، أكبر قيد هو أن Dexcalibur غير قادر على إنشاء كود مصدر لـ hook يستهدف دوال أصلية (في مكتبة JNI). ومع ذلك، يمكنك التصريح يدويًا عن Interceptor من Frida عن طريق تعديل hook.

بافتراض أن Dexcalibur لا يوفر (حاليًا) ميزات لتحليل الجزء الأصلي مثل مكتبة JNI أو JNA، فقد تم تفصيل الميزات والقيود المتعلقة بجزء Java فقط.

دقة التحليل تعتمد على اكتمال صورة Android API المستخدمة خلال الخطوات المبكرة للتحليل. وهذا يعني، إذا كنت تستخدم ملف DEX تم إنشاؤه من ملف Android.jar من Android SDK، فقد تكون بعض المراجع إلى الدوال الداخلية، أو الحقول، أو الفئات من واجهة برمجة تطبيقات Android Java مفقودة. يتم الحصول على نتائج أفضل عندما يبدأ التحليل من ملف "boot.oat" مستخرج مباشرة من جهاز حقيقي يعمل بالإصدار المتوقع من Android.

د.1 الميزات

د.1.A المحلل الثابت

TODO: كتابة نص

د.1.B مدير hooks

TODO: كتابة نص

د.1.C آلة smali الافتراضية لـ Dexcalibur

السلوكيات المتتبعة

المحلل الثابت المشارك في إجراء "Run smali (VM)" قادر على اكتشاف وقبول ولكن تتبع السلوكيات التالية:

  • سجل وجهة خارج الحدود (register خارج v0 - v255)
  • سجل مصدر خارج الحدود (register خارج v0 - v65535)
  • كشف تعليمات غير صالحة ترمي ضمنيًا استثناء داخليًا
  • كشف بعض أجزاء bytecode الصالحة غير المتوافقة مع مواصفات Android
  • حساب طول مصفوفة غير محددة
  • ملء مصفوفة غير محددة
  • والمزيد ...

حاليًا، لا يتم دعم المعالجات/المستمعين لمثل هذه التعليمات غير الصالحة ولكن يتم تتبع الأحداث وعرضها.

IR الخاص بـ Dexcalibur

تنتج الآلة الافتراضية تمثيلًا وسيطًا (IR) مخصصًا ومبسطًا يتم عرضه فقط لمساعدة المحلل في إجراء تحليله.

اعتمادًا على قيمة عمق callstack والتكوين، يمكن أن يتضمن IR التعليمات المنفذة داخل الدالة المستدعاة أو لا. إذا دخل التنفيذ في كتلة try واستمر حتى الإرجاع، ولكن لم ينفذ catch، فلن يتم عرض كتلة catch. في الواقع، الغرض من IR الخاص بـ Dexcalibur هو عرض "ما تم تنفيذه" أو "ما يمكن تنفيذه اعتمادًا على قيمة بعض الرموز" في سياق الآلة الافتراضية.

يساعد IR الخاص بـ Dexcalibur في قراءة نسخة منقحة من bytecode عن طريق إزالة goto غير الضرورية و predicate غير الشفافة. يمكن إنشاء IR الخاص بـ Dexcalibur بواسطة الآلة الافتراضية بمستويين من التبسيط:

المستوى الأول من IR، يمكن استخدامه إذا كنت لا تثق في المستوى الثاني من IR:

  • لا يوجد تبسيط لـ CFG: يتم عرض القفزات الشرطية وغير الشرطية.
  • يتم عرض كل move إلى register

المستوى الثاني:

  • إخفاء التعيين إذا لم يتم تعديل register بقيمة غير معروفة قبل استخدامه.
  • إزالة predicate الصحيح دائمًا/الخاطئ دائمًا
  • إزالة القفزات غير الشرطية مثل goto تحت ظروف معينة: سلف واحد فقط للكتلة الأساسية المستهدفة، إلخ ...
  • حل واستبدال استدعاء Method.invoke() بالطريقة المستدعاة إذا أمكن.
  • لا يتم عرض التعليمات داخل كتلة Try إذا تم رمي استثناء قبلها
  • ...

محاكاة Android API

TODO

التفاصيل

تتبع الآلة الافتراضية smali الخطوات التالية:

  1. تهيئة الآلة الافتراضية: ذاكرة المكدس، الكومة، محملات الفئات، منطقة الطرق، ...
  2. تقوم الآلة الافتراضية بتحميل الفئة التي تعلن عن الطريقة.
  3. (اختياري) إذا كانت الفئة تحتوي على كتل ثابتة، يتم تنفيذ clinit(). يساعد ذلك في حل القيمة الملموسة المخزنة في الخصائص الثابتة.
  4. تحميل بيانات الطريقة الوصفية
  5. تنفيذ تعليمات الطريقة، إذا كان PseudoCodeMaker مفعلًا، يتم إنشاء IR الخاص بـ Dexcalibur.

كيف تتعامل الآلة الافتراضية مع تعليمات invoke-*؟

  1. عند حدوث invoke-*، يتم حفظ جدول الرموز المحلي، ويتم تحميل الطريقة المستدعاة.
  2. إذا لم يتم تحميل الفئة المعلنة للطريقة المستدعاة من قبل، يتم تحميل الفئة.
  3. إذا لم يتم تحميل الطريقة من قبل، يتم تحميل الطريقة (بواسطة MethodArea) ويتم تهيئة جدول الرموز المحلي الخاص بها عن طريق استيراد رموز الوسائط من جدول رموز المتصل.
  4. يتم دفع الطريقة المستدعاة إلى callstack (StackMemory).
  5. يتم تنفيذ تعليمات الطريقة.
  6. يتم دفع الإرجاع إلى ذاكرة المكدس.
  7. يستعيد المتصل التحكم في التدفق.

د.1.D محللو طوبولوجيا التطبيق

تحليل Manifest (محدود)

قبل التشغيل الأول، يتم تحليل Android Manifest للتطبيق. في الواقع، يتم اكتشاف الشذوذ في manifest مثل التكوين غير الآمن حقًا على هذا المستوى.

الغرض الوحيد من تحليل Android Manifest هو تغذية أنواع أخرى من المحللين.

تحليل الأذونات

يتم سرد وتحديد كل الأذونات المستخرجة من Manifest ومقارنتها بمواصفات Android لإصدار Android API المستهدف.

توفر Dexcalibur - فقط في بعض الحالات - وصفًا لغرض الإذن، وأقل إصدار Android API، إلخ.

تحليل الأنشطة

تحليل المزودين

تحليل الخدمات

تحليل المستقبلات

د.1.E مراقبة وقت التشغيل (غير منفذة)

مراقبة الشبكة

مراقبة Intent

مراقبة الوصول إلى الملفات

د.1.F ميزات التعاون

لا يمكنك العثور على قائمة متعدد المستخدمين؟ ليست مشكلة، لا توجد قائمة ولكن يمكن تحقيق عمل تعاوني بسيط.

يقوم Dexcalibur بتشغيل خادم ويب. لذا، إذا كان العديد من الأشخاص على نفس شبكة خادم الويب هذا وإذا كان جدار الحماية للمضيف مهيأً جيدًا، يمكنك أن تكون عدة أشخاص يعملون على نفس نسخة Dexcalibur.

القيود الحالية هي:

  • لا يوجد مصادقة: يمكن لأي شخص في الشبكة إرسال طلب إلى نسخة Dexcalibur وتنفيذ أوامر عن بعد على المضيف من خلال محرك البحث.
  • لا يوجد تعريف: لا يتم تتبع التعديلات، لذا، إذا قام شخص ما بإعادة تسمية رمز، فلن تتمكن من معرفة من أعاد تسميته. حالة مماثلة: لا يمكنك معرفة من أنشأ hook معين.
  • أداة قياس على جهاز واحد: إذا كانت عدة أجهزة متصلة بمضيف Dexcalibur، وحتى إذا كان بإمكانك اختيار الجهاز المراد قياسه، فإن الرسائل الخاصة بالأداة و hooks مرتبطة بآخر جهاز تم اختياره. لذا، لا يمكنك إنشاء أداة قياس لعدة أجهزة في وقت واحد.

هـ. المساهمون في Github

شكر خاص للمساهمين:

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

و. استكشاف الأخطاء وإصلاحها

و.1 يستمر Dexcalibur في البدء في "وضع التثبيت"

قبل التعمق:

  • تأكد من أنك متصل بالإنترنت: يتم تنزيل Apktool والنظام الأساسي المستهدف أثناء التثبيت
  • هل حاولت إعادة تثبيته عن طريق تنفيذ الأمر dexcalibur --reinstall؟ إذا لم يكن الأمر كذلك، جربه.

أولاً، تحقق من حفظ الإعدادات العامة في <user_directory>/.dexcalibur/

root@kitploit:~
$ 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).

root@kitploit:~
$ 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.

تصحيح أخطاء USB مفعل، لكن جهازي لا يظهر في قائمة الأجهزة

  • قم بتوصيل/فصل USB وتأكد من السماح لجهاز الكمبيوتر الخاص بك.
  • حدد نقل الملفات

لماذا تسجيل جهاز جديد؟

تحتاج إلى تسجيل الجهاز الهدف قبل أن تتمكن من استخدامه. أثناء التسجيل، يقوم Dexcalibur بجمع بيانات الجهاز الوصفية ويدفع إصدارًا متوافقًا من خادم Frida.

تُستخدم هذه البيانات الوصفية لاختيار أهداف frida-server و frida-gadget الصحيحة.

جهازي مدرج في Device Manager، لكن لا يمكن تسجيله

إذا ظهرت علامة تعجب حمراء ! على سطر في قائمة الأجهزة، فإن سطح المكتب الخاص بك غير مصرح به من قبل الجهاز. ربما تحتاج إلى التأكيد.

إذا كان جهازك مدرجًا في DeviceManager وتم تحديد العمود online، فانقر فوق enroll

ز.1 جهازي مدرج في Device Manager

إذا كان جهازك مدرجًا في DeviceManager وتم تحديد العمود online، فانقر فوق enroll

كيف أستخدم محاكيًا بدلاً من جهاز فعلي؟

إصدار Dexcalibur < v0.7 لم يكن قادرًا على اكتشاف الجهاز المحاكى تلقائيًا واستخدامه بسبب تحليل غير كامل لمخرجات ADB.

منذ الإصدار >= v0.7، بمجرد تشغيل جهازك الافتراضي، اذهب إلى /splash.html أو انقر فوق DEXCALIBUR في شريط التنقل. انقر فوق زر Device Manager في القائمة اليسرى، وانقر فوق زر Refresh في أعلى الجدول.

يجب أن يظهر صف يبدأ بمعرف ADB لجهازك الافتراضي.

كيف أستخدم جهازًا عبر TCP؟

أولاً، مثل أي جهاز هدف، يجب عليك تسجيله.

انقر فوق Connect over TCP ... لإضافة جهاز جديد عبر TCP أو لتوصيل جهاز مسجل عبر TCP.

إذا لم يتم تسجيل الجهاز من قبل، فسيتم التسجيل عبر TCP. في بعض الحالات، يكون الاتصال عبر TCP أبطأ من عبر USB. لذا، قد يستغرق التسجيل وقتًا إضافيًا.

إذا تم تسجيل الجهاز عبر USB، يصبح نوع النقل المفضل الجديد لهذا الجهاز هو TCP.

كيف أساهم في dexcalibur؟

قم بإنشاء pull request على هذا المستودع أو أنشئ issue.

كيف أساهم في التوثيق؟

قم بإنشاء pull request على مستودع dexcalibur-doc.

التوثيق متاح هنا (موقع الوثائق) و هنا (wiki)

ح. الرعاة

https://www.jetbrains.com/?from=dexcalibur
لقد قدموا ترخيصًا لجميع المنتجات <3

ط. الموارد

يوجد حاليًا القليل من الموارد التوثيقية والتدريبية حول Dexcalibur. إذا استخدمت Dexcalibur بنجاح للفوز في تحدي CTF أو للعثور على ثغرة أمنية، أشجعك بشدة على مشاركة تجربتك.

  • THCon 2020
  • SSTIC 2020
  • شرائح Pass the SALT 2019 (PDF)
  • Youtube : عرض توضيحي
  • دليل مستخدم CLI
  • دليل المستخدم
  • استكشاف الأخطاء وإصلاحها
  • لقطات الشاشة

ي. كتبوا شيئًا عن Dexcalibur

  • Awesome Frida
  • Awesome OpenSource Security
  • n0secure.org - PassTheSalt2019 J2
  • rootshell.be - PassTheSalt2019 Wrap Up
  • PentesterLand - the 5 hacking newsletter 61
  • Technology Knowledge Database
  • Xuanwu Lab Security
  • Mobile Gitbook
  • 274 - AppsSec Ezine
  • ysh329 / Android Reverse Engineering
تنزيل الأداة