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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
redexer — إطار عمل Redexer للتجهيز الثنائي لرمز Dalvik البايت | Kitploit
أدوات/GitHubGitHub/plum-umd/redexer
أمان أندرويدالتحليل الثابتالتحليل الديناميكي (عزل)الهندسة العكسيةتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليم
GitHubplum-umd/redexer

redexer

إطار عمل Redexer للتجهيز الثنائي لرمز Dalvik البايت

عرض المستودع
17431منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Build Status

redexer

Redexer هي أداة إعادة هندسة تتعامل مع ثنائيات تطبيقات Android. هذه الأداة قادرة على تحليل ملف DEX إلى بنية بيانات في الذاكرة؛ واستنتاج المعاملات التي يستخدم بها التطبيق أذونات معينة (نسمي هذه الميزة RefineDroid)؛ وتعديل وإعادة تحويل تلك البنية لإنتاج ملف DEX ناتج (نسمي هذه الميزات Dr. Android، والتي تعني إعادة كتابة Dalvik لنظام Android).

المنشورات

  • Dr. Android and Mr. Hide: Fine-grained Permissions in Android Applications. Jinseong Jeon, Kristopher K. Micinski, Jeffrey A. Vaughan, Ari Fogel, Nikhilesh Reddy, Jeffrey S. Foster, and Todd Millstein. In ACM CCS Workshop on Security and Privacy in Smartphones and Mobile Devices (SPSM '12), Oct 2012.

المتطلبات

  • OCaml و Ruby

تم اختبار هذه الأداة باستخدام OCaml 4.09.0 و Ruby 1.8.6(7)، لذا تحتاج إلى تثبيتهما (أو إصدارات أعلى).

  • مدير حزم/مكتبات OCaml ومكتبة SHA

للتعامل مع توقيع SHA-1 (تجزئة) في تنسيق DEX، نستخدم مكتبة OCaml SHA عبر ocamlfind/findlib، وهو مدير مكتبات OCaml. أسهل طريقة لتثبيت كليهما هي استخدام OPAM، مدير حزم OCaml، الذي يحتوي على كلا الحزمتين—OPAM ocamlfind و OPAM sha.

يمكنك أيضًا بناء و/أو تثبيت كليهما مباشرة. إذا كنت تستخدم جهاز لينكس، يمكنك العثور بسهولة على التوزيعات.

إذا لم يكن الأمر كذلك، على سبيل المثال باستخدام Mac، فستحتاج إلى بنائه بنفسك. يمكنك العثور على أكواد المصدر الأصلية هنا. قم ببنائه عن طريق تشغيل make، واربط الدليل الناتج في دليل site-lib الجذر لـ ocamlfind؛ أو sudo make install.

إذا كنت تستخدم جهاز كمبيوتر، فستحتاج إلى تثبيت ocamlfind/findlib و FlexDLL أولاً. يرجى التأكد من تعيين متغيرات البيئة بشكل صحيح كما يلي:

root@kitploit:~
OCAMLLIB=C:\OCaml\lib
CAML_LD_LIBRARY_PATH=%OCAMLLIB%\stublibs
FLEXLINKFLAGS=-L%MinGW%\lib -L%MinGW%\lib\gcc\mingw32\N.N.N
  • حزم OPAM :

    • sha
    • str
    • ppx_deriving
    • ppx_deriving_yojson
    • yojson
  • Android SDK (أو المصادر)

لفك وإعادة تعبئة ملفات apk، نستخدم apktool، وهي أداة إعادة هندسة مفتوحة المصدر لـ APK. نظرًا لأنها تستخدم aapt، أداة تعبئة أصول Android، فأنت بحاجة إلى تثبيت Android SDK أو المصادر. بالإضافة إلى ذلك، نستخدم zipalign، والتي تأتي أيضًا من Android SDK، لتحسين التطبيقات المعاد كتابتها.

يمكنك تعيين المسارات إلى أدوات Android الأساسية عن طريق إضافة ما يلي إلى ملف التعريف الخاص بك:

root@kitploit:~
ANDROID_HOME=$HOME/android-sdk    # المسار الخاص بك هنا!
export ANDROID_HOME

PATH=$PATH:$ANDROID_HOME/tools
PATH=$PATH:$ANDROID_HOME/platform-tools
PATH=$PATH:$ANDROID_HOME/build-tools/19.0.0    # رقم الإصدار المثبت
export PATH
  • RubyGems و Nokogiri

النصوص الرئيسية مكتوبة بلغة Ruby وتتطلب RubyGems، مدير حزم Ruby، و Nokogiri، مكتبة XML لمعالجة ملفات البيان.

  • (اختياري) graphviz dot

إذا كنت ترغب في رؤية الرسوم البيانية (مثل رسم بياني للاستدعاءات، رسم بياني لتدفق التحكم، شجرة الهيمنة، إلخ)، فستحتاج إلى تثبيت graphviz dot.

البناء

لبناء redexer، فقط استخدم make! يمكنك رؤية ملف redexer الثنائي في المستوى الأعلى.

root@kitploit:~
$ make (clean)

قبل استخدام الأداة، يقع على عاتق المستخدم تثبيت أحدث ملف منصة لـ apktool. على سبيل المثال، تحتاج إلى القيام بما يلي

root@kitploit:~
$ java -jar tools/apktool.jar if [ملف المنصة المناسب]

يمكنك أيضًا إنشاء مستندات API بتنسيق html.

root@kitploit:~
$ make api

الاستخدام

  • المساعدة

يمكنك رؤية جميع الخيارات التي توفرها الأداة:

root@kitploit:~
$ ruby scripts/cmd.rb -h
$ ruby scripts/cmd.rb --help
  • إعادة التحويل (unparse)

على غرار dexdump في Android SDK، يتيح لك redexer عرض البنية الداخلية لملف dex المحدد بتنسيق YAML.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd unparse [--to blah.yml]
  • تفريغ الطريقة (dump method)

يقوم هذا الخيار بتفريغ التعليمات لطريقة محددة.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd dump_method --mtd cls.mtd
  • الهوية (identity)

هذه الميزة لاختبار وحدات التحليل والتفريغ في redexer. من المحتمل أن تنشئ ملف dex مطابقًا.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd id [--to blah.dex]
  • المعلومات (info)

يمكنك أيضًا رؤية إحصائيات أساسية حول ملف dex، مثل عدد التعليمات.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd info
  • الفئات (classes)

يقوم هذا الخيار بطباعة جميع أسماء الفئات المعرفة في ملف dex.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd classes

قد يكون مفيدًا للبحث عن مكتبات طرف ثالث محددة، على سبيل المثال:

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd classes | egrep 'apache'
  • واجهة برمجة التطبيقات (api)

يقوم هذا الخيار بطباعة استخدام واجهة برمجة التطبيقات في ملف dex.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd api [--sdk android.]
$ ruby scripts/cmd.rb target.(apk|dex) --cmd api --sdk com.facebook.
  • إحصائيات رموز العمليات (opcode statistics)

ألست فضوليًا لمعرفة مدى ندرة استخدام بعض رموز العمليات في bytecodes Dalvik؟ سيعرض لك الرسم البياني التكراري لجميع رموز العمليات، أو يمكنك البحث عن مدى تكرار استخدام رمز عملية معين في التطبيق المحدد.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd opstat [--op opcode1,opcode2,...]

على سبيل المثال:

root@kitploit:~
$ ruby scripts/cmd.rb ~/apps/top24/com.whatsapp.apk --cmd opstat
$ ruby scripts/cmd.rb ~/apps/top24/com.whatsapp.apk --cmd opstat --op div-int/lit16,nop
  • تحليل حل النية (Intent resolution analysis)

يقوم هذا الخيار بإجراء تحليل حل النية القائم على الانتشار، وطباعة التحولات بين فئات النشاط.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd intent
  • رسم بياني للاستدعاءات (call graph)

يقوم هذا الخيار بإنشاء ملف pdf يصور رسمًا بيانيًا للاستدعاءات للملف المحدد. إذا لم تحدد اسم pdf، فسيتم استخدام cg.pdf.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd cg [--to blah.pdf] [--no-pdf]
  • رسم بياني لتدفق التحكم (control-flow graph)

يقوم هذا الخيار بإنشاء ملف pdf يظهر رسمًا بيانيًا لتدفق التحكم للطريقة المحددة. ألحق اسم الطريقة باسم الفئة بنقطة: class_name.method_name

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd cfg --mtd cls.mtd [--to blah.pdf] [--no-pdf]
  • شجرة الهيمنة (المنشورة) (post dominator tree)

هذا الخيار مشابه للميزة أعلاه، باستثناء أنه يصور شجرة الهيمنة (المنشورة).

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd (p)dom --mtd cls.mtd [--to blah.pdf] [--no-pdf]
  • تحليل البقاء (liveness analysis)

يقوم هذا الخيار بإجراء تحليل تدفق بيانات خلفي كلاسيكي.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd live --mtd cls.mtd
  • تحليل انتشار الثوابت (constant-propagation analysis)

يقوم هذا الخيار بإجراء تحليل تدفق بيانات أمامي كلاسيكي.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd const --mtd cls.mtd
  • تحليل تعريف الوصول (reaching definition analysis)

يقوم هذا الخيار بإجراء تحليل تدفق بيانات أمامي كلاسيكي.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd reach --mtd cls.mtd
  • التابعون (dependants)

يقوم هذا الخيار بإيجاد تبعيات الفئة.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd dependants --mtd cls.mtd
  • نشاط الإطلاق (launcher activity)

يقوم هذا الخيار بطباعة اسم نشاط الإطلاق لملف apk المحدد.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd launcher
  • المُصدرة (exported)

يتيح لك هذا الخيار معرفة المكونات المكشوفة للخارج.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd exported
  • النشاط، الخدمة، المزود، المستقبل (activity, service, provider, receiver)

تقوم هذه الخيارات بطباعة المكونات الأساسية لنظام Android المعلنة في البيان.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd [activity | service | provider | receiver]
  • العروض المخصصة (custom_views)

يقوم هذا الخيار باستكشاف تعريفات التخطيط في الموارد وطباعة العروض المخصصة.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd custom_views
  • الشظايا (fragments)

يقوم هذا الخيار باستكشاف تعريفات التخطيط في الموارد وطباعة عناصر الشظايا.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd fragments
  • الأزرار (buttons)

يقوم هذا الخيار باستكشاف تعريفات التخطيط في الموارد وطباعة الأزرار، بالإضافة إلى معرفها (أو نصها) وطريقة الاستدعاء (إن وجدت).

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd buttons
  • الأذونات المعلنة في بيان التطبيق

يقوم هذا الخيار بطباعة الأذونات التي يستخدمها ملف apk.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd permissions
  • إصدار SDK المستهدف

يقوم هذا الخيار بطباعة إصدار SDK الذي يتطلبه ملف apk.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd sdk

إذا كنت لا ترغب في فك ضغط ملف apk، فيمكنك في الواقع فعل الشيء نفسه باستخدام مجموعة من الأوامر:

root@kitploit:~
$ aapt dump badging target.apk | grep 'targetSdkVersion' | tr -dc 0-9.\\n
  • مرحبًا، DEX

سيقوم هذا الخيار بإنشاء ملف dex يطبع رسالة بسيطة. يتم إنشاء ملف dex هذا باستخدام واجهات برمجة تطبيقات redexer فقط.

root@kitploit:~
$ ruby scripts/cmd.rb --cmd hello

تحقق من محتواه الداخلي.

root@kitploit:~
$ dexdump -d results/classes.dex

إذا كنت مهتمًا، يمكنك اختبار ملف dex ذلك على النحو التالي. افترض أن المسار إلى ANDROID_SDK مضبوط.

root@kitploit:~
// إنشاء jar مؤقت مناسب لـ dalvik VM
$ aapt add temp.jar results/classes.dex

// (اختياري) إذا لم تقم بإنشاء avd، فقم بإنشائه.
$ android create avd -n myAVD1 -t android-8

// تشغيل المحاكي
$ emulator -avd myAVD1 &

// دفع jar المؤقت
$ adb push temp.jar /data

// الاتصال بـ adb shell
$ adb shell

// أخيرًا، قم بتشغيل dex
# /system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar \
 -classpath /data/temp.jar Hello
Hello, DEX
#
  • التسجيل (logging)

هذا متغير من ميزة إعادة الكتابة. باستخدام هذه الميزة، يمكنك تسجيل سلوك التطبيقات من وجهات نظر محددة. يتم توفير ملف dex المبني مسبقًا لمكتبة التسجيل: data/logging.dex. إذا كنت ترغب في إضافة المزيد من الميزات أو الأدوات المساعدة، فقم ببنائه على النحو التالي:

root@kitploit:~
$ cd logging
$ gradle copyDex
$ cd ..

ثم استخدم الأمر التالي:

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd logging

يمكن لـ trim.py التقاط تسلسلات الاستدعاء-العودة للتطبيق المجهز. (يجب أولاً تجهيز التطبيق قيد الاختبار باستخدام redexer.)

إذا كانت هذه السجلات قصيرة بما يكفي، أي أن الهاتف (أو المحاكي) يمكنه الاحتفاظ بجميع المعلومات في الذاكرة، فيمكنك استخدام الوضع دون اتصال للبرنامج النصي:

root@kitploit:~
$ ./scripts/trim.py -d

لاحظ أن جميع معاملات سطر الأوامر سيتم تمريرها إلى adb logcat، وافتراضيًا، يتم تمرير org.umd.logging:I *:S لتصفية السجلات غير ذات الصلة.

إذا فاضت السجلات، فيجب استخدام الوضع عبر الإنترنت:

root@kitploit:~
$ ./scripts/trim.py

يلتقط البرنامج النصي مقاطعة المفاتيح، لذا يمكنك إنهاء التسجيل عبر Ctrl+C.

في كلا الوضعين، يتم حفظ السجلات في log.txt وعرضها على الشاشة دفعة واحدة. وبالتالي، بعد جمع السجلات، قد تحتاج إلى نقل هذا الملف، على سبيل المثال:

root@kitploit:~
$ mv log.txt app.scenario.txt
  • تسجيل التفاعلات مع المستخدم

ميزة التسجيل أعلاه عامة حيث يمكنك تحديد ما تريد تسجيله على مستوى الطريقة. (انظر وحدة logging لمزيد من التفاصيل.) ومع ذلك، هذا أحيانًا يكون مطولًا جدًا وقد يؤدي إلى تدهور الأداء. تم تصميم هذه الميزة لتسجيل التفاعلات مع المستخدم فقط. باستخدام هذه الميزة، يمكنك التقاط الأحداث المتعلقة بواجهة المستخدم فقط. وبالمثل، يتم توفير ملف dex المبني مسبقًا لمكتبة التسجيل: data/logging-ui.dex. إذا كنت ترغب في تعديل إسهاب معلومات واجهة المستخدم، فقم ببنائه على النحو التالي:

root@kitploit:~
$ cd logging-ui
$ gradle copyDex
$ cd ..

ثم استخدم الأمر التالي:

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd logging_ui

مكتبة التسجيل موروثة من خدمة android a11y، والتي تتطلب موافقة صريحة من المستخدم. وبالتالي، بعد تثبيت ملف apk المعاد كتابته، انتقل إلى Settings/Accessibility وقم بتشغيل خدمة UI Logging. (يمكن اعتبار هذه الخطوة مشابهة لتشغيل وضع تصحيح الجهاز.) في logcat، الرسائل ذات العلامات org.umd.logging_ui.* هي تفاعلات بين المستخدم والتطبيق قيد الاختبار.

  • الاستكشاف الموجه (directed exploration)

يقوم هذا الخيار بإيجاد مسارات انتقال المكونات نحو استدعاءات الطريقة المستهدفة.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd directed

يمكنك تحديد الطرق المستهدفة التي سيتم استدعاؤها في data/directed.txt

تستخدم مسارات انتقال المكونات هذه لدفع التطبيقات لاختبار الثغرات الأمنية في مكتبات الطرف الثالث. تم وصف المزيد من التفاصيل في الورقة التالية:

root@kitploit:~
* Brahmastra: Driving Apps to Test the Security of Third-Party Components.
R. Bhoraskar, et al., In 23rd Usenix Security Symposium (Security '14).

يمكن لـ withTimeout.rb بناء ملف تخطي للتطبيق تلقائيًا. يقوم هذا البرنامج النصي بتشغيل cmd.rb مع مهلة محددة، تُستخدم لتحديد الوقت المستغرق في تجهيز أي فئة واحدة. هذا حل مؤقت للفئة العرضية التي تتعطل في حلقة أثناء التجهيز. عندما يجد هذا البرنامج النصي فئة تتعطل، يضيفها إلى ملف التخطي ويستمر من حيث توقف. بمجرد إنهاء withTimeout، سيكون هناك ملف يسمى \[اسم apk\]-skip.txt في دليل البيانات، والذي يمكن استخدامه لبناء تطبيق مجهز بالكامل لذلك apk. لاستخدام withTimeout، ما عليك سوى استدعاء:

root@kitploit:~
$ ruby scripts/withTimeout.rb TIMEOUT COMMANDS

حيث TIMEOUT هو طول المهلة بالثواني (300 موصى به) و COMMANDS هي جميع مدخلات سطر الأوامر العادية التي ستمررها إلى scripts/cmd.rb لملف apk.

تنزيل الأداة