Декомпиляция android-приложений
Big Brother's Blog
Понадобилось мне зареверсить одно приложение и подумал, почему бы статью об этом не написать?
При реверсинге может возникнуть 2 случая:
1. Простой:
У вас на руках есть .apk файл приложения. Можно приступать к реверсу.
2. Сложный:
Приложение есть только в googleplay. Прийдётся выковыривать приложение из телефона.
Для этого случая понадобятся root права на андроид.
Я начну со второго, а после этого перейдём к реверсу(самая лёгкая часть).
Настраиваем ADB.
Нам понадобится adb на компьютере:
Код:
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install android-tools-adb android-tools-fastboot
После установки необходимо опознавание устройств, в терминале:
Код:
sudo nano /etc/udev/rules.d/51-android.rules
Вставляем:
И выдаём права:
Код:
sudo chmod a+r /etc/udev/rules.d/51-android.rules
На android-устройстве нужно включить режим отладки по USB.
Для этого в настройки > о телефоне неслолько раз подряд жмём по номеру сборки. Разблокируется режим разработчика. Далее идём в настройки > для разработчиков и ставим галку на Отладка по USB.
Подключаем телефон к компьютеру, должно высветиться такое окно:
Жмём окей. В терминале вводим:
Код:
sudo adb devices
Если есть ваш телефон, то всё ок.
Достаём apk файл.
Я буду показывать на примере BlueBorne Vulnerability Scanner. Он есть только в гугл плей.
Установим приложение:
Далее в терминале:
Код:
sudo adb shell
su
ls /data/app
Нам покажет все установленные приложения и их расположение. Как видно, BlueBorne Scanner находится по
/data/app/com.armis.blueborne_detector-1.
Если ввести
ls /data/app/com.armis.blueborne_detector-1, то в ответ получим
Код:
base.apk
lib
base.apk - это и есть приложение. Скопируем его на cd-карту:
Код:
cp /data/app/com.armis.blueborne_detector-1/base.apk /sdcard/
Выходим из android-shell в обычный терминал (2 раза Ctrl+d) и копируем с cd-карты на компьютер:
Код:
sudo adb pull /sdcard/base.apk
Меня, кстати говоря, сильно удивило, что при установке приложения через гугл плей и установке через apk-файл требуются разные разрешения. Кажется, гугл что-то скрывает...
Декомпилируем.
Нам понадобится apktool для декомпиляции и dex2jar для вытаскивания кода (оба есть по умолчанию в Kali).
Декомпилируем:
Код:
sudo apktool -r -s d base.apk
В созданной нам понадобится classes.dex (вся логика программы). Получаем .JAR:
Код:
d2j-dex2jar -r -ts classes.dex
На выходе получаем classes-dex2jar.jar, который можно распоковать, я пользуюсь jd-gui для просмотра:
Android
738 постов7.5K подписчиков
Правила сообщества
Сообщество посвящено обсуждению и обмену опытом использования устройств, работающих под управлением ОС Android/Linux, а также программного обеспечения для них. Обсуждение других операционных систем (в том числе GNU/Linux) - только в рамках их взаимодействия с Android.
В сообществе запрещены:
* заведомо деструктивные рекомендации
* бессодержательная переписка, особенно с переходом на личности собеседников
* обсуждение нужности рутового доступа (он нужен, и если у вас его нет - мы вам искренне посочувствуем, но искать другие способы решения вашей проблемы не будем)
* обсуждение нужности ПО от Google (необходимости в нем нет, и если вам этот функционал не нужен - смело запускайте pm disable-user или даже pm uninstall, только не забудьте предварительно сделать полную резервную копию)
Если вы просите о помощи, обязательно укажите максимально полную информацию об используемом вами устройстве, чего вы хотите добиться и какие шаги для этого предпринимали - это существенно ускорит получение ответа, так как из обсуждения будут исключены диалоги вида "попробуй вот так - пробовал, не помогает". Соответственно, и при ответе следует давать рекомендации, подходящие для любого устройства. Если вы не уверены в универсальности решения, напишите об этом явно: "у меня %s и мне помогло %s".
Данная редакция правил действует с момента ее публикации: 2022-01-27 22:00:00 +03:00