نحوه مشاهده مجوزهای برنامه 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> شروع می شوند.
توصیه: استفاده از ابزار آنلاین ما که فوراً آن را برای شما رمزگشایی می کند، بسیار سریعتر است.
اکنون برنامه های خود را حسابرسی کنید
دقیقاً بدانید که برنامه های شما چه چیزی را می خواهند. بدون راز، بدون خطر.
مجوزهای APK را بررسی کنیدآنچه در واقع در 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 به هر مجوزی یک "سطح حفاظت" اختصاص می دهد. دانستن اینکه یک درخواست به کدام سطح تعلق دارد، به شما می گوید که سیستم عامل چقدر با آن برخورد جدی می کند.
| سطح حفاظت | تجربه کاربری | نمونه ها |
|---|---|---|
| عادی | در زمان نصب بیصدا اعطا میشود. بدون اعلان. | INTERNET، VIBRATE، ACCESS_NETWORK_STATE، WAKE_LOCK |
| خطرناک | زمان اجرا اولین باری که از این ویژگی استفاده می شود. قابل برگشت در تنظیمات | دوربین، RECORD_AUDIO، READ_CONTACTS، ACCESS_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 Store حتی برخی از آنها را نشان نمی دهد. آنها به معنای "آسان برای نادیده گرفتن" "پنهان" هستند، نه به معنای "ناشناس".
- برنامههای مجوزهای سفارشی تعریف شده توسط برنامه میتوانند برچسبهای <permission> خود را اعلام کنند و آنها را در اجزای داخلی مورد نیاز قرار دهند. اینها برای ارتباط بین برنامه ای وجود دارند و به خودی خود یک نگرانی در مورد حفظ حریم خصوصی نیستند، اما اگر یک برنامه محبوب مجوز سفارشی با سطح حفاظت اشتباه را اعلام کند و برنامه دیگری سپس از آن به عنوان یک درپشتی استفاده کند، می توان از آنها سوء استفاده کرد.
در هر صورت، پاسخ یکسان است: مانیفست را بخوانید، به خودی خود به توضیحات Play Store اعتماد نکنید.
مثال کار: ممیزی یک APK واقعی
فرض کنید example.apk را در پوشه Downloads خود دارید. در اینجا گردش کار دقیق است:
- ابزار اطلاعات APK را در مرورگر خود باز کنید.
- APK را در قسمت آپلود رها کنید. پردازش به صورت محلی انجام می شود. فایل از دستگاه شما خارج نمی شود.
- بخش مجوزها را بخوانید. هر ورودی نام ثابت (android.permission.READ_CONTACTS و توصیفی به زبان ساده از آنچه اجازه می دهد را نشان می دهد).
- لیست را با دسته برنامه مقایسه کنید. تقریباً انتظار می رود:
- دوربین برنامه های دوربین:، RECORD_AUDIO (برای ویدیو)، STORAGE/MEDIA نوشتن
- برنامه های پیام رسانی: INTERNET، READ_CONTACTS، SEND_SMS (فقط در صورت پیامک)، RECORD_AUDIO (برای یادداشتهای صوتی)، دوربین (برای ارسال عکس)
- بازی ها: INTERNET، گاهی اوقات 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 اصلی را در بسته تجزیه و تحلیل می کند تا مجوزهای مربوطه را به شما نشان دهد.
چرا هر برنامه ای «دسترسی به شبکه» را می خواهد؟
تقریباً همه برنامه ها برای تجزیه و تحلیل، گزارش اشکال یا تبلیغات به دسترسی به اینترنت نیاز دارند. در حالی که رایج است، این روشی است که اطلاعات دزدیده شده به سرور یک هکر ارسال می شود.
بررسی مجوزهای Manifest قبل از اینکه روی Install ضربه بزنید
شما نمی توانید چیزی را که نمی بینید قضاوت کنید. گذراندن ده ثانیه برای مجوزهای یک APK را مشاهده کنید قبل از بارگذاری جانبی، تفاوت بین دانستن اینکه یک برنامه به چه چیزی میتواند دسترسی داشته باشد و صرفاً امیدوار بودن عملکرد آن است. ابتدا لیست را بخوانید و در مرحله دوم نصب کنید.