ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   Уязвимости CMS / форумов (https://forum.antichat.io/forumdisplay.php?f=16)
-   -   Декомпиляция android-приложений (https://forum.antichat.io/showthread.php?t=560558)

Dr.Lafa 21.09.2017 21:40

Понадобилось мне зареверсить одно приложение и подумал, почему бы статью об этом не написать?

При реверсинге может возникнуть 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.

https://forum.antichat.xyz/attachmen...7c05d2e0fc.png

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

https://forum.antichat.xyz/attachmen...a18c7e48c1.png

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

Код:


Код:

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

https://forum.antichat.xyz/attachmen...0d9e9710c2.png

Достаём apk файл.
Я буду показывать на примере BlueBorne Vulnerability Scanner. Он есть только в гугл плей.
Установим приложение:

https://forum.antichat.xyz/attachmen...f968cb3fbb.png


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

Код:


Код:

sudo adb shell
su
ls /data/app

https://forum.antichat.xyz/attachmen...ecfe184772.png

Нам покажет все установленные приложения и их расположение. Как видно, 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
https://forum.antichat.xyz/attachmen...9e03fa0f4d.png

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

https://forum.antichat.xyz/attachmen...30216cfafb.png



Декомпилируем.
О декомпиляции APK рассказывал @Vander здесь и здесь, так что вкратце, нам понадобится apktool для декомпиляции и dex2jar для вытаскивания кода (оба есть по умолчанию в Kali).
Декомпилируем:

Код:


Код:

sudo apktool -r -s d base.apk
В созданной нам понадобится classes.dex (вся логика программы). Получаем .JAR:

Код:


Код:

d2j-dex2jar -r -ts classes.dex
На выходе получаем classes-dex2jar.jar, который можно распоковать, я пользуюсь jd-gui для просмотра:

https://forum.antichat.xyz/attachmen...d0958e782c.png

На этом всё
[doublepost=1506015657,1506015614][/doublepost]@WebWare Team спойлеры не отображаются, хелп

ghost 21.09.2017 23:05

Хорошо разжевано. В kali есть утилитка apktool

Сергей Попов 22.09.2017 08:10

Цитата:


Dr.Lafa сказал(а):

@WebWare Team спойлеры не отображаются, хелп



NekitGod1 14.11.2017 22:13

Цитата:


Dr.Lafa сказал(а):

Понадобилось мне зареверсить одно приложение и подумал, почему бы статью об этом не написать?

При реверсинге может возникнуть 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-файл требуются разные разрешения. Кажется, гугл что-то скрывает...

Декомпилируем.
О декомпиляции APK рассказывал @Vander здесь и здесь, так что вкратце, нам понадобится apktool для декомпиляции и dex2jar для вытаскивания кода (оба есть по умолчанию в Kali).
Декомпилируем:

Код:


Код:

sudo apktool -r -s d base.apk
В созданной нам понадобится classes.dex (вся логика программы). Получаем .JAR:

Код:


Код:

d2j-dex2jar -r -ts classes.dex
На выходе получаем classes-dex2jar.jar, который можно распоковать, я пользуюсь jd-gui для просмотра:

На этом всё
[doublepost=1506015657,1506015614][/doublepost]@WebWare Team спойлеры не отображаются, хелп


Java файлы разьве не нужно приводить в нормальный вид?

Dr.Lafa 15.11.2017 00:48

Цитата:


NekitGod1 сказал(а):

Java файлы разьве не нужно приводить в нормальный вид?


смотря что подразумевает нормальынй вид

G0p43R 01.03.2018 01:15

Цитата:


Dr.Lafa сказал(а):

Понадобилось мне зареверсить одно приложение и подумал, почему бы статью об этом не написать?

При реверсинге может возникнуть 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-файл требуются разные разрешения. Кажется, гугл что-то скрывает...

Декомпилируем.
О декомпиляции APK рассказывал @Vander здесь и здесь, так что вкратце, нам понадобится apktool для декомпиляции и dex2jar для вытаскивания кода (оба есть по умолчанию в Kali).
Декомпилируем:

Код:


Код:

sudo apktool -r -s d base.apk
В созданной нам понадобится classes.dex (вся логика программы). Получаем .JAR:

Код:


Код:

d2j-dex2jar -r -ts classes.dex
На выходе получаем classes-dex2jar.jar, который можно распоковать, я пользуюсь jd-gui для просмотра:

На этом всё
[doublepost=1506015657,1506015614][/doublepost]@WebWare Team спойлеры не отображаются, хелп


А если у нас приложение написано на react native ? Или тот же самый Котлин?

konstata3 04.03.2018 13:36

слишком сложные танцы с бубном при копировании apk.
Нельзя просто через ESпроводник => Библиотеки => APPs => Резервирование => /sdcard/backups/apps/название.apk ?
Так намного проще и root не нужен)

Dr.Lafa 04.03.2018 15:15

Цитата:


Nai сказал(а):

А если apk обфусцирован (допустим ProGuard'ом), то что получим на выходе?


Если честно, даже не задумывался об этом. Тут уже будет нужна деобфускация

Celestial 13.03.2018 05:22

Цитата:


Nai сказал(а):

А если apk обфусцирован (допустим ProGuard'ом), то что получим на выходе?


Все зависит от ваших целей. Если код обфусцирован, то иследовать безопасность приложения следует сначала методом фаззинга, а дальше изучать уже отдельные, уязвимые, библиотеки и функции. Их можно найти методом встроенного поиска в jd-gui используя преобретенные в процессе фаззинга данные. Это много эффективнее обычных чек-листов, даже от OWASP-a. Самый простой способ борьбы с захешированными строками, например, поступающими в исследуемые функции -- легкое изменение кода, игра с параметрами, применение дебагеров/отладчиков.

Vander 26.03.2018 23:30

Цитата:


Dr.Lafa сказал(а):

Понадобилось мне зареверсить одно приложение и подумал, почему бы статью об этом не написать?

При реверсинге может возникнуть 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-файл требуются разные разрешения. Кажется, гугл что-то скрывает...

Декомпилируем.
О декомпиляции APK рассказывал @Vander здесь и здесь, так что вкратце, нам понадобится apktool для декомпиляции и dex2jar для вытаскивания кода (оба есть по умолчанию в Kali).
Декомпилируем:

Код:


Код:

sudo apktool -r -s d base.apk
В созданной нам понадобится classes.dex (вся логика программы). Получаем .JAR:

Код:


Код:

d2j-dex2jar -r -ts classes.dex
На выходе получаем classes-dex2jar.jar, который можно распоковать, я пользуюсь jd-gui для просмотра:

На этом всё
[doublepost=1506015657,1506015614][/doublepost]@WebWare Team спойлеры не отображаются, хелп


И что этим jar файлом можно сделать?

Dr.Lafa 27.03.2018 00:06

Цитата:


elalderson сказал(а):

И что этим jar файлом можно сделать?


анализировать, изменять, собирать в apk (но это уже совсем другая история)

r4z0r5 19.04.2018 13:22

Цитата:


p0ttym4n сказал(а):

"Сложный случай" можно упростить до "очень легкого"
Практически все АПКшки, которые находятся в гугл плее, есть на apk-dl.com (и на некоторых других, ссылки в источнике), и скачать их совсем не составляет труда
Просто заходим и вбиваем в поисковую строку или находим в плее нужное приложение и в адрессной строке меняем "play.google.com" на "apk-dl.com"
И никаких танцев с бубном

Источник, из которого были взяты ссылки: Разбираем империю Google: Android без Google Play, YouTube и прочих сервисов - «Хакер»

Всё проще.

https://apps.evozi.com/apk-downloader/

__Mr_JEY__ 22.08.2018 19:20

блин этот способ получения root-прав я ещё не знал перепробовал кучу утилит и ни одна не предоставила мне root нужно ещё это попробовать

c0mb0 08.10.2018 16:55

изи вариант, гуглим: 'apkpure название приложения или пакета.apk '
- скачиваем
- идем сюда h_t_t_p javadecompilers.com/apk
- profit

Mezantrop 08.10.2018 19:00

Неважно обфусцирован или нет файл, но после декомпиляции вам прийдется попотеть, чтоб привести его в рабочее состояние, т.к. после процедуры декомпиляции обычно будет нарушен код. Если только это не простейший Привет мир).

sosiskapi 21.11.2018 02:18

хз откуда апк качать безопастно. Качаю одинаковой версии приложуху с apkmirror и apkpure. С последнего файл тяжелее.

i3wm 21.11.2018 06:38

эххх мне бы с раскрасок и палз детских рекламу убрать

c0mb0 22.11.2018 03:15

Цитата:


i3wm сказал(а):

эххх мне бы с раскрасок и палз детских рекламу убрать

internet permission удали, если приложуха могет в офлайн, или в папке /res/layout найди файл xml с тегом и поставь android:visibility="gone" или в /res/strings.xml заменить
ca-app-pub-.........
на @null
Инструмент apkstudio-d49d3de-windows.exe

i3wm 23.11.2018 10:52

Цитата:


c0mb0 сказал(а):

internet permission удали, если приложуха могет в офлайн, или в папке /res/layout найди файл xml с тегом и поставь android:visibility="gone" или в /res/strings.xml заменить
ca-app-pub-.........
на @null
Инструмент apkstudio-d49d3de-windows.exe


спасибо попробуем


Время: 13:59