x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
لماذا لا يمكن أختراق الأندرويد بصورة أو ملف PDF :
في الواقع هذا افضل سؤال يجلنا نشرح كيف يعمل تطبيق الاندرويد داخل نظام التشغيل :
اولا ماهي Virtual Machine (VM) :
هو بأختصار نظام تشغيل شبه وهمي يعمل علي نظام تشغيلك الاساسي علي شكل برنامج ويتقاسم موارد جهازك الاساسي من الرامات ومساحة الهارد ديسك ومن اشهر تلك البرامج التي توفر لك صنع نظام تشغيلك الافتراضي برنامج vm ware و virtual box
على سبيل المثال: يقوم java virtual machine او jvm بتشغيل java bytecode وينتج نفس الإخراج على أنظمة أساسية متعددة
بمعني انه بفضل ال jvm تمكنت لغة جافا من تشغيل نفس الكود المكتوب بها علي اي جهاز كمبيوتر .
ثانيا Java Virtual Machine | JVM :
طورت java الاله الافتراضية الخاصه بها jvm
تعتمد JVM على النظام الأساسي وتتوفر تطبيقات مختلفة لمنصات محددة.
يستخدم JVM مترجم JIT.
يمكن تشغيل Java bytecode على أي جهاز قادر على تشغيل JVM.
في JVM ، يحول مترجم Java ملفات .java إلى ملفات .class ، والتي تسمى bytecode. على سبيل المثال: إذا كان لدينا ملف بأسم Hello.java وعندما نقوم بتشغيل الملف هذا ، يقوم مترجم javac / Java Compiler بتحويل كود المصدر هذا إلى ملف Hello.class وهو bytecode . مما يعني أن مترجم لغة javac لا يحول كود Java مباشرة إلى كود الآلة كما تفعل المترجمات الآخري .
وبعد انتاج ال bytecode يتم تمريره الي اله جافا الافتراضيه jvm التي بدورها تقوم بتحويله الي لغة الالة .
بالعودة الي نظام الاندرويد انها ايضا تستخدم jvm ولكن ليس بالظبط !
ثالثا Dalvik Virtual Machine | DVM :
بماذا تفكر ؟
يعمل كود java بواسطة JVM ويستخدم نظام اندرويد java لذلك يستخدم Android أيضًا JVM ؟
سيكون الأمر كذلك ولكن على الرغم من أن JVM عالية الأداء وتوفر إدارة ذاكرة ممتازة ، إلا أنها تحتاج إلى التحسين للأجهزة المحمولة منخفضة الطاقة أيضًا. لهذا السبب تم تصميم آلة افتراضية أخرى خصيصًا للأجهزة المحمولة وهي Delvik Virtual Machine (DVM).
تم إنشاء DVM (Dalvik Virtual Machine) بواسطة Dan Bornstein وفريقه ، مع مراعاة قيود الجهاز المحمول فقط.
لقد كان جهازًا افتراضيًا لغرض معين وتم إنشاؤه بدقة للأجهزة المحمولة.
على غرار JVM ، فإنه يستخدم أيضًا مترجم JIT.
نظرًا لأن كل شيء في الهواتف المحمولة محدود للغاية سواء كان عمر بطارية ومعالجة وذاكرة وما إلى ذلك ، فقد تم تحسينه بحيث يتناسب مع الأجهزة منخفضة الطاقة.
في DVM ، كل شيء مماثل لـ JVM باستثناء الخطوتين الأخيرتين هنا. يقوم المترجم Dex بتحويل الملفات إلى ملف .dex الذي يتم تشغيله على Dalvik VM.
الفرق بين JVM و DVM :
يعتمد JVM على معمارية المكدس ولكن DVM يعتمد على التسجيل وهو مصمم للتشغيل على ذاكرة منخفضة.
يستخدم JVM ال bytecode ويقوم بتشغيل ملف ".class" بأستخدام JIT , حيث يستخدم DVM ال bytecode به ويقوم بتشغيل ملف ".dex".
تدعم JVM أنظمة تشغيل متعددة حيث يدعم DVM نظام تشغيل Android فقط.
في JVM ، الملف التنفيذي هو JAR حيث يكون الملف التنفيذي في DVM هو APK.
لماذا يستخدم نظام الاندرويد DVM بدلاً من JVM؟
هناك سببان لاختيار شركة جوجل DVM على JVM ، لذلك دعونا نفهم كل واحد منهم واحدًا تلو الآخر.
أحد الأسباب الرئيسية لاستخدام DVM في الاندرويد هو أن DVM يأخذ ذاكرة أقل يقوم بالتحميل ويعمل بشكل أسرع مقارنة بـ JVM
على الرغم من أن JVM مجاني ، إلا أنه ليس جيدًا لنظام Android حيث أن معظم أجهزة Android .
تم تصميم JVM لأجهزة الكمبيوتر المكتبية وهو ثقيل جدًا بالنسبة للأجهزة المدمجة.
رابعا android runtime :
ان android runtime او ART هو تماما مثل dalvik ولكن يأتي ببعض التحسينات لذا توقفت شركة جوجل عن استخدام dalvik وحاليا تستخدم ART
لماذا توقف Android عن استخدام DVM وبدأ في استخدام ART؟
كانت هناك بعض عيوب استخدام DVM وهي :
في وقت تشغيل Dalvik ، يتم تجميع التطبيق في كل مرة يتم فيها تشغيل التطبيق وهذا يؤدي إلى الاستخدام المفرط لوحدة المعالجة المركزية والذاكرة ويقلل أيضًا من عمر البطارية. لهذا السبب تم تقديم ART في Android 4.4 (KitKat) ومن Android 5.0 (Lollipop) وتم استبدال Dalvik بالكامل.
في ART ، أثناء مرحلة تثبيت التطبيق ،يتم ترجمة رمز DEX بايت بشكل ثابت إلى رمز الجهاز ويخزنها في وحدة تخزين الجهاز. هذا يحدث لمرة واحدة ويحدث فقط عند تثبيت التطبيق على الجهاز. هذا يؤدي إلى عمر بطارية أفضل وأداء رائع. لذلك ليست هناك حاجة لأستخدام JIT ، ويتم تنفيذ الشفرة بشكل أسرع.
في النهاية يأتي الاجابة علي سؤالك وهو لماذا لا يمكن اختراق الاندرويد الا بملف apk ؟
ببساطة يحتاج الكود الخاص بك المدمج في الصورة او ملف pdf ان يصل الي مترجم لغة جافا الذي بدورة سيعمل في jvm او dvm وهذا لن يحدث لان انظمة الاندرويد لا تسمح الا لملفات apk بالوصول لتلك المنطقة
في الواقع هذا افضل سؤال يجلنا نشرح كيف يعمل تطبيق الاندرويد داخل نظام التشغيل :
اولا ماهي Virtual Machine (VM) :
هو بأختصار نظام تشغيل شبه وهمي يعمل علي نظام تشغيلك الاساسي علي شكل برنامج ويتقاسم موارد جهازك الاساسي من الرامات ومساحة الهارد ديسك ومن اشهر تلك البرامج التي توفر لك صنع نظام تشغيلك الافتراضي برنامج vm ware و virtual box
على سبيل المثال: يقوم java virtual machine او jvm بتشغيل java bytecode وينتج نفس الإخراج على أنظمة أساسية متعددة
بمعني انه بفضل ال jvm تمكنت لغة جافا من تشغيل نفس الكود المكتوب بها علي اي جهاز كمبيوتر .
ثانيا Java Virtual Machine | JVM :
طورت java الاله الافتراضية الخاصه بها jvm
تعتمد JVM على النظام الأساسي وتتوفر تطبيقات مختلفة لمنصات محددة.
يستخدم JVM مترجم JIT.
يمكن تشغيل Java bytecode على أي جهاز قادر على تشغيل JVM.
في JVM ، يحول مترجم Java ملفات .java إلى ملفات .class ، والتي تسمى bytecode. على سبيل المثال: إذا كان لدينا ملف بأسم Hello.java وعندما نقوم بتشغيل الملف هذا ، يقوم مترجم javac / Java Compiler بتحويل كود المصدر هذا إلى ملف Hello.class وهو bytecode . مما يعني أن مترجم لغة javac لا يحول كود Java مباشرة إلى كود الآلة كما تفعل المترجمات الآخري .
وبعد انتاج ال bytecode يتم تمريره الي اله جافا الافتراضيه jvm التي بدورها تقوم بتحويله الي لغة الالة .
بالعودة الي نظام الاندرويد انها ايضا تستخدم jvm ولكن ليس بالظبط !
ثالثا Dalvik Virtual Machine | DVM :
بماذا تفكر ؟
يعمل كود java بواسطة JVM ويستخدم نظام اندرويد java لذلك يستخدم Android أيضًا JVM ؟
سيكون الأمر كذلك ولكن على الرغم من أن JVM عالية الأداء وتوفر إدارة ذاكرة ممتازة ، إلا أنها تحتاج إلى التحسين للأجهزة المحمولة منخفضة الطاقة أيضًا. لهذا السبب تم تصميم آلة افتراضية أخرى خصيصًا للأجهزة المحمولة وهي Delvik Virtual Machine (DVM).
تم إنشاء DVM (Dalvik Virtual Machine) بواسطة Dan Bornstein وفريقه ، مع مراعاة قيود الجهاز المحمول فقط.
لقد كان جهازًا افتراضيًا لغرض معين وتم إنشاؤه بدقة للأجهزة المحمولة.
على غرار JVM ، فإنه يستخدم أيضًا مترجم JIT.
نظرًا لأن كل شيء في الهواتف المحمولة محدود للغاية سواء كان عمر بطارية ومعالجة وذاكرة وما إلى ذلك ، فقد تم تحسينه بحيث يتناسب مع الأجهزة منخفضة الطاقة.
في DVM ، كل شيء مماثل لـ JVM باستثناء الخطوتين الأخيرتين هنا. يقوم المترجم Dex بتحويل الملفات إلى ملف .dex الذي يتم تشغيله على Dalvik VM.
الفرق بين JVM و DVM :
يعتمد JVM على معمارية المكدس ولكن DVM يعتمد على التسجيل وهو مصمم للتشغيل على ذاكرة منخفضة.
يستخدم JVM ال bytecode ويقوم بتشغيل ملف ".class" بأستخدام JIT , حيث يستخدم DVM ال bytecode به ويقوم بتشغيل ملف ".dex".
تدعم JVM أنظمة تشغيل متعددة حيث يدعم DVM نظام تشغيل Android فقط.
في JVM ، الملف التنفيذي هو JAR حيث يكون الملف التنفيذي في DVM هو APK.
لماذا يستخدم نظام الاندرويد DVM بدلاً من JVM؟
هناك سببان لاختيار شركة جوجل DVM على JVM ، لذلك دعونا نفهم كل واحد منهم واحدًا تلو الآخر.
أحد الأسباب الرئيسية لاستخدام DVM في الاندرويد هو أن DVM يأخذ ذاكرة أقل يقوم بالتحميل ويعمل بشكل أسرع مقارنة بـ JVM
على الرغم من أن JVM مجاني ، إلا أنه ليس جيدًا لنظام Android حيث أن معظم أجهزة Android .
تم تصميم JVM لأجهزة الكمبيوتر المكتبية وهو ثقيل جدًا بالنسبة للأجهزة المدمجة.
رابعا android runtime :
ان android runtime او ART هو تماما مثل dalvik ولكن يأتي ببعض التحسينات لذا توقفت شركة جوجل عن استخدام dalvik وحاليا تستخدم ART
لماذا توقف Android عن استخدام DVM وبدأ في استخدام ART؟
كانت هناك بعض عيوب استخدام DVM وهي :
في وقت تشغيل Dalvik ، يتم تجميع التطبيق في كل مرة يتم فيها تشغيل التطبيق وهذا يؤدي إلى الاستخدام المفرط لوحدة المعالجة المركزية والذاكرة ويقلل أيضًا من عمر البطارية. لهذا السبب تم تقديم ART في Android 4.4 (KitKat) ومن Android 5.0 (Lollipop) وتم استبدال Dalvik بالكامل.
في ART ، أثناء مرحلة تثبيت التطبيق ،يتم ترجمة رمز DEX بايت بشكل ثابت إلى رمز الجهاز ويخزنها في وحدة تخزين الجهاز. هذا يحدث لمرة واحدة ويحدث فقط عند تثبيت التطبيق على الجهاز. هذا يؤدي إلى عمر بطارية أفضل وأداء رائع. لذلك ليست هناك حاجة لأستخدام JIT ، ويتم تنفيذ الشفرة بشكل أسرع.
في النهاية يأتي الاجابة علي سؤالك وهو لماذا لا يمكن اختراق الاندرويد الا بملف apk ؟
ببساطة يحتاج الكود الخاص بك المدمج في الصورة او ملف pdf ان يصل الي مترجم لغة جافا الذي بدورة سيعمل في jvm او dvm وهذا لن يحدث لان انظمة الاندرويد لا تسمح الا لملفات apk بالوصول لتلك المنطقة