Есть ли способ получить исходный код из файла APK? - PullRequest
1178 голосов
/ 29 августа 2010

Жесткий диск на моем ноутбуке просто сломался, и я потерял весь исходный код приложения, над которым я работал последние два месяца. Все, что у меня есть, это файл APK, который хранится в моем письме, когда я отправил его другу.

Есть ли способ извлечь мой исходный код из этого файла APK?

Ответы [ 21 ]

0 голосов
/ 08 апреля 2019

в зависимости от вашего состояния, если ваш Android APK:

Условие 1: НЕ затвердевать (от Tencent Legu / Qihoo 360 /...)

Выбор1: с использованием онлайн-сервиса

, таких как:

с использованием www.javadecompilers.com

Гото:

для автоматического декодирования из apk в исходный код java

шаги:

upload apk file + нажмите Run + подождите некоторое время + нажмите Download, чтобы получить zip + unzip ->

sources/com/{yourCompanyName}/{yourProjectName}

ваш ожидаемый исходный код Java

Choice2: декомпилировать / взломать самостоятельно

Используйте соответствующий инструмент для декомпиляции / взлома самостоятельно:

использовать jadx / jadx-gui конвертировать apk в java sourcecode

скачать jadx-0.9.0.zip , затем распаковать, чтобы получить bin/jadx, затем:

  • режим командной строки:
    • в работе терминала: jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
    • output_folder покажет декодированные sources и resources
      • sources/com/{yourCompanyName}/{yourProjectName} ваш ожидаемый java sourcecode
  • режим графического интерфейса
    • двойной щелчок для запуска jadx-0.9.0/bin/jadx-gui (Linux jadx-gui.sh / Windows jadx-gui.bat)
    • открыть apk файл
    • это будет автоматическое декодирование -> увидеть ожидаемый исходный код Java
    • save all или save as Gradle project

например:

Состояние 2: отвердение (от Tencent Legu / Qihoo 360 /...)

основной метод 3 steps:

  1. apk/app to dex
  2. dex to jar
  3. jar to java src

подробное объяснение:

Шаг 1: apk/app to dex

использовать инструмент (FDex2 / DumpDex) для выгрузки / извлечения (одного или нескольких) dex файла из запущенного приложения

шаги:

подготовить среду

выгрузить dex из запущенного приложения

  • запустите FDex2, затем щелкните свое имя apk, чтобы позже включить / захватить dex

  • (в телефоне / эмуляторе) запустить приложение
  • найти и скопировать весь ресурс apk в /data/data/com/yourCompanyName/yourProjectName
    • в своей корневой папке обычно найдет несколько dex файлов

Шаг 2: dex to jar

использовать инструмент (dex2jar) для преобразования (специфическая, содержащая логику приложения) dex файл в jar файл

скачать dex2jar получил dex-tools-2.1-SNAPSHOT.zip , распаковать получил dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh, затем

sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex

например:

dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar

Шаг 3: jar to java src

используйте один из инструментов:

конвертировать jar в java src

для преобразования из jar в java src:

Jadx> Procyon> CRF >> JD-GUI

поэтому рекомендуем использовать: Jadx / jadx-gui

шаги:

  • двойной щелчок для запуска jadx-gui
  • открыть dex файл
  • File -> save all

например:

экспортированный Java-источник:


Более подробное объяснение можно посмотреть в моей онлайн-книге Китайский учебник:

...