Декомпиляция 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.

Декомпиляция android-приложений Android разработка, Kali linux, Apk, Длиннопост

Подключаем телефон к компьютеру, должно высветиться такое окно:

Декомпиляция android-приложений Android разработка, Kali linux, Apk, Длиннопост

Жмём окей. В терминале вводим:


Код:


sudo adb devices


Если есть ваш телефон, то всё ок.

Декомпиляция android-приложений Android разработка, Kali linux, Apk, Длиннопост

Достаём apk файл.


Я буду показывать на примере BlueBorne Vulnerability Scanner. Он есть только в гугл плей.


Установим приложение:

Декомпиляция android-приложений Android разработка, Kali linux, Apk, Длиннопост

Далее в терминале:


Код:


sudo adb shell

su

ls /data/app

Декомпиляция android-приложений Android разработка, Kali linux, Apk, Длиннопост

Нам покажет все установленные приложения и их расположение. Как видно, 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

Декомпиляция android-приложений Android разработка, Kali linux, Apk, Длиннопост

Меня, кстати говоря, сильно удивило, что при установке приложения через гугл плей и установке через apk-файл требуются разные разрешения. Кажется, гугл что-то скрывает...

Декомпиляция android-приложений Android разработка, Kali linux, 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-приложений Android разработка, Kali linux, Apk, Длиннопост

Всем спасибо за внимание!

С Уважением, Большой Брат!

Мой личный блог в телеграме t.me/bigbroblog

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