كيفية عرض أذونات تطبيق Android قبل تثبيت APK
عند تثبيت تطبيق من متجر Google Play، يعرض Android ملخصًا مبسطًا لما يمكن للتطبيق الوصول إليه. قم بتحميل ملف APK من مصدر غير Play، وليس لديك شبكة أمان من هذا القبيل، إلا إذا قرأت البيان بنفسك. "هل يجب أن يحتاج تطبيق الخلفية حقًا إلى الوصول إلى الرسائل القصيرة والميكروفون؟" هو بالضبط نوع السؤال الذي سيساعدك هذا الدليل على الإجابة عليه.
ما يلي هو نفس سير العمل الذي يستخدمه فريقنا عند فرز ملف APK غير مألوف: افتحه، واقرأ إدخالات uses-permission، وفك تشفير مستويات الحماية، وقارن ما يحتاجه تطبيق يقول مع ما تتطلبه فئته عادةً. يقوم جهاز أداة معلومات APK عبر الإنترنت الخاص بنا بفك تشفير XML الثنائي نيابةً عنك، لذا تستغرق العملية برمتها حوالي عشر ثوانٍ.
لماذا تهتم بأذونات التدقيق؟
يأخذ المطورون الضارون التطبيقات المجانية الشائعة، ويغيرونها، ويعيدون إصدارها على مواقع الطرف الثالث. على الرغم من أن التطبيق قد يبدو ويعمل بشكل طبيعي، إلا أن رمزه المخفي قد يكون نسخ قائمة جهات الاتصال الخاصة بك أو تسجيل الصوت في الخلفية. من خلال عرض الأذونات التثبيت المسبق، يمكنك اكتشاف هذه العلامات الحمراء الخاصة بـ "زحف الأذونات".
كيفية تدقيق أي ملف APK (عبر الإنترنت)
يقرأ أداة معلومات APK بيان ملفك بالكامل في متصفحك؛ لا يتم تحميل الملف مطلقًا إلى الخادم، ولا يتم تنفيذ أي تعليمات برمجية. وإليك كيفية استخدامه:
العملية:
- انتقل إلى صفحة معلومات APK.
- حدد ملف .apk الخاص بك.
- انتظر حتى انتهاء التحليل (عادة 5 ثواني).
- قم بالتمرير لأسفل إلى قسم الأذونات.
- ابحث عن العلامات عالية المخاطر مثل: READ_SMS أو PROCESS_OUTGOING_CALLS أو ACCESS_FINE_LOCATION.
إذن قائمة العلم الأحمر
إذا طلب تطبيق آلة حاسبة أو مصباح يدوي READ_CONTACTS أو RECORD_AUDIO، فاحذف الملف على الفور. لا يوجد أي سبب مشروع لهذه التطبيقات للحصول على تلك البيانات.
فهم مستويات أذونات Android
لا يتم إنشاء كافة الأذونات على قدم المساواة. يصنفها Android إلى ثلاثة مستويات:
- طبيعي: أذونات منخفضة المخاطر لا تهدد الخصوصية بشكل مباشر (على سبيل المثال، SET_ALARM). يمنح Android هذه الميزات تلقائيًا.
- خطير: أذونات عالية المخاطر (جهات الاتصال، الموقع، الكاميرا). سيتم تأكيد يجب بواسطتك عند تشغيل التطبيق.
- التوقيع/النظام: عالية المخاطر للغاية. وهذه متاحة فقط للتطبيقات الموقعة من قبل الشركة المصنعة للجهاز أو نظام التشغيل نفسه.
الطريقة اليدوية (باستخدام عارض ZIP)
إذا كانت لديك بعض المهارات التقنية، فيمكنك تدقيق الأذونات بنفسك:
- أعد تسمية app.apk إلى app.zip وافتحه.
- ابحث عن AndroidManifest.xml. (ملاحظة: إنه بتنسيق ثنائي وسيبدو مثل الثرثرة في محرر النصوص).
- استخدم أداة مثل AXMLPrinter لتحويله إلى نص قابل للقراءة.
- ابحث عن العلامات التي تبدأ بـ <uses-permission>.
توصية: من الأسرع بكثير استخدام أداة على الانترنت الذي يقوم بفك تشفير هذا لك على الفور.
ما يتم تخزينه فعليًا في AndroidManifest.xml
البيان هو مصدر الحقيقة لكل إذن ومكون وميزة يعلن عنها التطبيق. داخل ملف APK، يكون الملف في شكل ثنائي XML، وليس النص العادي الذي تراه في الكود المصدري، لذلك لا يمكن قراءته باستخدام محرر نص عادي. تقوم أداة معلومات APK الخاصة بنا بفك تشفير ملف XML الثنائي وإظهار العلامات ذات الصلة. وأهمها هي:
- <uses-permission android:name="..."/>: كل إذن قد يطلبه التطبيق. قائمة ممتلىء موجودة هنا، بما في ذلك تلك التي قد لا يستخدمها التطبيق أبدًا في وقت التشغيل.
- <uses-permission-sdk-23 ... />: نفس الشيء، ولكن يتم طلبه فقط عند تشغيل التطبيق على Android 6 أو الإصدارات الأحدث. يُسمح بالأجهزة الأقدم بصمت دون مطالبة.
- <uses-feature android:name="..." android:required="true|false"/>: ميزات الأجهزة التي يستخدمها التطبيق (الكاميرا، GPS، NFC). عند وضع علامة مطلوب، يخفي متجر Play التطبيق من الأجهزة التي تفتقر إلى هذه الميزة.
- <application android:debuggable="true">: علم أحمر عملاق في إصدار APK. يكشف التطبيق القابل للتصحيح عن ذاكرته وحالة العملية لأي شخص لديه حق الوصول إلى ADB. يرفض.
- <activity android:exported="true"> على الأنشطة الحساسة: يتيح للتطبيقات الأخرى تشغيل تلك الشاشة. بالنسبة لتطبيقات الخصوصية، يشير هذا غالبًا إلى تشفير غير دقيق.
مستويات حماية الأذونات: ورقة الغش
يقوم Android بتعيين "مستوى حماية" لكل إذن. إن معرفة المستوى الذي ينتمي إليه الطلب يخبرك بمدى جدية نظام التشغيل في التعامل معه.
| مستوى الحماية | تجربة المستخدم | أمثلة |
|---|---|---|
| طبيعي | منح بصمت في وقت التثبيت. لا يوجد موجه. | الإنترنت، الاهتزاز، ACCESS_NETWORK_STATE، WAKE_LOCK |
| خطير | يطالب وقت التشغيل في المرة الأولى التي يتم فيها استخدام الميزة. قابل للإلغاء في الإعدادات. | الكاميرا، تسجيل_الصوت، قراءة_جهات الاتصال، الوصول إلى_الموقع_FINE_LOCATION |
| إمضاء | يُمنح فقط للتطبيقات الموقعة بنفس الشهادة مثل التطبيق المانح أو نظام التشغيل. | BIND_VPN_SERVICE، INSTALL_PACKAGES (النظام فقط) |
| التوقيع|المتميز | متاح فقط للتطبيقات المثبتة مسبقًا في دليل priv-app الخاص بصورة النظام. | MANAGE_USERS، READ_LOGS |
| أبوب / الدور | يتطلب تدفق إعدادات منفصل لتمكينه. | SYSTEM_ALERT_WINDOW، BIND_ACCESSIBILITY_SERVICE، MANAGE_EXTERNAL_STORAGE |
ماذا تعني الأذونات "المخفية" في الواقع؟
من المفاهيم الخاطئة الشائعة أن بعض الأذونات سرية. وهي ليست كذلك: يجب الإعلان عن كل إذن قد يستخدمه التطبيق في AndroidManifest.xml، ويرفض نظام التشغيل منح أي إذن غير مدرج هناك. وما يقصده الناس عادة بكلمة "مخفي" هو أحد أمرين:
- أذونات المستوى العادي صامتة. يتم منحهم في وقت التثبيت دون أي تدخل من المستخدم. لا يُظهر ملخص متجر Play بعضًا منها. فهي "مخفية" بمعنى "من السهل التغاضي عنها"، وليس بمعنى "غير معلنة".
- يمكن لتطبيقات الأذونات المخصصة المحددة من قبل التطبيق. الإعلان عن علامات <permission> الخاصة بها وتطلبها على المكونات الداخلية. توجد هذه الأذونات للتواصل بين التطبيقات ولا تشكل مصدر قلق للخصوصية في حد ذاتها، ولكن يمكن إساءة استخدامها إذا أعلن أحد التطبيقات الشائعة عن إذن مخصص بمستوى حماية خاطئ ثم استخدمه تطبيق آخر كباب خلفي.
وفي كلتا الحالتين، الإجابة هي نفسها: اقرأ البيان، ولا تثق في وصف متجر Play بمفرده.
مثال عملي: تدقيق ملف APK حقيقي
لنفترض أن لديك example.apk في مجلد التنزيلات لديك. هنا هو سير العمل الدقيق:
- افتح أداة معلومات APK في متصفحك.
- قم بإسقاط APK في منطقة التحميل. تتم المعالجة محليًا؛ الملف لا يترك جهازك.
- اقرأ قسم الأذونات. يعرض كل إدخال الاسم الثابت (android.permission.READ_CONTACTS ووصفًا باللغة البسيطة لما يسمح به).
- قارن القائمة بفئة التطبيق. تقريبًا، توقع:
- كاميرا تطبيقات الكاميرا:، تسجيل الصوت (للفيديو)، كتابة التخزين/الوسائط
- تطبيقات المراسلة: INTERNET، READ_CONTACTS، SEND_SMS (فقط إذا كانت تعتمد على الرسائل القصيرة)، RECORD_AUDIO (للملاحظات الصوتية)، CAMERA (لإرسال الصور)
- الألعاب: الإنترنت، وأحيانًا RECORD_AUDIO (للدردشة الصوتية داخل اللعبة)، والأذونات المتعلقة بالفواتير؛ نادرا أي شيء آخر
- تطبيقات المرافق (آلة حاسبة، مصباح يدوي، الطقس): INTERNET (للإعلانات)، ACCESS_NETWORK_STATE، وربما LOCATION (الطقس فقط). وكل ما هو أبعد من ذلك فهو مشكوك فيه.
- إذا كان أي شيء في القائمة لا يتناسب مع الفئة، فلا تقم بتثبيته. لا يوجد سبب وجيه لاحتياجات الآلة الحاسبة للوصول إلى الرسائل النصية القصيرة.
ينطبق نفس المنطق سواء كان الملف APK، أو XAPK (حيث نقرأ ملف APK الأساسي الداخلي)، أو حزمة APKS (حيث نقرأ بيان كل تقسيم).
القيام بذلك من سطر الأوامر
إذا كنت تفضل المسار الطرفي، فإن Android SDK يشحن aapt2، الذي يفرغ بيانًا من أي ملف APK بتنسيق XML عادي:
aapt2 dump badging example.apk | grep "uses-permission"
أو استخدم apksigner للتحقق من شهادة التوقيع في نفس الوقت:
apksigner verify --print-certs example.apk
تقوم أداة المتصفح بنفس الشيء بالنسبة للمستخدمين الذين يفضلون عدم تثبيت SDK فقط لفحص ملف واحد.
الأسئلة المتداولة (الأسئلة الشائعة)
هل يمكنني رفض الإذن بعد تثبيت APK؟
نعم. في نظام التشغيل Android 6.0 والإصدارات الأحدث، يمكنك الانتقال إلى الإعدادات > التطبيقات > [اسم التطبيق] > الأذونات لتبديل الأذونات الخطيرة الفردية أو إيقاف تشغيلها.
هل تتمتع ملفات XAPK بأذونات مختلفة؟
يحتوي XAPK على ملف APK واحد أو أكثر. كل ملف APK بالداخل له بيانه الخاص. ستقوم أداتنا بتحليل APK الرئيسي داخل الحزمة لتظهر لك الأذونات ذات الصلة.
لماذا يطلب كل تطبيق "الوصول إلى الشبكة"؟
تحتاج جميع التطبيقات تقريبًا إلى الوصول إلى الإنترنت لإجراء التحليلات أو الإبلاغ عن الأخطاء أو الإعلانات. على الرغم من أن هذا أمر شائع، إلا أنه يمثل أيضًا الطريقة التي يتم بها إرسال البيانات المسروقة إلى خادم المتسلل.
فحص الأذونات الواضحة قبل النقر فوق تثبيت
لا يمكنك الحكم على ما لا يمكنك رؤيته. إن قضاء عشر ثوانٍ في عرض أذونات APK قبل التحميل الجانبي هو الفرق بين معرفة ما يمكن أن يصل إليه التطبيق والأمل ببساطة في أن يتصرف. اقرأ القائمة أولاً، ثم قم بتثبيتها ثانياً.