- dex2jar – для преобразования .dex файлов в .class файлы (заархивированных в jar).
- Java Decompiler – для преобразования .class файлов в файлы исходного кода (.java, например). Я использовал JD-GUI.
- apktool – для получения ресурсов из apk (.xml файлов и других). Раньше, судя по всему, ей нужно было подсовывать jar файл, а сейчас можно сразу apk.
Для примера наш файл будет называться App.apk.
А вот и инструкция по декомпиляции (основа была когда-то взята отсюда):
1) Создаем каталог Decompile, в котором будем работать
2) Качаем все 3 утилиты и извлекаем в эту папку.
Также, как указано в инструкции к apktool:
- нужно создать скрипт-обертку apktool.bat (если используем Windows), которую и будем запускать; ее код там же у них на сайте
- нужно переименовать скачанный apktool_<version>.jar просто в apktool.jar (убрать версию)
3) Копируем наш App.apk туда же
4) Открываем cmd, устанавливаем текущей папку Decompile:
> cd path\to\Decompile5) Получаем ресурсные файлы:
> apktool d App.apkДолжна создаться папка с именем приложения (App), в которой находиться ресурсы и файлы AndroidManifest.xml, apktool.yml.
6) Получаем .class-файлы:
> d2j-dex2jar.bat App.apkДолжен появится файл App-dex2jar.jar. Могут возникнуть ошибки, но обычно это не критично.
7) Запускаем jd-gui и открываем полученный на предыдущем шаге .jar файл.
Выбираем пункт меню File -> Save All Sources
и сохраняем архив. В нем, по сути, будет начинка каталога src, как в проекте приложения. Файлы исходного кода будут раскиданы по пакетам (пространствам имен).
7) Создаем в App папку src. Т.е. должно получиться так: Decompile\App\src
Извлекаем в src полученный zip-архив с исходниками.
В результате в папке App будут исходники в двух форматах (java и smali), ресурсы и файлы AndroidManifest.xml, apktool.yml.
Вводим команду d2j-dex2jar.bat App.apk и если все прошло хорошо, в той же папке появится файл App.apk.dex2jar.jar
А если не прошло всё хорошо?брать бубен и возле компа плясать?
XD А если все плохо, то смотреть в чем проблема. Какая-то ошибка возникает?