Вы скачали APK неизвестно откуда — может, друг прислал, может, нашли на каком-то форуме «взломанную» программу, а может, просто хотите проверить приложение перед установкой. Установить на телефон страшно, а выкинуть жалко. Есть способ: загрузить APK в онлайн-декомпилятор и посмотреть, что внутри, не заражая своё устройство.
Ниже — пошагово, как это сделать, на что смотреть и какие сервисы реально работают.
- Зачем вообще декомпилять APK
- Какие онлайн-декомпиляторы реально работают
- Пошаговый процесс анализа
- Шаг 1. Загрузите APK в декомпилятор
- Шаг 2. Откройте манифест
- Шаг 3. Проверьте список активностей и сервисов
- Шаг 4. Изучите код
- Шаг 5. Проверьте сертификат
- Что искать: красные флаги
- Частые ошибки при анализе
- Что выбрать в зависимости от вашей ситуации
- Практические рекомендации
- Итог
Зачем вообще декомпилять APK
APK — это архив, в котором упакован код приложения, ресурсы, манифест и много чего ещё. Декомпилятор распаковывает этот архив и показывает содержимое в читаемом виде. Вы не получите исходный код в том виде, в каком его писал разработчик, но увидите:
- манифест приложения — какие разрешения оно запрашивает;
- ресурсы — строки, картинки, макеты;
- код — в виде Java или Smali (промежуточное представление байт-кода);
- библиотеки и зависимости;
- сертификат и подпись.
Этого достаточно, чтобы понять, делает ли приложение что-то подозрительное: шлёт ли данные на чужие серверы, имеет ли доступ к SMS, какие рекламные SDK тянет за собой.
Какие онлайн-декомпиляторы реально работают
Я перепробовал несколько сервисов. Вот те, которые стабильно открывают APK и выдают нормальный результат:
| Сервис | Что показывает | Ограничения | Когда удобен |
|---|---|---|---|
| javadecompilers.com | Java-код (несколько декомпиляторов на выбор), ресурсы, манифест | Файл до 10 МБ, очередь при загрузке | Нужен именно Java-код, а не Smali |
| apkdecompilers.com | Java + Smali, ресурсы, манифест | До 50 МБ, иногда медленно | Универсальный вариант, если файл не огромный |
| decompiler.com | Java-код, ресурсы, манифест | До 50 МБ, базовый бесплатный функционал | Быстрая загрузка без регистрации |
| www.decompiler.com/apk | Java, Smali, ресурсы | Лимит по размеру, интерфейс попроще | Если нужен Smali, а не только Java |
Все они бесплатны для базового использования. Если APK весит больше 50 МБ — бесплатные сервисы часто отказываются или режут функционал. В таком случае проще поставить локальные инструменты (Apktool, jadx), но это уже другая история.
Пошаговый процесс анализа
Шаг 1. Загрузите APK в декомпилятор
Откройте сайт, нажмите «Upload» или «Choose file», выберите APK. Загрузка занимает от 10 секунд до пары минут — зависит от размера файла и загрузки сервера. После загрузки сервис автоматически начнёт разбор. Иногда нужно выбрать движок декомпилятора (CFR, Procyon, Fernflower) — если есть выбор, ставьте CFR, он стабильнее всего работает с современным Android-кодом.
Шаг 2. Откройте манифест
Первое, на что смотрим — AndroidManifest.xml. Именно здесь прописаны разрешения. Ищите такие строки:
android.permission.SEND_SMS— приложение может отправлять SMS без вашего ведома;android.permission.READ_CONTACTS— доступ к контактам;android.permission.ACCESS_FINE_LOCATION— точное местоположение;android.permission.RECORD_AUDIO— микрофон;android.permission.CAMERA— камера;android.permission.READ_SMS— чтение входящих сообщений.
Если простое приложение-фонарик запрашивает доступ к SMS, контактам и геолокации — это повод насторожиться. Нормальные приложения запрашивают только то, что нужно для работы.
Шаг 3. Проверьте список активностей и сервисов
В том же манифесте посмотрите блоки <activity>, <service> и <receiver>. Обратите внимание на:
- подозрительные имена — например, названия из набора случайных букв или имена, имитирующие системные компоненты;
- сервисы, которые запускаются автоматически при загрузке устройства (
BOOT_COMPLETED); - широковещательные приёмники (receivers), которые слушают системные события — это часто используют для скрытого запуска кода.
Шаг 4. Изучите код
После декомпиляции вы получите структуру папок с Java-файлами (или Smali). Не пытайтесь прочитать всё — это тысячи строк. Вместо этого ищите ключевые слова:
http,https,URL,URLConnection,OkHttp— сетевые запросы;SmsManager,sendTextMessage— отправка SMS;Runtime.exec,ProcessBuilder— выполнение системных команд;SharedPreferences,SQLiteDatabase— работа с данными;Base64,AES,encrypt— шифрование (может быть как легитимным, так и признаком скрытия данных);WebView— встроенный браузер, через который могут показывать фишинговые страницы.
Особое внимание — на сетевые запросы. Если видите, что приложение отправляет IMEI, номер телефона, список установленных приложений или контакты на внешний сервер — это плохо. Посмотрите, на какой именно адрес идёт отправка. Незнакомые домены с набором букв — тревожный знак.
Шаг 5. Проверьте сертификат
В папке META-INF лежат файлы подписи: CERT.RSA, CERT.SF, MANIFEST.MF. Откройте CERT.RSA через любой инструмент просмотра сертификатов (или просто дважды кликните, если на компьютере есть Java). Посмотрите:
- кто издатель (CN — Common Name);
- срок действия сертификата;
- используется ли самоподписанный сертификат (self-signed) — это нормально для инди-разработчиков, но подозрительно для приложения, которое выдаёт себя за банк.
Если приложение подписано сертификатом, который ранее использовался в известном вредоносном ПО — это можно проверить через VirusTotal по SHA-256 хешу сертификата.
Что искать: красные флаги
Вот конкретные признаки того, что APK лучше не ставить:
- запрашивает разрешения, не связанные с функционалом (калькулеру не нужен доступ к SMS);
- отправляет данные на внешние серверы без явной на то причины;
- содержит обфусцированный код (имена классов вида
a.b.c,d.e.f— это не всегда злонамеренно, но в сочетании с другими признаками настораживает); - использует рефлексию для вызова скрытых API (
Class.forName,Method.invoke); - содержит встроенные рекламные SDK с агрессивным сбором данных (некоторые рекламные сети соберут больше, чем нужно);
- при установке просит отключить Google Play Protect или разрешить установку из неизвестных источников — это почти гарантированно вредоносное поведение.
Частые ошибки при анализе
Ошибка 1: Считать, что декомпиляция даст полную картину. Декомпилятор показывает статический код. Он не увидит код, который подгружается из интернета во время работы (dynamic code loading), и не покажет, что приложение делает в реальном времени. Для полного анализа нужен динамический анализ — запуск в песочнице с перехватом сетевого трафика.
Ошибка 2: Загружать APK на подозрительные сайты. Если вы нашли декомпилятор на каком-то малоизвестном ресурсе с кучей рекламы — есть риск, что сам сервис сохранит ваш APK и использует его. Известные сервисы (из таблицы выше) заявляют, что удаляют файлы через несколько часов. Но сто раз подумайте, прежде чем загружать туда APK коммерческого приложения — это может нарушать чужие права.
Ошибка 3: Игнорировать Smali, если Java-код выглядит чисто. Злоумышленники могут спрятать вредоносную логику именно на уровне Smali, а декомпилятор в Java её не восстановит корректно. Если видите в Java-коде вызовы через рефлюксию или странные конструкции — смотрите Smali для этих классов.
Ошибка 4: Полагаться только на один сервис. Разные декомпиляторы по-разному восстанавливают код. Если один выдал кашу — попробуйте другой. CFR может восстановить то, что не смог Procyon, и наоборот.
Что выбрать в зависимости от вашей ситуации
Ситуация 1: Быстрая проверка перед установкой. Загрузите APK на javadecompilers.com, откройте манифест, проверьте разрешения. Если всё логично — можно ставить. Если что-то странное — не ставьте.
Ситуация 2: Нужно понять, что приложение делает с данными. Загрузите на apkdecompilers.com, ищите сетевые вызовы в Java-коде. Проверьте, какие данные отправляются и куда. Используйте поиск по ключевым словам из списка выше.
Ситуация 3: Подозрение на вредоносное ПО. Одного онлайн-декомпилятора недостаточно. Загрузите APK на VirusTotal — там его проверят десятками антивирусов. Параллельно посмотрите хеш файла в базах вредоносного ПО. Если антивирусы ругаются — удаляйте файл.
Ситуация 4: APK весит больше 50 МБ. Бесплатные онлайн-сервисы скорее всего не примут. Установите jadx (бесплатный, с графическим интерфейсом) или Apktool — они работают локально и без ограничений по размеру.
Практические рекомендации
- Всегда проверяйте разрешения в манифесте первым делом. Это занимает минуту и сразу показывает, не просит ли приложение лишнего.
- Ищите сетевые запросы и проверяйте адреса. Откройте URL в браузере или проверьте через VirusTotal — если домен числится в чёрных списках, дело пахнет.
- Сверяйте имя пакета с оригиналом. Если приложение называется «WhatsApp», а имя пакета
com.whatsapp.free.messenger— это не WhatsApp. - Проверяйте сертификат. Если приложение выдаёт себя за известный сервис, а сертификат самоподписанный или выдан неизвестному лицу — это подделка.
- Не забывайте про VirusTotal. Загрузите APK туда параллельно с декомпиляцией. Даже если код выглядит чисто, антивирус может знать об этом файле больше вас.
- Сохраняйте результаты. Если нашли что-подозрительное — сохраните скриншоты и фрагменты кода. Это пригодится, если захотите сообщить о вредоносном приложении.
Итог
Онлайн-декомпилятор — это быстрый и простой способ заглянуть внутрь APK без установки на устройство. Загрузите файл, проверьте манифест (разрешения, компоненты), изучите код на предмет сетевых запросов и подозрительных вызовов, сверьте сертификат. Если что-то выглядит странным — не ставьте приложение.
Для быстрой проверки используйте javadecompilers.com. Если нужен Smali или файл побольше — apkdecompilers.com. Для серьёзного анализа подозрительных файлов дополните декомпиляцию проверкой через VirusTotal и, при необходимости, локальными инструментами вроде jadx.
Главное правило: если приложение запрашивает больше, чем ему нужно для работы — это не баг, а дизайн. И такой дизайн не стоит вашего доверия.
