
- بواسطة x32x01 ||
ليه ماينفعش اختراق الأندرويد بصورة أو ملف PDF؟
الناس كتير بتخاف من فكرة إن ممكن صورة أو PDF تخترق الموبايل، بس الحقيقة إن ده مستحيل فعليًا من الناحية التقنية.علشان تفهم السبب، لازم نعرف الأول إزاي بيشتغل تطبيق الأندرويد جوه النظام، وده اللي هنشرحه خطوة بخطوة.
يعني إيه Virtual Machine (آلة افتراضية)؟
الـVirtual Machine أو الـVM ببساطة هي نظام تشغيل وهمي بيشتغل فوق نظامك الأساسي.بتستخدم جزء من الرام والهارد كأنها جهاز منفصل، ومن أشهر البرامج اللي بتوفرها:
VMware وVirtualBox.
مثال بسيط:
لغة Java عندها حاجة اسمها Java Virtual Machine (JVM).الكود اللي بيتكتب بلغة Java مش بيتحول مباشرة لكود الآلة، لأ، بيتحول لحاجة اسمها Bytecode.
وده اللي بيخلي نفس البرنامج يشتغل على أي نظام تشغيل عنده JVM، سواء ويندوز أو لينكس أو ماك.
Java:
// مثال بسيط على كود Java
class Hello {
public static void main(String[] args) {
System.out.println("Hello Android!");
}
}
وده بيشتغل جوه الـJVM مش مباشرة على الهاردوير.
JVM: الآلة الافتراضية لجافا
الـJVM اتعملت علشان تشغل كود الجافا على أي نظام،لكنها تقيلة شوية ومصممة لأجهزة الكمبيوتر مش للموبايلات.
وده اللي خلى Google تبتكر حل جديد خاص بالموبايل.
Dalvik Virtual Machine (DVM): قلب أندرويد القديم
لما بدأت Google تطوير Android، استخدمت لغة Java بس ما استخدمتش JVM،لأنها كانت عايزة حاجة خفيفة وسريعة تناسب الأجهزة اللي بطاريتها ضعيفة ومعالجها محدود.
فابتكرت حاجة اسمها Dalvik Virtual Machine (DVM).
الـDVM اتعمل مخصوص للأجهزة المحمولة، وكان بيحوّل الأكواد من .java إلى .dex،
ودي صيغة مضغوطة وسريعة.
الفرق بين JVM وDVM:
المقارنة | JVM | DVM |
---|---|---|
المعمارية | تعتمد على الـStack | تعتمد على الـRegister |
الملفات | .class | .dex |
النظام | متعدد الأنظمة | Android فقط |
الأداء | تقيل على الموبايل | سريع وخفيف |
ليه جوجل استخدمت DVM بدل JVM؟
السبب الرئيسي إن DVM:- بتستهلك ذاكرة أقل
- بتشتغل بسرعة أعلى
- بتناسب الأجهزة ضعيفة الإمكانيات
لو استخدمناها زي ما هي.
Android Runtime (ART): الجيل الجديد من DVM
مع مرور الوقت، Google اكتشفت إن DVM برضو فيها مشاكل.فمن أول Android 4.4 (KitKat) بدأت تستخدم نظام جديد اسمه ART (Android Runtime).
الفرق إن ART بيحوّل الأكواد كلها مرة واحدة وقت التثبيت بدل ما يترجمها كل مرة البرنامج يشتغل.
وده خلى الأداء أسرع واستهلاك البطارية أقل.
مثال توضيحي:
- في DVM: كل مرة تفتح التطبيق → بيترجم الكود → يستهلك بطارية ومعالج.
- في ART: أول مرة تثبّت التطبيق فقط → بيترجم → بعد كده بيشتغل بسرعة البرق
طيب كل ده ليه يهمنا؟
لأن علشان أي كود يشتغل في أندرويد، لازم يعدي على الآلة الافتراضية (DVM أو ART).وده بيحصل فقط مع تطبيقات أندرويد الحقيقية بصيغة .apk.
يعني لو عندك صورة أو PDF، فهي مجرد ملفات بيانات، مش برامج تنفيذية.
نظام الأندرويد مش هيسمح لها إنها توصل للمترجم أو الـVM أصلاً.
إذًا ليه الناس بتقول "ملف PDF ممكن يخترقك"؟
الفكرة دي جاية من أنظمة تشغيل تانية (زي ويندوز)اللي ممكن يكون فيها ثغرات في عارض الـPDF أو برنامج الصور.
لكن في أندرويد، التطبيقات بتشتغل في حاجة اسمها Sandbox -
وده يعني إن كل تطبيق معزول ومش يقدر يدخل على ملفات أو موارد تطبيق تاني.
حتى لو فيه كود خبيث في PDF، مش هيشتغل إلا لو تم تشغيله في بيئة تسمح له بكده،
وده مستحيل بدون صلاحيات أو APK فعلي.
طيب هل في أي استثناءات؟
الاختراق ممكن فقط في حالة واحدة:لو التطبيق اللي بيفتح الصورة أو PDF فيه ثغرة خطيرة جدًا
وبيسمح بتشغيل كود خارجي (وده نادر جدًا ومش بيستمر أكتر من أيام لأن Google بتقفلها فورًا).
خلاصة الكلام
- الملفات زي الصور وPDFs ما تقدرش تنفذ أكواد في أندرويد.
- الكود بيتشغل بس جوه Dalvik أو ART.
- مافيش وصول للمترجم أو النظام إلا من خلال ملف APK موقع رسمي.
- أي تطبيق مش من Google Play لازم تتأكد من مصدره.
نصايح لحماية موبايلك من أي محاولة اختراق
- ما تفتحش ملفات APK من مصادر مجهولة.
- فعّل Google Play Protect من الإعدادات.
- حدّث النظام دايمًا.
- استخدم تطبيق مكافحة فيروسات موثوق.
- راقب الأذونات (Permissions) لأي تطبيق جديد.
كود فحص الأذونات بسرعة
تقدر تكتب الكود ده في Android Studio عشان تشوف صلاحيات التطبيقات: Java:
PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo("com.example.app", 0);
String[] permissions = pm.getPackageInfo(appInfo.packageName, PackageManager.GET_PERMISSIONS).requestedPermissions;
for (String permission : permissions) {
Log.d("PERMISSION", permission);
}
الخلاصة النهائية
باختصار، اختراق الأندرويد بصورة أو PDF مجرد خرافة.اللي بيحدد إمكانية التنفيذ هو البيئة (Environment)،
وبما إن الأندرويد بيشتغل جوه Dalvik أو ART، فالكود اللي جوه صورة أو PDF
مستحيل يتنفذ إلا لو اتحوّل لتطبيق APK رسمي وتم تثبيته بإيد المستخدم.
التعديل الأخير: