Локален статичен анализ на Android приложения с APK Info Viewer
Инструментът APK Info Viewer предоставя възможност за детайлно изследване на съдържанието и метаданните на даден Android пакет (APK) преди неговото инсталиране. Приложението работи изцяло в уеб браузъра на потребителя, като извлича ключови технически параметри, без да изпълнява или инсталира пакета на устройството. Чрез този статичен анализ потребителите могат да проверят декларираните свойства на приложението и да ги съпоставят с официалните данни от разработчика.
Процесът по обработка, изчисляване на хеш стойности и парсване се извършва локално чрез Worker в браузъра. Файловете не се изпращат към външни сървъри, което гарантира поверителност при работа с пакетите.
Входни параметри и ограничения при зареждане
Инструментът приема за анализ само единични файлове, отговарящи на следните изисквания:
- Формат на файла: Единственият поддържан формат е
.apk. - Лимит на размера: До 500 MB. При опит за качване на по-голям файл се извежда съобщението за грешка:
"Този файл е над 500 MB — по-голям е от това, което разделът на браузъра може безопасно да инспектира.". - Брой файлове: Обработва се само по един файл. Ако потребителят избере няколко файла едновременно, системата анализира първия от тях и показва бележката:
"Само по един файл — инспектира се първият.".
При работа с неподдържани или повредени формати се прилагат следните правила:
- Разделени пакети (XAPK, APKM): Отхвърлят се със съобщението:
"Това е XAPK разделен пакет — контейнер с няколко APK файла. Извлечете базовия APK и инспектирайте него.". - Android App Bundles (.aab): Отхвърлят се с:
"Това е Android App Bundle (.aab) — формат за публикуване, а не инсталируем APK. Инспектирайте компилирания APK вместо него.". - Невалидни APK файлове: Ако липсва четим манифест, се показва:
"Това не прилича на APK: вътре не е намерен четим файл AndroidManifest.xml.". - Повредени файлове: При повреда или липса на сегменти се изписва:
"Пакетът изглежда повреден или непълен, поради което съдържанието му не можа да бъде прочетено.". - Грешки при четене: При общ проблем с достъпа до файла се показва:
"Файлът не можа да бъде прочетен. Изберете го отново.". При всяка друга грешка по време на анализа се извежда:"Инспекцията неуспешна. Опитайте с друг файл.".
Структура на генерирания отчет
След приключване на анализа, APK Info Viewer визуализира структуриран отчет, разделен на няколко основни секции:
Изисквания (Изисквания)
Тази секция показва съвместимостта на приложението с различните версии на операционната система Android:
- Минимален Android (
Минимален Android): Минималната изисквана версия, показвана катоAndroid ‹version› (API ‹level›)или самоAPI ‹level›. - Целеви Android (
Целеви Android): Версията, за която е оптимизирано приложението, показвана катоAndroid ‹version› (API ‹level›)илиAPI ‹level›. - Максимална поддръжка: Ако е дефинирано в пакета, се показва под формата на
макс. SDK ‹n›.
Разрешения (Разрешения)
Списък с всички разрешения, които приложението изисква при инсталиране. Разрешенията, класифицирани от Android като имащи достъп до лични данни, се приоритизират в горната част на списъка и се маркират със значка за опасност (Опасни).
Компоненти (Компоненти)
Секцията извлича декларираните в манифеста софтуерни компоненти, разделени в четири групи:
- Дейности (Activities): Потребителските интерфейси на приложението. Компонентите, достъпни за стартиране от външни приложения, се маркират като
експортирани. - Услуги (Services): Фоновите процеси. Могат да носят маркер
експортирани. - Приемници (Receivers): Компоненти за улавяне на системни събития. Могат да бъдат маркирани като
експортирани. - Доставчици (Providers): Компоненти за споделяне на данни. Показват се с маркер
експортирани, адреса на доставчика (authority) или стойностНяма.
За всяка от тези четири групи се визуализират максимум до 100 записа. При надхвърляне на този лимит се добавя етикет +‹count› още.
Нативен код (Нативен код)
Показва поддържаните архитектури на процесора (Application Binary Interfaces - ABIs) и броя на съответните нативни библиотеки в пакета.
Ресурси (Ресурси)
Предоставя количествена информация за съдържанието на пакета:
- Екранни плътности (
Екранни плътности) - Файлове с ресурси (
Файлове с ресурси) - Файлове с активи (
Файлове с активи) - Файлове с код (.dex) (
Файлове с код (.dex)) - Файлове в пакета (
Файлове в пакета)
Подписи (Подписи)
Инструментът извлича X.509 сертификати от v1 PKCS#7 блокове и APK Signing Blocks (v2, v3, v3.1). За всеки открит подписващ се визуализират следните полета:
Подписал ‹n›СубектИздателСериен номерВалидно отВалидно доАлгоритъм на подписаАлгоритъм на ключа- Криптографски отпечатъци: MD5, SHA-1 и SHA-256.
Ако в пакета липсва разпознаваем блок с подпис, се извежда съобщението: "Няма открит разпознат блок с подпис — пакетът може да е неподписан или препакетиран.". Инструментът само извлича и показва тези метаданни; той не извършва криптографска проверка на целостта на подписите, не валидира веригата на доверие на сертификатите и не потвърждава реалната самоличност на издателя.
Хешове на файла (Хешове на файла)
Показва изчислените криптографски хеш стойности на самия APK файл: MD5, SHA-1 и SHA-256.
Статуси на интерфейса и управление
По време на работа с APK Info Viewer потребителят вижда следните съобщения за състоянието в реално време:
| Състояние на интерфейса | Значение |
|---|---|
Готово. Пуснете APK файл, за да го инспектирате. |
Инструментът е зареден и очаква файл. |
Четене на ‹name›… |
Извършва се първоначално четене на файла от диска. |
Изчисляване на файлови хешове — ‹percent›% |
Прогрес на генерирането на MD5, SHA-1 и SHA-256 хешове. |
Анализиране на пакета… |
Парсване на структурата и извличане на манифеста. |
Отчетът е готов. |
Анализът е завършен успешно и данните са визуализирани. |
Изчистено. |
Данните от предишния анализ са премахнати от екрана. |
Отчетът е изтеглен. |
Потребителят е свалил локално копие на генерирания отчет. |
Потребителят може да взаимодейства с интерфейса чрез два основни бутона:
- Изтегляне на отчет (
Изтегляне на отчет): Записва генерираните данни на локалното устройство. - Изчистване (
Изчистване): Нулира интерфейса за нов анализ.
Често задавани въпроси (FAQ)
Какво мога да науча за един APK, без да го инсталирам?
Доста неща: името на пакета и версията на приложението, необходимите версии на Android, всяко изисквано разрешение, екраните и фоновите компоненти, които декларира, видовете процесори, за които има нативен код, и сертификатите, с които е подписано.
Може ли този инструмент да ми каже дали даден APK е зловреден софтуер?
Не — и подхождайте със съмнение към всеки инструмент, който обещава присъда след бързо сканиране. Тук получавате факти: разрешения, компоненти, издатели на сертификати и хешове. Сравнете ги с това, което разработчикът публикува, и приемайте неочакваните разрешения или различен издател спрямо официалната версия като причина да се откажете.
Кои файлове се поддържат?
Самостоятелни APK файлове до 500 MB. Разделените пакети (XAPK, APKM) и Android App Bundles (.aab) са контейнери или формати за публикуване, а не един инсталируем пакет, затова те се отхвърлят с ясна бележка вместо с объркващ отчет.
Какво ми казват данните за подписа?
Всяко Android приложение е подписано, като сертификатът идентифицира кой го е публикувал. Виждате кои схеми за подпис поддържа пакетът (v1, v2, v3), както и субекта на всеки подписващ, периода на валидност и MD5, SHA-1 и SHA-256 отпечатъците. Два APK файла с еднакви отпечатъци идват от един и същ издател — дали имате доверие на този издател преценявате вие.
Какво означава значката „Опасно“ (Dangerous) за дадено разрешение?
Това е собствената класификация на Android: опасните разрешения могат да имат достъп до лични данни — местоположение, контакти, камера, микрофон, памет — затова системата пита потребителя, преди да ги даде. Значката не е обвинение; приложение за карти, което иска местоположение, е нещо нормално. Тя просто отбелязва разрешенията, които си струва да прочетете два пъти.