как разобрать приложение apk

Декомпиляция и Компиляция APK приложения Android (Видео)

Для того чтобы редактировать APK приложения. Прежде всего их нужно декомпилировать, а после скомпилировать! Как это сделать и чем можно узнать в этом уроке.

В прошлом уроке вы узнали из чего состоят основные внутренности приложения, а также что данные что APK приложения (в дальнейшем просто APK) можно открыть архиватором, но что либо изменить у вас не получиться! Нужна Декомпиляция APK приложения Android!

Содержание:

Декомпиляция и Компиляция APK приложения Android
Необходимые компоненты

Настройка Java

Скопируйте путь Java JDK:как разобрать приложение apk. 1. как разобрать приложение apk фото. как разобрать приложение apk-1. картинка как разобрать приложение apk. картинка 1.

Перейдите в меню Дополнительные настройки:

Java JDK настроена!

Настройка ApkTool

Если появилось наподобие такой вывод информации, то все сделано правильно.

Декомпиляция APK

Чтобы декомпилировать приложение, скопируйте файл APK приложения в папку где находится apktool, далее необходимо выполнить вот что, в командной строке ввести команду:

apktool d название.apk

apktool d browser.apk

как разобрать приложение apk. 2016 03 18 21 23 55 Administrator C WINDOWS system32 cmd.exe apktool d browser. как разобрать приложение apk фото. как разобрать приложение apk-2016 03 18 21 23 55 Administrator C WINDOWS system32 cmd.exe apktool d browser. картинка как разобрать приложение apk. картинка 2016 03 18 21 23 55 Administrator C WINDOWS system32 cmd.exe apktool d browser.Декомпиляция APK завершена.

После того как вы отредактируете или русифицируете APK, его надо компилировать обратно.

Компиляция APK

Вводим в командной строке:

apktool b имя_проекта как разобрать приложение apk. 2016 03 18 21 27 43 Administrator C WINDOWS system32 cmd. как разобрать приложение apk фото. как разобрать приложение apk-2016 03 18 21 27 43 Administrator C WINDOWS system32 cmd. картинка как разобрать приложение apk. картинка 2016 03 18 21 27 43 Administrator C WINDOWS system32 cmd.

После чего перейдите в папку проекта ( в данном случае папка browser) и вы увидете две новые папки:

В папке dist будет находится готовое приложение:как разобрать приложение apk. 2016 03 18 21 30 13 dist. как разобрать приложение apk фото. как разобрать приложение apk-2016 03 18 21 30 13 dist. картинка как разобрать приложение apk. картинка 2016 03 18 21 30 13 dist.

Если папки dist не обнаружили, значит apktool не смог собрать редактируемый проект, причиной тому может быть то, что имения которые вы вносили(«поломали») не позволяют собрать приложение apk.

После компиляции приложения apk его необходимо подписать.

Подпись APK

как разобрать приложение apk. 8. как разобрать приложение apk фото. как разобрать приложение apk-8. картинка как разобрать приложение apk. картинка 8.

Готовое подписанное приложение будет носить название apk_signed.apk

Работа с системными APK

Для того чтобы скормить Apktool данный файл необходимо, ввести команду:

Также для того чтобы можно было модифицировать системные файлы прошивка должна быть вначале Deodex-ирована.

Теперь как это можно все упросить! (не использовать командную строку)

Скачайте приложение SmartApkTool, данное программа имеет графический интерфейс и очень легкая в использование. Автор данной программы мой хороший друг Никита Коровкин (на данный момент работает в Surfingbird)! за что ему огромное Спасибо!

Как пользоваться SmartApkTool

Прежде всего вам надо установить и настроить Java JDK и Apktool как указано выше.

Откройте программу SmartApkTool

Если Вам необходимо Декомпилировать приложение в SmartApkTool, то выберите данный пункт и необходимое приложение

как разобрать приложение apk. NoName1. как разобрать приложение apk фото. как разобрать приложение apk-NoName1. картинка как разобрать приложение apk. картинка NoName1.

Если компилировать, то

как разобрать приложение apk. NoName2. как разобрать приложение apk фото. как разобрать приложение apk-NoName2. картинка как разобрать приложение apk. картинка NoName2.

и выбрать файл в проекте apktool.yml

как разобрать приложение apk. NoName1.11. как разобрать приложение apk фото. как разобрать приложение apk-NoName1.11. картинка как разобрать приложение apk. картинка NoName1.11.

Для подписи приложения APK, нажать обзор, выбрать приложение и подписать

как разобрать приложение apk. NoName4. как разобрать приложение apk фото. как разобрать приложение apk-NoName4. картинка как разобрать приложение apk. картинка NoName4.

Все так легко и просто!

Альтернативный вариант

Для тех кому не понравился SmartApkTool, есть альтернатива Android MultiTool

Источник

Как разобрать приложение apk

Последнее обновление программы в шапке: 23.12.2020

как разобрать приложение apk. 13238077. как разобрать приложение apk фото. как разобрать приложение apk-13238077. картинка как разобрать приложение apk. картинка 13238077.

Краткое описание:
Утилита для правильной перекомпиляции APK-файлов.

Описание:
Представляю вниманию коллег свою утилиту для работы с файлами APK. Несмотря на свой скромный интерфейс, утилита превосходит большинство аналогичных приложений по качеству работы и удобству использования, поскольку она разрабатывается в тесном сотрудничестве с профессионалами по модификации Android-приложений, а также с головой и руками.

Прогресс разработки apktool можно отслеживать здесь
Предыдущие версии apktool находятся здесь

как разобрать приложение apk. 13238078. как разобрать приложение apk фото. как разобрать приложение apk-13238078. картинка как разобрать приложение apk. картинка 13238078.

как разобрать приложение apk. 13240486. как разобрать приложение apk фото. как разобрать приложение apk-13240486. картинка как разобрать приложение apk. картинка 13240486.

как разобрать приложение apk. 13238076. как разобрать приложение apk фото. как разобрать приложение apk-13238076. картинка как разобрать приложение apk. картинка 13238076.

как разобрать приложение apk. 13238075. как разобрать приложение apk фото. как разобрать приложение apk-13238075. картинка как разобрать приложение apk. картинка 13238075.

как разобрать приложение apk. 13238080. как разобрать приложение apk фото. как разобрать приложение apk-13238080. картинка как разобрать приложение apk. картинка 13238080.

как разобрать приложение apk. 13238079. как разобрать приложение apk фото. как разобрать приложение apk-13238079. картинка как разобрать приложение apk. картинка 13238079.

v3.7.9 DONATE
— Обновлен apktool (2.5.1_20201211), smali (2.4.0_20200330), jadx (1.2.0-b1456), Python (3.7.9), Java (11.0.9).
— Добавлена деодексация Android 10.
— Обновлен плагин BuildApkTool 1.1: добавлена компиляция smali и baksmali.
— Обновлен плагин UnpackerFirmware 1.7.0 RC: добавлена поддержка «Super partitions image».
— Обновлен плагин UnicodeEscape2UTF8 v1.0.4.
— В настройки добавлена опция выбора версии AAPT (AAPT1, AAPT2 или AUTO).
— В расширенные настройки добавлена опция «Добавлять порядковый номер к имени выходного файла, вместо перезаписи»
— Удалён декомпилятор luyten, для просмотра java-кода рекомендую плагин BytecodeViewer.
— Различные исправления и доработки.

v3.7.8 DONATE
— Обновлен apktool (2.4.1), smali (2.3.4), jadx (1.0.0-b1166), luyten 0.5.4 (procyon 0.5.36), dex2jar (2.1_20190905), Java (11.0.5), Python (3.7.5).
— Добавлен плагин BuildApkTool 1.0: скачивание и компиляция последних версий ApkTool из исходников.
— Обновлен плагин remove_classes_dex 1.5.1: добавлено логирование выполняемых операций.
— Во всех операциях с JAR-файлами теперь применяется выравнивание. Может помочь, если после деодексации или редактирования JAR-файлов прошивка не стартует.
— При использовании проектов не работает деодексация Android 9. Исправлено!
— Добавлен венгерский язык от gidano. Спасибо!

v3.7.7 DONATE
— Обновлен apktool (2.4.1_0303), smali (2.2.6), jadx (0.9.0-b656), vdexExtractor (0.5.3_1108), luyten 0.5.4 (procyon 0.5.33), Python (3.7.2), Java (8u201).
— Обновлен плагин ColorPicker 1.1: добавлена регулировка прозрачности интерфейса.
— Исправлены некоторые ошибки.

v3.7.4
— Обновлен apktool (2.4.1), smali (2.3.4), jadx (1.0.0-b1166), luyten 0.5.4 (procyon 0.5.36), dex2jar (2.1_20190905), Java (11.0.5), Python (3.7.5).
— Во всех операциях с JAR-файлами теперь применяется выравнивание. Может помочь, если после деодексации или редактирования JAR-файлов прошивка не стартует.
— Транслятор байт-кода Dalvik в байт-код JVM enjarify заменен на dex2jar.
— Исправлены некоторые ошибки.

v3.7.3
— Обновлен apktool (2.4.1_0303), smali (2.2.6), jadx (0.9.0-b656), vdexExtractor (0.5.3_1108), luyten 0.5.4 (procyon 0.5.33), Python (3.7.2), Java (8u201).
— Обновлён турецкий язык от Hakan Güven.
— Добавлен литовский язык от Shimas5.
— Исправлено несколько ошибок.

v3.7.2
— Обновлен apktool (2.4.0_0918), smali (2.2.5), oat2dex (0.90_0918), vdexExtractor (0.5.2), jadx (0.8.0 build 547), плагин UnpackerFirmware (1.6.0), luyten 0.5.3 (procyon 0.5.33), Java (8u181), Python (3.6.6), adb, zipalign.
— В расширенные настройки добавлена опция выбора утилиты для деодексации Android 8.x и выше (baksmali или vdexExtractor).
— Множество улучшений алгоритмов деодексации.
— Добавлен плагин remove_classes_dex от Andycar для удаления classes.dex из APK/JAR-файлов.
— Добавлен турецкий язык от Hakan Güven.
— Исправлены некоторые ошибки.

v3.7.1
— Обновлен apktool (2.3.4_0503), oat2dex (0.90_0420), jadx (0.7.2 build 429), UnpackerFirmware 1.4.4, Java (8u171).
— Ускорено отображение и сохранение логов Logcat (примерно в 3 раза).
— Добавлено сохранение лога от предыдущей перезагрузки (last).
— В расширенные настройки снова добавлена опция деодексации Android 6 и выше через oat2dex (быстрее, чем через baksmali, но возможны ошибки).
— Опция в расширенных настройках «Сохранять оригинальный AndroidManifest.xml» по умолчанию теперь имеет значение НЕТ.
— Исправлены некоторые ошибки.

v3.7.0
— Batch ApkTool теперь 64-х битный! Для 32-х битных Windows (и Windows XP) будет выкладываться отдельная версия.
— Обновлен apktool (2.3.3_0413), jadx (0.7.2 build 427), oat2dex (0.90), python (3.6.5), adb, zipalign.
— Добавлена деодексация Android 8.1 (при помощи утилиты vdexExtractor).
— Добавлен плагин UnpackerFirmware от unix3d для распаковки образов прошивок (взамен устаревшего SDATunpacker).
— Все пункты «ОТМЕНА» в меню Batch ApkTool теперь выбираются цифрой 0.

v3.6.9
— Обновлен apktool (2.3.2), smali (2.2.3), enjarify (0329), jadx (0.7.2 build 413), Java (8u161).
— В расширенные настройки добавлена опция включения экспериментальной поддержки aapt2 (только для apktool 2.3.2 и выше).
— Исправлены некоторые ошибки.

v3.6.8
— Обновлен apktool (2.3.1), smali (2.2.2), Java (8u151).
— Добавлено отображение времени, затраченного на декомпиляцию / рекомпиляцию.
— Исправлено определение версии Java 9.
— Из дистрибутива удалён apktool 1.5.2.

v3.6.7
— Обновлен apktool (2.2.5_0827), sdat2img (2017-28-08), Java (8u144).
— Добавлена проверка наличия необходимых для работы файлов.
— Исправлены мелкие ошибки.

v3.6.6
— Обновлен apktool (2.2.3), smali (2.2.1), luyten 0.5.3, sdat2img (2017-01-04), Java (8u131).
— Добавлена деодексация Android O.
— Удалена возможность деодексации Android 6 и выше через oat2dex.

v3.6.5
— Обновлен enjarify (0301).
— Для выбора файлов теперь используется стандартный диалог Windows.
— В расширенные настройки добавлены опции «Сохранять оригинальный AndroidManifest.xml», «Предупреждать о перезаписи папки при декомпиляции» и «Звуковые оповещения».
— Добавлен вывод сообщений в трей.
— Исправлено зависание вывода на экран логов logcat.

v3.6.4
— Обновлен apktool (2.2.2), smali (2.2_0108), enjarify (0122), luyten 0.5.0 (procyon 0.5.32), sdat2img (2016-11-23), Java (8u121).
— В дистрибутив добавлен плагин FindFramework.
— Исправлено извлечение из архивов sqsh файлов с одинаковыми именами, но в разном регистре, во время деодексации.

v3.6.3
— Обновлен apktool (2.2.2_1023), smali (2.2_1024).
— Добавлена поддержка API Level 25 (Android 7.1 Nougat Preview).
— Исправлена подпись некоторых APK-файлов.

v3.6.2
— Обновлен apktool (2.2.1), smali (2.2_1018), enjarify (0928), sdat2img (0924), Java (8u111).
— Добавлен альтернативный способ копирования файлов в папку /system (пункт [14->2], используется бинарник su).
— Добавлена возможность выборочной установки APK из папки _OUT_APK.
— Теперь для деодексации Android 6 и выше по умолчанию используется baksmali (включить oat2dex можно в расширенных настройках [00]).
— Добавлен счетчик файлов при деодексации через baksmali.
— Улучшения и исправления.

v3.6.1
— Обновлен apktool (2.2.1_0819), enjarify (0831), luyten 0.4.9 (procyon 0.5.32), плагин SDATunpacker (1.0.1).
— Оптимизирован алгоритм деодексации API level >= 23 через baksmali.
— Добавлена поддержка деодексации файлов odex*.sqsh.
— Существенно ускорен и улучшен алгоритм поиска симлинков (поддерживаются симлинки после распаковки образов программой Rom Helper).
— Добавлена опция включения/выключения удаления симлинков после деодексации (в расширенных настройках).

v3.6.0
— Обновлен apktool (2.2.0), luyten 0.4.8 (procyon 0.5.32), Java (8u101).
— Добавлена папка _system для деодексации прошивок.
— Добавлено автоматическое определение API Level, если в папке _system есть файл build.prop.
— Лог деодексации вынесен в отдельный файл log_deodex.txt
— Файлы симлинков теперь удаляются после деодексации (код симлинков для updater-script сохраняется в конце лога деодексации).
— Ускорена рекомпиляция в экспертном режиме при большом количестве изменений в декомпелированном файле.
— В дистрибутив добавлен плагин SDATunpacker.
— Удалены старые версии oat2dex.
— Различные улучшения и исправления.

v3.5.0
— Обновлен apktool (2.2.0_0621), smali (2.2_WIP_0529).
— Различные улучшения алгоритма деодексации.
— Добавлены расширенные настройки (пункт меню [00]) с возможностью выбора метода деодексации API level >= 23.
— Теперь плагины могут использовать для работы интерпретатор Python 3.
— Транслятор байт-кода Dalvik в байт-код JVM dex2jar заменен на enjarify.

v3.4.5
— Обновлен apktool (2.1.1), smali (2.1.2_0424), oat2dex (0.87_0426), luyten 0.4.7 (procyon 0.5.32), Java (8u91).
— Изменен метод деодексации Android 6.0.
— В дистрибутив добавлен плагин CopyBack.

v3.4.4
— Обновлен apktool (2.1.0), oat2dex (0.86_0316), Java (8u77).
— Добавлена деодексация Android N.
— Ошибка деодексации boot.oat теперь не прерывает процесс деодексации.

v3.4.2
— Обновлен apktool (2.1.0_0106), oat2dex (0.86_0107), smali (2.1.1), luyten 0.4.6 (procyon 0.5.32).
— Ускорена деодексация файлов Android 6.0.
— Исправлена деодексация файлов с несколькими classes.dex (Android 6.0).
— Добавлено копирование файлов из _OUT_APK в /system/framework.
— Добавлен украинский язык (спасибо Volodiimr).

v3.4.1
— Обновлен apktool (2.0.3_1024), smali (2.1.0_1018), oat2dex (0.85_1013), jadx (0.6.1 build 221), Java (8u65).

v3.4.0
— Добавлена деодексация Android 6.0
— Обновлен apktool (2.0.2_0930_), smali (2.1.0_1002), oat2dex (0.83_0930), jadx (0.6.1 build 220).

v3.3.4
— Обновлен apktool (2.0.2_0912_fix), jadx (0.6.1 build 218).

v3.3.3
— Обновлен apktool (2.0.2_0821), smali (2.0.7_0906), oat2dex (0.83_0909), luyten 0.4.4 (procyon 0.5.30), jadx (0.6.1 build 215), Java (8u60).
— Обновлены бинарники adb.
— Исправлено чтение скрытых символьных ссылок.

v3.3.0
— Добавлены испанский, китайский, немецкий, турецкий и французский языки.
— Изменена логика деодексации файлов: теперь файлы деодексируются непосредственно в папках _app, _priv-app и _framework.
— Улучшены алгоритмы деодексации: теперь деодексируются файлы всех архитектур за один проход.
— В лог деодексации добавлен вывод символьных ссылок (для updater-script).
— Исправлена деодексация файлов с несколькими classes.dex.
— Обновлен apktool (2.0.1_0629), smali (2.0.7_0619), jadx (0.6.1 build 203), oat2dex (0.83).

v3.2.1
— Добавлен беларуский язык
— Логи теперь сохраняются в UTF-8 с BOM
— Увеличен размер Java heap для oat2dex.jar

v3.2.0
— Добавлена поддержка файлов локализаций. В дистрибутив добавлен русский и английский языки.
— Добавлена начальная поддержка плагинов. Функции замены ресурсов без перекомпиляции и преобразования unicode-последовательностей в UTF-8 перенесены в плагины.
— Добавлен плагин настройки цвета основных элементов интерфейса.
— Декомпилятор исходного Java-кода jd-gui заменен на luyten 0.4.4 (procyon 0.5.28).
— Добавлен вывод цветного форматированного текста в logcat. Логи теперь сохраняются в реальном времени во время просмотра.
— Исправлено игнорирование изменений в папке libs.
— Обновлен apktool (2.0.1_0524), smali (2.0.6_0523), jadx (0.6.1 build 198), oat2dex (0.81).
— Различные улучшения и исправления.

v3.0.1
— Добавлен счетчик обрабатываемых файлов.
— Фреймы теперь устанавливаются из папки _framework и всех ее подпапок.
— Обновлен apktool (2.0.0), smali (2.0.5_0410), jadx (0.6.0), jd-gui (1.0.0-RC4), dex2jar (2.0).
— Обновлена Java 8u45 (в standalone-версии BAT).

v3.0
— Улучшен алгоритм работы экспертного режима.
— Добавлена деодексация приложений архитектуры x86 (Android 5.0).
— Добавлено сохранение таблицы inline-методов прошивки (пункт 18->8) (см. readme п. 3.10).
— Увеличена скорость декомпиляции.
— Обновлен apktool (2.0.0-RC4_0322), smali (2.0.5_0321), jadx (0.5.5 build 181), signapk.

v2.9.9
— Исправлена функция рекомпиляции, если в папке C:\Windows присутствует файл aapt.exe
— Обновлен jadx (0.5.5 build 171).

v2.9.8
— Улучшено определение Java
— apktool 2.x теперь использует внешний aapt.
— Обновлен apktool (2.0.0 RC4), jadx (0.5.5 build 166).

v2.9.7
— Добавлен экспертный режим для сборки APK (см readme п. 5.5).
— Добавлено логирование ошибок для пункта [6 Zipalign files].
— Доработана функция декомпиляции приложений на системах, где некорректно задана системная переменная PATH
— Обновлен jadx (0.5.5 build 165).

v2.9.6
— Пункты 04-07 теперь декомпелируют все dex-файлы, а не только classes.dex.
— Обновлен apktool (2.0.0 rc3 от 21.01.2015), smali (2.0.5), jadx (0.5.5 build 164).
— Обновлена Java 8u31 (в standalone-версии BAT).

v2.9.5
— Исправлено игнорирование изменений, внесенных в папки assets и lib при использовании apktool 1.x (дефект появился в BAT289)
— Возвращена совместимость с beta-версиями apktool 2.x

v2.9.4
— Добавлена деодексация файлов *.odex.xz в папке _framework
— Оптимизация кода

v2.9.3
— Добавлена деодексация файлов *.odex.xz (Android 5.0)
— Обновлен jadx (0.5.5 build 163).

v2.9.2
— Добавлена возможность деодексации приложений Android 5.0
— Исправлена некорректная декомпиляция приложений, если в именах файлов их smali-кода содержались недопустимые символы
— Обновлен jadx (0.5.5 build 162).

v2.9.1
— Доработана функция деодексации.
— Обновлен apktool (2.0.0 rc3 от 30.12.2014),smali (2.0.3 от 29.12.2014), jadx (0.5.5 build 157).
— Обновлен aapt.exe для apktool 1.5.2

v2.9
— В логи добавлена информация о версиях используемых компонентов.
— Фреймы при использовании apktool_2.x теперь устанавливаются в папку утилиты.
— Обновлен apktool (2.0.0 rc3 от 26.12.2014), jadx (0.5.5 build 155).

v2.8.9
— Исправлено сохранение версии приложения и версии SDK, измененных через apktool.yml.
— Обновлен apktool (2.0.0 rc2 от 02.11.2014), smali (2.0.3 от 06.11.2014), jd-gui (0.3.7 RC1), jadx (0.5.5 build 142).

v2.8.8
— Возвращено создание резервной копии в папке _backup.
— Standalone-версия Batch ApkTool теперь использует Java 8.
— Обновлен apktool (2.0.0 rc2 от 20.10.2014), jadx (0.5.3 build 131).
— Улучшения и исправления.

v2.8.7
— При копировании файлов в системные папки им теперь выставляются права 644
— Обновлен алгоритм сборки APK через apktool 2.x
— Логи теперь откываются в редакторе, ассоциированном в системе с файлами txt
— Обновлен apktool (2.0.0 rc2 от 05.10.2014), jadx (0.5.3 build 126).

v2.8.6
— Добавлено определение версии Java при запуске утилиты
— Обновлен aapt.exe для apktool 1.5.2
— Обновлен apktool (2.0.0 rc1 от 24.09.2014), jadx (0.5.3 build 126).

v2.8.5
— Немного увеличена скорость деодексации и рекомпиляции (примерно на 10-20%)
— Добавлена опция [87 Don’t write out debug info]
— Добавлена возможность выбора ключа для подписи APK, ZIP, и JAR файлов
— Обновлен apktool (2.0.0 rc1 от 27.08.2014), smali (2.0.3 от 28.08.2014), jadx (0.5.3 build 120).

v2.8.4
— Добавлена поддержка apk, содержащих несколько dex-файлов
— Обновлен apktool (2.0.0 rc1 от 16.08.2014), jadx (0.5.2).

v2.8.3
— Исправлена ситуация у некоторых пользователей, когда после декомпиляции папка разобранного приложения оказывалась пустой
— Обновлен jadx (0.5.2 build 102).

v2.8.2
— Добавлены операции пакетной установки приложений (в т.ч. на SD-карту) и копирования файлов в устройство
— Запрещен запуск нескольких копий утилиты
— Изменен метод вывода цветного текста (для переводчиков утилиты на русский и другие языки)
— Обновлен jadx (0.5.2 build 96).

v2.7
— Добавлено конвертирование unicode escapes в UTF-8 (smali).
— Добавлены цвета)
— Оптимизирован алгоритм детекта внесенных изменений, увеличена скорость рекомпиляции (до 2-х раз)
— Добавлены smali-baksmali версии 1.4.2.
— Обновлены бинарники aapt, adb и zipalign.
— Обновлен jadx (0.5.1 build 80).
— Исправлена некорректная дата в имени логов и скриншотов, если формат региональных стандартов отличен от русского.

v2.5
— Добавлена опция [86 Keep broken resources] для принудительной декомпиляции поврежденных ресурсов.
— Добавлена запись файлов а папку /system/priv-app.
— Теперь после каждой операции выводится предложение открыть лог.
— Обновлен apktool (2.0.0 rc1 от 25.05.2014), jadx (0.5.1 build 70).

v2.4.1
— Возвращен прежний алгоритм определения изменений в AndroidManifest.xml, без учета apktool.yml.
— Исправлено падение при работе с файлами, содержащими в имени скобки (), а также при вводе некоторых спецсимволов вместо номера пункта меню.
— Обновлен jadx (0.5.1 build 68).

v2.4
— Добавлена возможность выбрать для обработки один файл.
— Обновлен apktool (2.0.0 rc1), jadx (0.5.1 build 63).
— Исправлено сохранение изменений в apktool.yml.
— Мелкие улучшения.

v2.3
— Добавлена возможность подключения ADB по Wi-Fi.
— Исправлена запись видео командой [17].
— Обновлены бинарники adb и aapt.
— Мелкие улучшения.

v2.2
— Добавлен просмотр исходного Java кода APK, JAR и DEX файлов.
— Добавлена запись видео с экрана через ADB (требуется android 4.4 или выше).
— Изменена логика работы пунктов меню [11], [13], [14] и [15].
— Исправлена ошибка рекомпиляции c использованием apktool 1.x, появившаяся в v2.1.

v2.1
— Добавлена возможность создания и загрузки проектов.
— Пункты рекомпиляции и сборки результирующего APK объединены в один пункт.
— Опция подписи стала глобальной и теперь применяется ко всем выходным APK.
— Опция подписи включена по умолчанию
— Код smali при разборе через smali теперь соответствует коду smali при разборе через apktool.
— Исполняемые файлы программы перенесены в папку bin

Скачать:
Batch ApkTool 3.7.5 для 64-х битных Windows:
BatchApkTool375.7z ( 142 МБ )
Batch ApkTool 3.7.5 для 32-х битных Windows (Windows XP не поддерживается):
как разобрать приложение apk. . как разобрать приложение apk фото. как разобрать приложение apk-. картинка как разобрать приложение apk. картинка .BatchApkTool375_32bit.7z ( 85.3 МБ )

Источник

Декомпиляция и отладка Android-приложений

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

как разобрать приложение apk. d95de6893e0924898b24de747ec93d05. как разобрать приложение apk фото. как разобрать приложение apk-d95de6893e0924898b24de747ec93d05. картинка как разобрать приложение apk. картинка d95de6893e0924898b24de747ec93d05.

В статье будет рассказано о том, как подключить отладчик к Android-приложению и пошагово пройти через вызываемые методы, используя информацию, полученную после декомпиляции приложения. Хорошая новость в том, что для отладки не требуются привилегии суперпользователя. Описанные техники могут быть очень кстати во время пентестов мобильных приложений, поскольку мы можем «проникнуть» в код во время работы программы, получить и записать информацию, к которой обычно у нас нет доступа. Например, можно перехватить трафик перед шифрованием и на лету получить ключи, пароли и любую другую ценную информацию. Статья будет полезна пентестерам и разработчикам мобильных приложений, желающих получить более глубокие знания о возможных атаках на платформе Android.

Требования к тестовой среде:

В статье будет использоваться следующая конфигурация: Windows 8, Android Studio и IntelliJ IDEA. Устройство: Nexus 4 с Android версии 4.4.4. Рекомендую все утилиты добавить в переменную окружения PATH, чтобы облегчить и ускорить доступ к этим инструментам.

Android application package (APK), используемый в статье, можно скачать отсюда: com.netspi.egruber.test.apk.

Инструкция ниже поможет вам подготовить устройство для экспериментов.

Активация раздела Developer Options

Для начала на Android-устройстве должна быть разрешена отладка через USB (опция USB debugging), что позволит «общаться» с девайсом при помощи инструментов из набора Android SDK. Однако перед этим необходимо активировать раздел Developer options. На устройстве зайдите в раздел Settings > About Phone и кликните несколько раз на пункт Build Number, после чего должно появиться сообщение о том, что раздел Developer options активирован.

как разобрать приложение apk. eric 1 1. как разобрать приложение apk фото. как разобрать приложение apk-eric 1 1. картинка как разобрать приложение apk. картинка eric 1 1.

как разобрать приложение apk. eric 1 2. как разобрать приложение apk фото. как разобрать приложение apk-eric 1 2. картинка как разобрать приложение apk. картинка eric 1 2.

Рисунок 1: Для того чтобы активировать раздел Developer options, необходимо несколько раз кликнуть на Build number

Разрешение отладки через USB

Чтобы разрешить отладку через USB-порт, зайдите в раздел Settings > Developer options и отметьте флажок напротив USB debugging.

как разобрать приложение apk. eric 2. как разобрать приложение apk фото. как разобрать приложение apk-eric 2. картинка как разобрать приложение apk. картинка eric 2.

Рисунок 2: Включение опции USB debugging

Подключение устройства и запуск ADB

После подключение устройства к компьютеру через USB-порт, должно появиться сообщение «USB debugging connected on the device». Также следует проверить, можно ли подключиться к устройству при помощи приложения Android Debug Bridge (ADB), входящего в состав Android SDK (пакет Android SDK Platform-tools). В командной строке введите следующую команду:

Устройство должно отобразиться в списке.

как разобрать приложение apk. eric 3. как разобрать приложение apk фото. как разобрать приложение apk-eric 3. картинка как разобрать приложение apk. картинка eric 3.

Рисунок 3: Список подключенных устройств

Если устройство не отобразилось в списке, то наиболее вероятная причина в некорректно установленных драйверах (в Windows). В зависимости от устройства драйвер можно найти либо в Android SDK, либо на сайте производителя.

Проверка приложения на возможность отладки

Перед отладкой Android-приложений вначале необходимо проверить, есть ли такая возможность. Проверку можно выполнить несколькими способами.

Первый способ – запустить Android Device Monitor, входящий в состав Android SDK (в папке tools). В Windows файл называется monitor.bat. При открытии Android Device Monitor устройство отобразится в разделе Devices.

как разобрать приложение apk. eric 4. как разобрать приложение apk фото. как разобрать приложение apk-eric 4. картинка как разобрать приложение apk. картинка eric 4.

Рисунок 4: Приложение Android Device Monitor

Если какое-либо приложение на устройстве можно отлаживать, это приложение также отобразится в списке. Я создал тестовую программу, но список пуст, поскольку программу отлаживать нельзя.

Второй способ проверить приложение на возможность отладки – исследовать файл AndroidManifest.xml из пакета приложения (APK, Android application package). APK представляет собой zip-архив, содержащий всю информацию, необходимую для запуска приложения на Android-устройстве.

Всякий раз, когда приложения загружается из Google Play Store, также загружается и пакет приложения. Все загруженные APK-файлы обычно хранятся на устройстве в папке /data/app. Если у вас нет прав суперпользователя, вы не сможете получить список файлов из директории /data/app. Хотя, если вы знаете имя APK-файла, можете скопировать его при помощи утилиты adb. Чтобы узнать имя APK-файла, введите следующую команду:

Появится командная строка устройства. Затем введите следующую команду:

Отобразится список всех пакетов на устройстве.

как разобрать приложение apk. eric 5. как разобрать приложение apk фото. как разобрать приложение apk-eric 5. картинка как разобрать приложение apk. картинка eric 5.

Рисунок 5: Перечень пакетов на устройстве

Глядя на список, находим тестовое приложение.

как разобрать приложение apk. eric 6. как разобрать приложение apk фото. как разобрать приложение apk-eric 6. картинка как разобрать приложение apk. картинка eric 6.

Рисунок 6: Пакет созданного тестового приложения (выделено белым)

Теперь необходимо скопировать файл пакета. Открываем шелл и вводим следующую команду:

adb pull /data/app/[.apk file] [location]

как разобрать приложение apk. eric 7. как разобрать приложение apk фото. как разобрать приложение apk-eric 7. картинка как разобрать приложение apk. картинка eric 7.

Рисунок 7: Копируем APK-файл с устройства в систему

Теперь нужно открыть файл пакета и исследовать содержимое AndroidManifest.xml. К сожалению, мы не можем просто так распаковать архив, поскольку APK-файл закодирован в бинарном формате. Для раскодировки чаще всего используется утилита apktool, хотя я использую APK Studio, поскольку у этого приложения дружелюбный графический интерфейс. Далее в статье будет рассказываться об APK Studio.

В APK Studio кликните на маленькую зеленую иконку, задайте имя проекту и укажите путь к APK файлу. Затем укажите пусть для сохранения проекта.

как разобрать приложение apk. eric 8. как разобрать приложение apk фото. как разобрать приложение apk-eric 8. картинка как разобрать приложение apk. картинка eric 8.

Рисунок 8: Создание нового проекта в APK Studio

После открытия APK выберите файл AndroidManifest.xml и посмотрите параметры тега application. Если флаг android:debuggable отсутствует (или присутствует, но установлено значение false), значит, приложение отлаживать нельзя.

как разобрать приложение apk. eric 9. как разобрать приложение apk фото. как разобрать приложение apk-eric 9. картинка как разобрать приложение apk. картинка eric 9.

Рисунок 9: Содержимое файла AndroidManifest.xml

Модификация файла AndroidManifest.xml

При помощи утилиты apktool или APK Studio мы можем модифицировать файлы и упаковывать содержимое обратно в пакет. Сейчас мы изменим файл AndroidManifest.xml так, чтобы приложение можно было отлаживать. Добавляем внутрь тега application строчку android:debuggable=»true».

как разобрать приложение apk. eric 10. как разобрать приложение apk фото. как разобрать приложение apk-eric 10. картинка как разобрать приложение apk. картинка eric 10.

Рисунок 10: Изменяем содержимое тега application

После добавления флага кликаем на иконку «молоток» и заново собираем пакет. Пересобранный пакет будет находиться в директории build/apk.

как разобрать приложение apk. eric 11. как разобрать приложение apk фото. как разобрать приложение apk-eric 11. картинка как разобрать приложение apk. картинка eric 11.

Рисунок 11: Повторная сборка пакета завершилась успешно

После пересборки пакет подписывается и его можно заново установить на устройстве (все Android-приложения должны быть подписаны). Большинство приложений не проверяет сертификат, при помощи которого происходит подпись. В противном случае необходимо изменить код, выполняющий эту проверку.

Теперь нужно установить пересобранный пакет. Вначале удаляем старое приложение при помощи следующей команды:

adb pm uninstall[package name]

Затем устанавливаем новый пакет:

adb install [.apk file]

Также можно удалить и установить пакет одной командой:

как разобрать приложение apk. eric 12. как разобрать приложение apk фото. как разобрать приложение apk-eric 12. картинка как разобрать приложение apk. картинка eric 12.

Рисунок 12: Установка пересобранного пакета

Проверьте, чтобы переустановленное приложение корректно запускалось на устройстве. Если все работает, переходим обратно в Android Device Monitor, где должно появиться тестовое приложение.

как разобрать приложение apk. eric 13. как разобрать приложение apk фото. как разобрать приложение apk-eric 13. картинка как разобрать приложение apk. картинка eric 13.

Рисунок 13: Теперь пересобранное приложение можно отлаживать

Настройка среды разработки (IDE)

Теперь к пересобранному приложению можно подцепить отладчик, но вначале нужно создать проект в среде разработки (в статье используется IntelliJ IDEA). Создаем новый проект. В поле Application name указываем произвольное имя. В поле Package name указываем имя, в точности совпадающее с иерархией папок пересобранного пакета.

как разобрать приложение apk. eric 14. как разобрать приложение apk фото. как разобрать приложение apk-eric 14. картинка как разобрать приложение apk. картинка eric 14.

Рисунок 14: Создание нового проекта в IntelliJ IDEA

Обычно имя APK-файла совпадает со структурой папок, хотя, если вы не уверены, в APK Studio проверьте иерархию директорий до папки, где находятся файлы приложений. В моем случае имя и структура папок полностью совпадают (com.netspi.egruber.test).

как разобрать приложение apk. eric 15. как разобрать приложение apk фото. как разобрать приложение apk-eric 15. картинка как разобрать приложение apk. картинка eric 15.

Рисунок 15: Иерархия директорий тестового приложения

Снимите флажок «Create Hello World Activity» и завершите создание проекта (все остальные параметры остаются по умолчанию). Новый проект должен выглядеть примерно так:

как разобрать приложение apk. eric 16. как разобрать приложение apk фото. как разобрать приложение apk-eric 16. картинка как разобрать приложение apk. картинка eric 16.

Рисунок 16: Иерархия папок и файлов нового проекта

После создания проекта нужно добавить исходный код из APK-файла для того, чтобы отладчик «знал» имена символов, методов, переменных и т. д. Хорошая новость в том, что Android-приложения можно декомпилировать практически без потери качества (исходный код будет совпадать с оригиналом). После декомпиляции исходный текст импортируется в среду разработки (IDE).

Получение исходных текстов из пакета приложения

Для начала необходимо преобразовать APK в jar-файл. Затем мы при помощи java-декомпилятора получим исходный текст приложения. Преобразование в jar будем делать при помощи утилиты dex2jar. У dex2jar есть файл d2j-dex2jar.bat, используемый для конвертирования APK в jar. Синтаксис команды довольно прост:

d2j-dex2jar.bat [.apk file]

как разобрать приложение apk. eric 17. как разобрать приложение apk фото. как разобрать приложение apk-eric 17. картинка как разобрать приложение apk. картинка eric 17.

Рисунок 17: Преобразование APK в jar

Затем открываем или перетаскиваем полученный файл в JD-GUI (это java-декомпилятор).

как разобрать приложение apk. eric 18. как разобрать приложение apk фото. как разобрать приложение apk-eric 18. картинка как разобрать приложение apk. картинка eric 18.

Рисунок 18: Структура jar-файла

Jar-файл должен отобразиться в виде иерархической структуры, внутри которой находятся java-файлы с читабельным исходным кодом. Заходим в File > Save All Sources, чтобы упаковать все исходные тексты в zip-архив.

как разобрать приложение apk. eric 19. как разобрать приложение apk фото. как разобрать приложение apk-eric 19. картинка как разобрать приложение apk. картинка eric 19.

Рисунок 19: Сохранение исходных текстов декомпилированного файла

После сохранения исходных текстов распаковываем архив в отдельную директорию.

как разобрать приложение apk. eric 20. как разобрать приложение apk фото. как разобрать приложение apk-eric 20. картинка как разобрать приложение apk. картинка eric 20.

Рисунок 20: Распакованный архив

Теперь нужно импортировать обе директории в созданный ранее проект в IDE. В IntelliJ заходим в папку src и копируем туда содержимое распакованного архива (две директории).

как разобрать приложение apk. eric 21. как разобрать приложение apk фото. как разобрать приложение apk-eric 21. картинка как разобрать приложение apk. картинка eric 21.

Рисунок 21: Обе папки скопированы в директорию src

Возвращаясь в Intellij, видим обновленный проект.

как разобрать приложение apk. eric 22. как разобрать приложение apk фото. как разобрать приложение apk-eric 22. картинка как разобрать приложение apk. картинка eric 22.

Рисунок 22: В проекте появились исходные тексты

Если мы кликнем на какой-нибудь элемент из списка, то увидим исходный текст. Как видно на скриншоте ниже (исходный текст класса LoginActivity), исходный код обфусцирован при помощи ProGuard.

как разобрать приложение apk. eric 23. как разобрать приложение apk фото. как разобрать приложение apk-eric 23. картинка как разобрать приложение apk. картинка eric 23.

Рисунок 23: Обфусцированный исходный текст класса LoginActivity

Теперь, когда в проекте появились исходные тексты, мы можем начать устанавливать точки останова на методах и переменных. По достижению точек останова приложение будет останавливаться. В качестве примера я установил точку останова на методе (прямо в обфусцированном коде), отвечающим за обработку информации, введенной в текстовом поле.

как разобрать приложение apk. eric 24. как разобрать приложение apk фото. как разобрать приложение apk-eric 24. картинка как разобрать приложение apk. картинка eric 24.

Рисунок 24: Поставлена точка останова на обфусцированный метод

Как только появилась точка останова, подключаем отладчик к процессу на устройстве, кликнув на иконку с экраном в правом верхнем углу (на вашей IDE иконка может отличаться).

как разобрать приложение apk. eric 25. как разобрать приложение apk фото. как разобрать приложение apk-eric 25. картинка как разобрать приложение apk. картинка eric 25.

Рисунок 25: Подключаем отладчик к процессу

Далее вам будет предложено выбрать процесс, к которому нужно подключиться. Будут отображены только процессы с флагом android:debuggable=»true».

как разобрать приложение apk. eric 26. как разобрать приложение apk фото. как разобрать приложение apk-eric 26. картинка как разобрать приложение apk. картинка eric 26.

Рисунок 26: Перечень процессов для подключения отладчика

После выбора процесса отладчик подсоединится к устройству.

как разобрать приложение apk. eric 27. как разобрать приложение apk фото. как разобрать приложение apk-eric 27. картинка как разобрать приложение apk. картинка eric 27.

Рисунок 27: Отладчик подключен к процессу, запущенному на устройстве

В текстовое поле я буду вводить число 42 (если помните, на соответствующем методе стоит точка останова).

как разобрать приложение apk. eric 28. как разобрать приложение apk фото. как разобрать приложение apk-eric 28. картинка как разобрать приложение apk. картинка eric 28.

Рисунок 28: В текстовое поле вводим число 42

После нажатия на кнопку «Enter Code» выполнение приложения прервется на точке останова, поскольку отладчик «осведомлен», какой метод вызывается на устройстве. Скомпилированное Android-приложение содержит отладочную информацию (например, имена переменных), доступную любому отладчику, совместимому с Java Debug Wire Protocol (JDWP). Если в приложении разрешена отладка, отладчик, совместимый с JDWP (в эту категорию попадает большинство отладчиков идущих в составе сред разработки для Java), сможет подсоединиться к виртуальной машине Android-приложения, а затем считывать и выполнять отладочные команды.

как разобрать приложение apk. eric 29. как разобрать приложение apk фото. как разобрать приложение apk-eric 29. картинка как разобрать приложение apk. картинка eric 29.

Рисунок 29: Сработала точка останова

На скриншоте ниже видно число, которое ранее мы ввели в текстовом поле.

как разобрать приложение apk. eric 30. как разобрать приложение apk фото. как разобрать приложение apk-eric 30. картинка как разобрать приложение apk. картинка eric 30.

Рисунок 30: Перечень переменных текущего экземпляра класса

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *