Локальный статический анализ пакетов Android в браузере
Инструмент APK Info Viewer выполняет статический анализ файлов пакетов Android (APK) непосредственно в веб-браузере пользователя. Этот метод позволяет изучить внутреннюю структуру, заявленные требования и параметры безопасности приложения до его установки на физическое устройство или эмулятор. Процесс не требует запуска или выполнения кода приложения, что исключает риски, связанные с развертыванием потенциально нежелательного программного обеспечения.
Вся обработка, включая чтение структуры архива, извлечение манифеста и вычисление криптографических хеш-сумм, происходит локально с помощью фонового веб-воркера (Worker). Файлы не передаются на внешние серверы, обеспечивая конфиденциальность анализируемых данных. Инструмент поддерживает работу с файлами размером до 500 MB. При попытке загрузить объект, превышающий этот лимит, отображается сообщение об ошибке: Этот файл весит более 500 MB — вкладка браузера не сможет безопасно его проверить.. Если пользователь выбирает несколько файлов одновременно, система обрабатывает только первый из них, выводя уведомление: По одному файлу за раз — проверяется первый..
Анатомия APK и структура ресурсов
Файл с расширением .apk представляет собой специализированный архив, содержащий скомпилированный код, ресурсы и метаданные, необходимые для работы приложения на платформе Android. APK Info Viewer извлекает и систематизирует эти компоненты, отображая их в нескольких специализированных разделах.
В процессе анализа инструмент фиксирует этапы работы с помощью статусных индикаторов:
Чтение ‹name›…Вычисление хешей файла — ‹percent›%Анализ пакета…Отчет готов.
После завершения парсинга в разделе Ресурсы (secResources) выводятся количественные показатели внутренней структуры пакета:
Файлы в пакете(lEntries): общее количество объектов внутри архива.Файлы кода (.dex)(lDexFiles): исполняемые файлы Dalvik Executable, содержащие скомпилированный код приложения.Файлы ресурсов(lResFiles): элементы интерфейса, XML-описания и таблицы ресурсов.Файлы ассетов(lAssets): вспомогательные файлы произвольного формата, используемые приложением напрямую.Плотности экрана(lDensities): поддерживаемые конфигурации плотности пикселей для графических ресурсов.
Если структура архива нарушена, инструмент выводит ошибку: Пакет поврежден или обрезан, поэтому его содержимое не удалось прочитать.. В случае иных проблем с доступом к файлу генерируются сообщения Не удалось прочитать файл. Выберите его снова. или Сбой проверки. Попробуйте другой файл.. При загрузке файлов, не являющихся пакетами Android, выводится предупреждение: Это не похоже на APK: внутри не найден читаемый AndroidManifest.xml..
Инструмент строго разграничивает стандартный формат APK и альтернативные методы дистрибуции. При попытке загрузить разделенные пакеты выводится сообщение: Это разделенный пакет XAPK — контейнер из нескольких APK. Извлеките базовый APK и проверьте его.. При импорте файлов публикации для разработчиков отображается текст: Это Android App Bundle (.aab) — формат публикации, а не устанавливаемый APK. Проверьте собранный APK..
Совместимость и версии Android SDK
Раздел Требования (secRequirements) описывает параметры совместимости приложения с различными версиями операционной системы Android. Эти параметры задаются разработчиком в манифесте и определяют поведение API и доступность функций безопасности:
| Параметр в интерфейсе | Формат вывода значения | Техническое значение |
|---|---|---|
Мин. Android (lMinSdk) |
Android ‹version› (API ‹level›) или API ‹level› |
Минимальная версия ОС, необходимая для запуска приложения. |
Целевой Android (lTargetSdk) |
Android ‹version› (API ‹level›) или API ‹level› |
Версия SDK, под которую оптимизировано приложение и для которой применяются правила безопасности. |
макс. SDK ‹n› (lMaxSdk) |
Числовое значение уровня API | Максимально допустимая версия Android (если ограничение задано). |
Параметр Целевой Android имеет критическое значение для безопасности: современные версии Android принудительно применяют строгие правила изоляции процессов и защиты данных для приложений, ориентированных на актуальные уровни API.
Анализ разрешений и выявление рисков
Раздел Разрешения (secPermissions) содержит полный список полномочий, которые приложение запрашивает у операционной системы при установке или в процессе работы.
Для удобства аудита безопасности разрешения автоматически сортируются. Запросы, классифицируемые платформой Android как имеющие доступ к персональным данным пользователя или критическим функциям устройства, получают приоритет и отображаются в самом верху списка. Рядом с такими пунктами выводится специальный маркер — Опасные (lDangerous). К этой категории относятся доступ к контактам, камере, микрофону, геолокации и файловому хранилищу. Наличие маркера помогает быстро оценить соответствие запрашиваемых прав реальному функционалу утилиты.
Компоненты приложения и точки входа
В разделе Компоненты (secComponents) отображаются основные программные декларации, структурированные по четырем стандартным категориям Android:
Activity(groupActivities): визуальные экраны интерфейса, с которыми взаимодействует пользователь.Service(groupServices): фоновые процессы, выполняющие задачи без создания видимого интерфейса.Receiver(groupReceivers): приемники широковещательных сообщений, реагирующие на системные или межпрограммные события.Provider(groupProviders): контент-провайдеры, управляющие доступом к структурированным базам данных приложения.
Для каждого компонента проверяется атрибут экспорта. Если компонент доступен для вызова внешними приложениями, рядом с ним выводится метка экспортировано (lExported). Для контент-провайдеров также отображается их уникальный идентификатор (authority) или значение Нет (none).
Чтобы интерфейс оставался читаемым, для каждой категории действует лимит отображения — не более 100 записей. Если количество компонентов превышает этот порог, список сокращается, а в конце добавляется индикатор вида ещё +‹count› (lMore).
В разделе Нативный код (secNative) приводится список поддерживаемых архитектур процессоров (ABIs), таких как arm64-v8a или x86_64, и количество скомпилированных библиотек под каждую платформу.
Проверка цифровой подписи и целостности
Раздел Подписи (secSignatures) позволяет верифицировать автора приложения и убедиться, что пакет не подвергался модификации третьими лицами. APK Info Viewer извлекает метаданные X.509 сертификатов из классических блоков v1 (PKCS#7), а также из современных блоков подписи APK Signing Block (схемы v2, v3 и v3.1).
Для каждого найденного подписанта (Подписавший ‹n› / lSigner) извлекаются следующие данные:
Субъект(lSubject): информация о владельце ключа.Кем выдан(lIssuer): удостоверяющий центр или сам разработчик (в случае самоподписанных сертификатов).Серийный номер(lSerial): уникальный идентификатор сертификата.Действителен с(lValidFrom) иДействителен по(lValidTo): временные рамки действия ключа.Алгоритм подписи(lSigAlg) иАлгоритм ключа(lKeyAlg).- Криптографические отпечатки сертификата: MD5, SHA-1 и SHA-256.
Если пакет не содержит цифровой подписи или ее формат не распознан, выводится предупреждение: Блок распознанной подписи не найден — пакет может быть без подписи или перепакован..
Важное ограничение: инструмент извлекает и показывает метаданные сертификатов, но не производит криптографическую проверку целостности подписей, не валидирует цепочки доверия и не подтверждает реальную личность издателя в физическом мире.
Для независимой сверки целостности самого файла в разделе Хэши файла (secHashes) рассчитываются контрольные суммы всего архива APK по алгоритмам MD5, SHA-1 и SHA-256. Полученные значения можно сопоставить с хешами, опубликованными разработчиком на официальном сайте.
По окончании работы пользователь может сохранить результаты анализа на локальный диск, нажав кнопку Скачать отчёт (download), после чего отобразится статус Отчет скачан.. Кнопка Очистить (clear) сбрасывает интерфейс в исходное состояние Готово. Перетащите APK для проверки. с выводом статуса Очищено..
Часто задаваемые вопросы
Что можно узнать об APK без его установки?
Довольно многое: имя пакета и версию приложения, необходимые версии Android, все запрашиваемые разрешения, экраны и фоновые компоненты, типы процессоров для нативного кода и сертификаты, которыми оно подписано.
Может ли этот инструмент определить, является ли APK вредоносным ПО?
Нет — и относитесь с подозрением к любым инструментам, обещающим вердикт по итогам быстрого сканирования. Здесь вы получаете факты: разрешения, компоненты, подписантов и хеши. Сравните их с официальными данными разработчика и считайте неожиданные разрешения или иного подписанта поводом отказаться от установки.
Какие файлы поддерживаются?
Одиночные файлы APK размером до 500 MB. Разделенные пакеты (XAPK, APKM) и Android App Bundles (.aab) являются контейнерами или форматами публикации, а не одним устанавливаемым пакетом, поэтому они отклоняются с понятным сообщением вместо запутанного отчета.
Что говорят детали подписи?
Каждое Android-приложение подписано, и сертификат указывает на его издателя. Вы видите, какие схемы подписи поддерживает пакет (v1, v2, v3), а также субъект каждого подписанта, срок действия и отпечатки MD5, SHA-1 и SHA-256. Два APK с совпадающими отпечатками созданы одним издателем — доверять ли этому издателю, решать вам.
Что означает значок «Опасное» у разрешения?
Это собственная классификация Android: опасные разрешения могут затрагивать личные данные (местоположение, контакты, камеру, микрофон, хранилище), поэтому система запрашивает у пользователя разрешение. Этот значок — не обвинение; для навигационного приложения запрашивать геолокацию нормально. Он просто выделяет разрешения, которые стоит перечитать дважды.