Как просмотреть разрешения приложения Android перед установкой APK
Когда вы устанавливаете приложение из Google Play Store, Android отображает упрощенную сводку того, к чему приложение может получить доступ. Загрузите APK из источника, не связанного с Play, и у вас не будет такой системы безопасности, если вы сами не прочитаете манифест. «Действительно ли приложению с обоями нужен доступ к SMS и микрофону?» — именно на такие вопросы поможет ответить это руководство.
Далее следует тот же рабочий процесс, который наша команда использует при проверке незнакомого 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 grants these automatically.
- Опасно: Разрешения высокого риска (Контакты, Местоположение, Камера). Эти должен будут подтверждены вами при запуске приложения.
- Подпись/Система: Чрезвычайно высокий риск. Они доступны только для приложений, подписанных производителем устройства или самой ОС.
Ручной метод (с использованием программы просмотра ZIP)
Если у вас есть технические навыки, вы можете проверить разрешения самостоятельно:
- Переименуйте app.apk в app.zip и откройте его.
- Найдите AndroidManifest.xml. (Примечание: он имеет двоичный формат и в текстовом редакторе будет выглядеть как тарабарщина).
- Используйте такой инструмент, как AXMLПринтер, чтобы преобразовать его в читаемый текст.
- Найдите теги, начинающиеся с <uses-permission>.
Рекомендация: Гораздо быстрее использовать наш онлайн-инструмент, который мгновенно декодирует это для вас.
Проведите аудит своих приложений прямо сейчас
Точно знайте, что запрашивают ваши приложения. Никаких секретов, никаких рисков.
Проверьте разрешения APKЧто на самом деле хранится в AndroidManifest.xml
Манифест — это главный источник правды о каждом разрешении, компоненте и функции, которые объявляет приложение. Внутри APK этот файл хранится в формате бинарного XML, а не обычного текста, как в исходном коде, поэтому его нельзя прочитать в простом текстовом редакторе. Наш инструмент APK Info декодирует бинарный XML и наглядно показывает все важные теги. Наиболее важные из них:
- <uses-permission android:name="..."/>: все разрешения, которые приложение может когда-либо запросить. Список полный находится здесь, включая те, которые приложение может никогда не использовать во время выполнения.
- <uses-permission-sdk-23 ... />: то же самое, но запрашивается только в том случае, если приложение работает на Android 6 или более поздней версии. Старые устройства разрешены автоматически, без запроса.
- <uses-feature android:name="..." android:required="true|false"/>: аппаратные функции, которые использует приложение (камера, GPS, NFC). Если отмечено необходимый, Play Store скрывает приложение от устройств, на которых нет этой функции.
- <application android:debuggable="true">: a giant red flag in a release APK. Отлаживаемое приложение предоставляет доступ к своей памяти и состоянию процесса любому, у кого есть доступ к ADB. Отклонять.
- <activity android:exported="true"> для конфиденциальных действий: позволяет другим приложениям запускать этот экран. Для приложения конфиденциальности это часто означает небрежное кодирование.
Уровни защиты разрешений: шпаргалка
Android назначает каждому разрешению «уровень защиты». Знание того, к какому уровню принадлежит запрос, говорит о том, насколько серьезно ОС отнесется к нему.
| Уровень защиты | Пользовательский опыт | Примеры |
|---|---|---|
| нормальный | Предоставляется автоматически во время установки. Нет подсказки. | ИНТЕРНЕТ, ВИБРАЦИЯ, ACCESS_NETWORK_STATE, WAKE_LOCK |
| опасный | Запрос времени выполнения при первом использовании функции. Отзывной в настройках. | КАМЕРА, RECORD_AUDIO, READ_CONTACTS, ACCESS_FINE_LOCATION |
| подпись | Предоставляется только приложениям, подписанным тем же сертификатом, что и предоставляющее приложение или ОС. | BIND_VPN_SERVICE, INSTALL_PACKAGES (только для системы) |
| подпись|привилегированный | Доступно только для предустановленных приложений в каталоге priv-app образа системы. | MANAGE_USERS, ЧТЕНИЕ_ЖУРНОВ |
| приложение/роль | Для включения требуется отдельный поток настроек. | SYSTEM_ALERT_WINDOW, BIND_ACCESSIBILITY_SERVICE, MANAGE_EXTERNAL_STORAGE (специальный доступ) |
Что на самом деле означают «скрытые» разрешения
Распространенным заблуждением является то, что некоторые разрешения являются секретными. Это не так: каждое разрешение, которое может использовать приложение, должно быть объявлено в AndroidManifest.xml, и ОС отказывается предоставить любое разрешение, не указанное там. Под «скрытым» люди обычно подразумевают одно из двух:
- Разрешения обычного уровня молчат. Они предоставляются во время установки без какого-либо взаимодействия с пользователем. В сводке Play Store некоторые из них даже не показаны. Они «скрыты» в смысле «легко не заметить», а не в смысле «нераскрыты».
- Приложения Пользовательские разрешения, определяемые приложением. могут объявлять свои собственные теги <permission> и требовать их для внутренних компонентов. Они существуют для взаимодействия между приложениями и сами по себе не несут угрозы конфиденциальности, но ими можно злоупотребить, если популярное приложение объявит пользовательское разрешение с неправильным уровнем защиты, а другое приложение воспользуется этим как лазейкой.
В любом случае ответ один и тот же: читайте манифест, не доверяйте описанию Play Store самому по себе.
Рабочий пример: аудит реального APK
Предположим, у вас есть example.apk в папке «Загрузки». Вот точный рабочий процесс:
- Откройте Инструмент информации об APK в своем браузере.
- Перетащите APK в область загрузки. Обработка происходит локально; файл не покидает ваше устройство.
- Прочтите раздел Разрешения. В каждой записи указано имя константы (android.permission.READ_CONTACTS и понятное описание того, что она позволяет).
- Сравните список с категорией приложения. Грубо говоря, ожидайте:
- Приложения камеры: CAMERA, RECORD_AUDIO (для видео), STORAGE/MEDIA запись
- Приложения для обмена сообщениями: INTERNET, READ_CONTACTS, SEND_SMS (только если на основе SMS), RECORD_AUDIO (для голосовых заметок), CAMERA (для отправки фотографий)
- Игры: ИНТЕРНЕТ, иногда RECORD_AUDIO (для внутриигрового голосового чата), разрешения, связанные с выставлением счетов; редко что-нибудь еще
- Служебные приложения (калькулятор, фонарик, погода): INTERNET (для рекламы), ACCESS_NETWORK_STATE, возможно LOCATION (только погода). Все, что сверх этого, подозрительно.
- Если что-то в списке не соответствует категории, не устанавливайте. Нет веской причины, по которой калькулятору нужен доступ по SMS.
Та же логика применяется независимо от того, является ли файл 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 только для проверки одного файла.
Часто задаваемые вопросы (FAQ)
Могу ли я отказать в разрешении после установки APK?
Да. On Android 6.0 and higher, you can go to Настройки > Приложения > [Имя приложения] > Разрешения to toggle individual dangerous permissions on or off.
Имеют ли файлы XAPK разные разрешения?
XAPK содержит один или несколько APK. Каждый APK внутри имеет свой собственный манифест. Наш инструмент проанализирует Основной APK в комплекте, чтобы показать вам соответствующие разрешения.
Почему каждое приложение запрашивает «Доступ к сети»?
Почти всем приложениям требуется доступ к Интернету для аналитики, отчетов об ошибках или рекламы. Хотя это и распространенный способ, украденные данные также передаются на сервер хакера.
Проверка разрешений манифеста перед нажатием «Установить»
Нельзя судить о том, чего не видишь. Потратить десять секунд на просмотреть разрешения APK, прежде чем загружать его, — это разница между знанием того, чего может достичь приложение, и простой надеждой на то, что оно будет вести себя хорошо. Сначала прочитайте список, а затем установите.