ما هو ملف .dex على Android؟ شرح كامل وأمثلة

  • ملف .dex هو تنسيق الملف القابل للتنفيذ الأصلي لتطبيقات Android، والمُحسَّن للأجهزة المحمولة.
  • يسمح هيكلها بالتنفيذ السريع والفعال للتطبيقات، ودمج الفئات والطرق والحقول والبيانات الوصفية.
  • يمكن أن يكون تنسيق .dex أيضًا هدفًا للبرامج الضارة، لذا من المهم حماية بياناتك وتحديث تطبيقاتك.

ملف .dex على Android

هل تساءلت يوما ما هو ملف .dex بالضبط في عالم Android؟؟ إذا كنت أحد مستخدمي نظام التشغيل هذا، فمن المحتمل أنك سمعت عن التطبيقات وملفات APK والملفات التي تعمل بشكل سحري على هاتفك، ولكن عالم Android يخفي الكثير من التفاصيل الفنية الرائعة. ومن بينها ملفات .dex الشهيرة.

في هذه المقالة سوف نقوم بتوضيح ما هو ملف .dex في Android.، ما هي استخداماته، وكيف يعمل خلف الكواليس، وأهميته في نظام التطبيقات، والحقائق المثيرة للاهتمام، وقضايا الأمان، وحتى بعض الأدوات لاستكشاف الكود وراء تطبيقاتك المفضلة. واصل القراءة لتصبح الشخص الأكثر دراية بهذه الملفات!

ما هو ملف .dex على Android؟

DEX

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

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

لذا، عندما تقوم بتشغيل تطبيق على Android، فإن ما يقرأه النظام ويفسره في الواقع هو ملف .dex، الذي يترجم جميع التعليمات إلى أجهزة هاتفك.

كيف تقوم بإنشاء ملف .dex؟

تبدأ العملية بقيام المطورين بكتابة الكود الخاص بهم في جافا أو كوتلين. هذا الكود، عند تجميعه، يصبح أولاً ملفات .class (كما هو الحال في أي برنامج جافا تقليدي). ولكن هنا يبدأ الاختلاف: بدلاً من البقاء في .class، يستخدم نظام بناء Android أداة تسمى dx لتحويل ملفات .class تلك إلى ملف واحد .ديكس، أو في عدة إذا كان التطبيق كبيرًا جدًا.

ولماذا هذه الخطوة الإضافية؟ لأن تم تصميم تنسيق .dex ليكون أكثر إحكاما وكفاءة. تم تحسينه خصيصًا للأجهزة المحمولة، والتي عادةً ما تكون أقل قوة من أجهزة الكمبيوتر وتتطلب استخدامًا فعالًا للذاكرة والمعالج.

ماذا يحتوي ملف .dex؟

DEX

ملف .ديكس هو، في الأساس، حاوية للفئات والطرق والتعليمات والبيانات الوصفية. ويشمل:

  • تعريفات الفئات (الهيكل الكامل والعلاقات بين فئات البرنامج)
  • المجالات والطرق من كل فئة
  • البايت كود خاصة ببيئة Dalvik/ART
  • السلاسل والأنواع والنماذج الأولية وجداول المرجع الأخرى
  • معلومات التصحيح والتعليقات التوضيحية
  • Un العنوان خاص ببيانات الملف التعريفي

كل هذا تم ترتيبها وتعبئتها بطريقة تسهل التنفيذ والتفسير الفعال بواسطة نظام Android. و تنسيق .dex يتيح تشغيل العديد من التطبيقات بالتوازي، ومشاركة الموارد عندما يكون ذلك منطقيًا، والاستفادة الكاملة من إمكانيات الهواتف والأجهزة اللوحية.

الأجزاء الرئيسية لملف .dex

إذا نظرنا إلى التفاصيل، فإن تنسيق .dex يتكون من عدة أقسام رئيسية:

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

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

التفاصيل الفنية لتنسيق .dex

بالنسبة للمهتمين أو القادمين من عالم البرمجة، إليكم بعض التفاصيل الفنية حول كيفية هيكلة الملف فعليًا. .ديكس. لا تقلق إذا لم تكن مبرمجًا: يمكنك تخطي هذا الجزء، ولكن إذا كنت فضوليًا، فربما تجده رائعًا.

يحتوي الملف على رأس خاص يمكن التعرف عليه من خلال الثابت DEX_FILE_MAGIC، والذي يبدأ بالبايتات التي تمثل "dex\n039\0" (يتم استخدام هذا للتعرف على أن الملف هو في الواقع .dex). ويتضمن أيضًا مبلغًا اختباريًا لمنع الفساد، وتوقيع SHA-1 للمحتوى، وحجم الملف الإجمالي.

التنسيق هو Endian طفيف، مما يعني أنه يخزن البايتات بترتيب معين (الأقل أهمية قبل الأكثر أهمية)، تمامًا مثل العديد من الأنظمة الحديثة.

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

لماذا يعد ملف .dex مهمًا جدًا؟

السبب ملف .dex هو الملف المركزي لنظام Android وذلك لأنه يسمح للنظام بتشغيل أي تطبيق، بغض النظر عن مكان تجميعه أو تحسينه أو تكييفه. وهذا يعني أن ملف .dex الذي تم إنشاؤه على جهاز كمبيوتر يعمل بنظام Windows أو Linux أو Mac سيعمل بنفس الطريقة على أي جهاز يعمل بنظام Android، مما يجعل الحياة أسهل كثيرًا للمطورين ويضمن التوافق بين الأجهزة.

علاوة على ذلك، بفضل تصميم تنسيق .dex، يمكن للنظام تطبيق تحسينات إضافية ومشاركة الكود بين التطبيقات وتحسين الأمان، حيث أنه قادر على فحص محتويات الملفات قبل تنفيذها.

ماذا يحدث لملفات .dex في الإصدارات الأخيرة من Android؟

منذ إصدار Android 5.0 (Lollipop)، كان النظام يتطور. في السابق، كان Dalvik هو الجهاز الظاهري المسؤول عن تشغيل ملفات .dex. الآن، تستخدم الغالبية العظمى من الأجهزة ART (Android Runtime)، الذي لا يزال يعمل مع .dex، ولكن يطبق المزيد من التحسينات ويجمع بعض التعليمات البرمجية مسبقًا (AOT).

يعني هذا أنه بينما يظل التنسيق الأساسي .dex، يتم تحويل كود التطبيق بشكل أكبر لتحسين الأداء وبدء التشغيل وتجربة المستخدم. في بعض الحالات، يقوم النظام بإنشاء ملفات .odex أو تنسيقات مشتقة أخرى، ولكن دائمًا من ملفات .dex الشهيرة المضمنة في APK.

عملية التنفيذ: من .dex إلى الكود الذي يتم تنفيذه

عند تشغيل تطبيق على Android، يقوم النظام بما يلي:

  • استخرج الملف .ديكس من ملف APK المثبت
  • التحقق من التوقيع وسلامة الملف
  • في الإصدارات الحديثة، يمكنك تجميع جزء من .dex إلى كود أصلي (تحسين AOT/JIT)
  • تنفيذ التعليمات الموضحة في ملف .dex، باستخدام Dalvik أو ART

كل هذا يحدث بشكل شفاف عمليًا للمستخدم، ولكن خلف الكواليس، يقوم النظام بقراءة وتنفيذ ملف .dex في الوقت الفعلي، إدارة الذاكرة بشكل جيد، وتسريع العمليات والسماح بتوافق كبير بين التطبيقات من مصادر مختلفة.

هل يمكن أن يحتوي ملف APK على ملفات .dex متعددة؟

نعم، في الماضي، كانت ملفات APK مقتصرة على ملف .dex واحد وبالتالي، إلى الحد الأقصى من الفئات والطرق (الحد الأقصى الشهير لـ 65 ألف طريقة). لكن مع مرور الوقت، أصبحت العديد من التطبيقات كبيرة جدًا (فكر في تطبيقات مثل Facebook أو WhatsApp) لدرجة أنها احتاجت إلى التغلب على هذا الحاجز. لذلك، أصبح من الشائع جدًا الآن العثور على ملفات APK تحتوي على ملفات .dex متعددة (متعدد الدلالات), كل منها يتبع نفس التنسيق ويعمل بطريقة منسقة داخل التطبيق.

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

تحليل البنية الداخلية لملف .dex

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

  • رأس الصفحة - فيما يلي المعلومات الأساسية للملف، مثل "التوقيع" السحري، والحجم، والإصدار، ومجموعات التحقق.
  • معرفات السلسلة - إنها قائمة مرتبة لجميع السلاسل الموجودة في .dex (أسماء الفئات، والطرق، والنصوص الحرفية، وما إلى ذلك).
  • معرفات النوع - يحدد جميع أنواع البيانات والفئات التي يتم الرجوع إليها.
  • معرفات البروتوكول - هنا نقوم بتعريف "النماذج الأولية" للطرق، أي كيفية تسميتها، وماذا تعيد، وما هي المعلمات التي تتلقاها.
  • معرفات الحقول ومعرفات الطرق - هذه قوائم بجميع الحقول والطرق الموجودة، مع مراجع متقاطعة للوصول السريع.
  • تعريفات الفئة - معلومات تفصيلية عن كل فئة: أساليبها، حقولها، فئاتها العليا، واجهاتها المطبقة، التعليقات التوضيحية، بيانات التصحيح، وما إلى ذلك.
  • قسم البيانات - تحتوي هذه المنطقة على القيم والسلاسل والمصفوفات والتعليقات التوضيحية ورمز الطريقة (بتنسيق البايت كود Dalvik).

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

كيفية فتح ملف .dex واستكشافه

ربما تكون فضوليًا وترغب في رؤية ما بداخل ملف .dex. هناك العديد من الأدوات لفحصها:

  • دكسبلورير: تطبيق Android يتيح لك تصفح ملفات .dex للتطبيقات المثبتة لديك. يمكنك عرض تعريفات الفئة والطريقة والحقل، واستعراض الموارد الداخلية لملف APK، ومعاينة ملفات XML والصور، والاستماع إلى الصوت، وحتى عرض البيانات.
  • برامج فك التجميع والتفكيك لأجهزة الكمبيوتر:توجد برامج كمبيوتر مثل jadx وdex2jar وغيرها، والتي تقوم بتحويل ملفات .dex إلى كود Java قابل للقراءة أو تنسيقات وسيطة أخرى.
  • بيئة تطوير متكاملة لأندرويد ستوديوبالنسبة للمطورين، يسمح لك Android Studio نفسه بفحص محتويات ملفات .dex التي تم إنشاؤها أثناء التجميع.

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

تعديل ملفات .dex والتلاعب بها

إن تعديل ملف .dex ليس بالأمر السهل ولا يُنصح به عمومًا إلا إذا كنت خبيرًا وتفعل ذلك باستخدام تطبيقاتك الخاصة. توجد أدوات لفك تجميع ملفات .dex وتحريرها وإعادة تجميعها، ولكن أي تغييرات قد تؤدي إلى حدوث أخطاء أو أعطال أو حتى ثغرات أمنية.

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

مثال حقيقي: Dexplorer

دكسبلورير
دكسبلورير
السعر: الباقة المجانية

كما ذكرنا من قبل، هناك تطبيق يسمى دكسبلورير تم تصميمه خصيصًا لاستكشاف ملفات .dex وملفات APK.

مع هذا التطبيق يمكنك:

  • تصفح حزم Java وملفات التطبيقات
  • عرض تعريفات الفئات والحقول وتوقيعات الطريقة
  • تصفح الموارد مثل الأصول والمكتبات وملفات الموارد
  • معاينة ملفات XML والصور والصوت والخطوط داخل APK
  • فتح ملفات APK من مستكشف الملفات
  • استخدم الأداة كدعم في التحقق من تشويش التعليمات البرمجية (على سبيل المثال، باستخدام Proguard)

كن حذرا، هذا التطبيق فقط أداة للمطورين والأشخاص الفضوليينلا يُقصد به ممارسة أنشطة غير مشروعة أو القرصنة.

دكسبلورير
دكسبلورير
السعر: الباقة المجانية