Декомпиляция .apk (Android)

Была задача глянуть кусок кода одной приложухи на GooglePlay, все оказалось просто.
 
Получить apk из GooglePlay, не устанавливая приложение, можно попытаться так:
1) Воспользоваться сервисом apk-dl.com, заменив в Url приложения на GooglePlay часть адреса “play.google” на “apk-dl”, чтобы получилось так:
https://apk-dl.com/store/apps/details?id=com.app.name
Но скачать не получилось, т.к. бесконечно смотреть на надпись “Download is in progress…” не захотелось.
2) Или тут (тоже не получилось, написало “Ops, APK Downloader got access denied when trying to download, Please try again and contact us.”)
3) Или тут (тут все гуд!)
 
Для декомпиляции будут использоваться следующие утилиты:

  • 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\Decompile

5) Получаем ресурсные файлы:

> 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.

0

2 thoughts on “Декомпиляция .apk (Android)

  1. Вводим команду d2j-dex2jar.bat App.apk и если все прошло хорошо, в той же папке появится файл App.apk.dex2jar.jar

    А если не прошло всё хорошо?брать бубен и возле компа плясать?

    0

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

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