• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья Декомпиляция android-приложений

Понадобилось мне зареверсить одно приложение и подумал, почему бы статью об этом не написать?
Installing-Apktool-for-Reverse-Engineering-Android-Apps.png

При реверсинге может возникнуть 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.
Screenshot_2017-09-21-18-52-24.png


Подключаем телефон к компьютеру, должно высветиться такое окно:
Screenshot_2017-09-21-18-53-17.png


Жмём окей. В терминале вводим:
Код:
sudo adb devices
Если есть ваш телефон, то всё ок.
upload_2017-9-21_19-53-38.png


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

Далее в терминале:
Код:
sudo adb shell
su
ls /data/app
upload_2017-9-21_19-58-42.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
upload_2017-9-21_20-29-36.png


Меня, кстати говоря, сильно удивило, что при установке приложения через гугл плей и установке через apk-файл требуются разные разрешения. Кажется, гугл что-то скрывает...
Screenshot_2017-09-21-19-18-16.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 для просмотра:
upload_2017-9-21_20-10-45.png

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

p0ttym4n

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

Источник, из которого были взяты ссылки:
 
L

LuckyJuck

В попугае есть apktool? Если нет, тот как загрузить?(
 
  • Нравится
Реакции: dmitrij_k85

NekitGod1

Green Team
06.11.2017
59
57
BIT
0
Понадобилось мне зареверсить одно приложение и подумал, почему бы статью об этом не написать?
Installing-Apktool-for-Reverse-Engineering-Android-Apps.png

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

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

Жмём окей. В терминале вводим:
Код:
sudo adb devices
Если есть ваш телефон, то всё ок.
Посмотреть вложение 11705

Достаём apk файл.
Я буду показывать на примере BlueBorne Vulnerability Scanner. Он есть только в гугл плей.
Установим приложение:
Посмотреть вложение 11703
Далее в терминале:
Код:
sudo adb shell
su
ls /data/app
Посмотреть вложение 11706
Нам покажет все установленные приложения и их расположение. Как видно, 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
Посмотреть вложение 11709

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

Декомпилируем.
О декомпиляции 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 для просмотра:
Посмотреть вложение 11708
На этом всё ;)
[doublepost=1506015657,1506015614][/doublepost]@WebWare Team спойлеры не отображаются, хелп
Java файлы разьве не нужно приводить в нормальный вид?
 

G0p43R

Green Team
27.02.2018
125
167
BIT
0
Понадобилось мне зареверсить одно приложение и подумал, почему бы статью об этом не написать?
Installing-Apktool-for-Reverse-Engineering-Android-Apps.png

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

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

Жмём окей. В терминале вводим:
Код:
sudo adb devices
Если есть ваш телефон, то всё ок.
Посмотреть вложение 11705

Достаём apk файл.
Я буду показывать на примере BlueBorne Vulnerability Scanner. Он есть только в гугл плей.
Установим приложение:
Посмотреть вложение 11703
Далее в терминале:
Код:
sudo adb shell
su
ls /data/app
Посмотреть вложение 11706
Нам покажет все установленные приложения и их расположение. Как видно, 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
Посмотреть вложение 11709

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

Декомпилируем.
О декомпиляции 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 для просмотра:
Посмотреть вложение 11708
На этом всё ;)
[doublepost=1506015657,1506015614][/doublepost]@WebWare Team спойлеры не отображаются, хелп
А если у нас приложение написано на react native ? Или тот же самый Котлин?
 
N

Nai

Приложение есть только в googleplay. Прийдётся выковыривать приложение из телефона.
Для этого случая понадобятся root права на андроид.
Не нашёл ничего сложного. Apk можно скачать через любой сервис онлайн скачивания или на устройстве копировать через Total Commander, например. Для этого root права не нужны.
Меня, кстати говоря, сильно удивило, что при установке приложения через гугл плей и установке через apk-файл требуются разные разрешения. Кажется, гугл что-то скрывает..
Меня не очень. Вероятно, версии приложения разные. Поэтому в AndroidManifest.xml разное количество разрешений.
На выходе получаем classes-dex2jar.jar, который можно распоковать, я пользуюсь jd-gui для просмотра:
А если apk обфусцирован (допустим ProGuard'ом), то что получим на выходе?
 
Последнее редактирование модератором:

konstata3

Green Team
24.02.2017
10
8
BIT
0
слишком сложные танцы с бубном при копировании apk.
Нельзя просто через ESпроводник => Библиотеки => APPs => Резервирование => /sdcard/backups/apps/название.apk ?
Так намного проще и root не нужен)
 
  • Нравится
Реакции: Dr.Lafa

Celestial

Green Team
20.12.2016
81
91
BIT
0
А если apk обфусцирован (допустим ProGuard'ом), то что получим на выходе?
Все зависит от ваших целей. Если код обфусцирован, то иследовать безопасность приложения следует сначала методом фаззинга, а дальше изучать уже отдельные, уязвимые, библиотеки и функции. Их можно найти методом встроенного поиска в jd-gui используя преобретенные в процессе фаззинга данные. Это много эффективнее обычных чек-листов, даже от OWASP-a. Самый простой способ борьбы с захешированными строками, например, поступающими в исследуемые функции -- легкое изменение кода, игра с параметрами, применение дебагеров/отладчиков.
 
E

elalderson

Понадобилось мне зареверсить одно приложение и подумал, почему бы статью об этом не написать?
Installing-Apktool-for-Reverse-Engineering-Android-Apps.png

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

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

Жмём окей. В терминале вводим:
Код:
sudo adb devices
Если есть ваш телефон, то всё ок.
Посмотреть вложение 11705

Достаём apk файл.
Я буду показывать на примере BlueBorne Vulnerability Scanner. Он есть только в гугл плей.
Установим приложение:
Посмотреть вложение 11703
Далее в терминале:
Код:
sudo adb shell
su
ls /data/app
Посмотреть вложение 11706
Нам покажет все установленные приложения и их расположение. Как видно, 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
Посмотреть вложение 11709

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

Декомпилируем.
О декомпиляции 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 для просмотра:
Посмотреть вложение 11708
На этом всё ;)
[doublepost=1506015657,1506015614][/doublepost]@WebWare Team спойлеры не отображаются, хелп
И что этим jar файлом можно сделать?
 

r4z0r5

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

Источник, из которого были взяты ссылки:

Всё проще.

 
  • Нравится
Реакции: sosiskapi

__Mr_JEY__

Green Team
22.08.2018
20
1
BIT
0
блин этот способ получения root-прав я ещё не знал перепробовал кучу утилит и ни одна не предоставила мне root нужно ещё это попробовать
 

c0mb0

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

Mezantrop

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

sosiskapi

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

i3wm

Green Team
31.10.2018
85
45
BIT
0
эххх мне бы с раскрасок и палз детских рекламу убрать :D
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!