декомпиляция DEX в исходный код Java - PullRequest
683 голосов
/ 09 августа 2009

Как можно декомпилировать файлы Android DEX (VM bytecode) в соответствующий исходный код Java?

Ответы [ 17 ]

6 голосов
/ 22 марта 2016

В последних версиях Debian есть пакет Python androguard:

Description-en: full Python tool to play with Android files
 Androguard is a full Python tool to play with Android files.
  * DEX, ODEX
  * APK
  * Android's binary xml
  * Android resources
  * Disassemble DEX/ODEX bytecodes
  * Decompiler for DEX/ODEX files

Установить соответствующие пакеты:

sudo apt-get install androguard python-networkx

Декомпилировать DEX-файл:

$ androdd -i classes.dex -o ./dir-for-output

Извлечение classes.dex из Apk + Декомпиляция:

$ androdd -i app.apk -o ./dir-for-output

Файл Apk - это не что иное, как архив Java (JAR), вы можете извлечь файлы из архива через:

$ unzip app.apk -d ./dir-for-output
5 голосов
/ 03 ноября 2016

Многое изменилось, так как большинство из этих ответов были опубликованы. В настоящее время существует множество простых инструментов с графическим интерфейсом, таких как:

APK Easy Tool for Windows (GUI tool, friendly)
Bytecode Viewer - APK/Java Reverse Engineering Suite
URET Android Reverser Toolkit

Лучшее место для их поиска - форум разработчиков XDA.

4 голосов
/ 03 апреля 2019

Поскольку ответ Dheeraj Bhaskar относительно старый, чем много лет назад.

Вот мой последний (2019 год) ответ:

Основная логика

от dex до java sourcecode, в настоящее время существует два вида решения:

  • One Step: прямое преобразование dex в java sourcecode
  • Two Step: первое преобразование dex в jar, второе преобразование jar в java sourcecode

Одношаговое решение: dex непосредственно к java sourcecode

Инструменты

Процесс

  1. загрузка jadx-0.9.0.zip , разархивируйте его, в папке bin можно увидеть командную строку jadx или версию GUI jadx-gui, дважды щелкните для запуска версии GUI: jadx-gui

  1. открыть dex файл

затем может показать исходный код Java:

  1. File -> save as gradle project

затем получил исходный код Java:


Двухшаговое решение

Шаг 1: dex до jar

Инструменты

Процесс

скачать dex2jar zip , распаковать полученный d2j-dex2jar.sh, затем:

  • apk до jar: sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk
  • dex до jar: sh d2j-dex2jar.sh -f ~/path/to/dex_to_decompile.dex

пример:

➜  v3.4.8 /Users/crifan/dev/dev_tool/android/reverse_engineering/dex-tools/dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.huili.readingclub8825612.dex
dex2jar com.huili.readingclub8825612.dex -> ./com.huili.readingclub8825612-dex2jar.jar
➜  v3.4.8 ll
-rw-------  1 crifan  staff   9.5M  3 21 10:00 com.huili.readingclub8825612-dex2jar.jar
-rw-------  1 crifan  staff   8.4M  3 19 14:04 com.huili.readingclub8825612.dex

Step2: jar до java sourcecode

Инструменты

* * Процесс тысяча сто семьдесят три

здесь демо Procyon конвертировать jar в java исходный код:

скачать procyon-decompiler-0.5.34.jar

затем используя синтаксис:

java -jar /path/to/procyon-decompiler-0.5.34.jar -jar your_to_decompile.jar -o outputFolderName

пример:

java -jar /Users/crifan/dev/dev_tool/android/reverse_engineering/Procyon/procyon-decompiler-0.5.34.jar -jar com.huili.readingclub8825612-dex2jar.jar -o com.huili.readingclub8825612

с использованием редактора VSCode для открытия экспортированного исходного кода, выглядит следующим образом:

Заключение

Правильность преобразования: Jadx> Procyon> CRF> JD-GUI

Рекомендовать использовать: (Одношаговое решение) Jadx


для более подробного объяснения, пожалуйста, обратитесь к моей онлайн китайской электронной книге: 安卓 应用 的 安全 和 破解

3 голосов
/ 21 августа 2015

Вы можете попробовать JADX (https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler),, это идеальный инструмент для декомпиляции DEX.

И да, он также доступен онлайн на (моем: 0) новом сайте: http://www.javadecompilers.com/apk/

2 голосов
/ 04 апреля 2017

Самый простой способ декомпилировать приложение для Android - это загрузить приложение с именем ShowJava из playstore. Просто выберите приложение, которое нужно декомпилировать, из списка приложений. Существует три разных декомпилятора, которые вы можете использовать для декомпиляции приложения, а именно -

CFR 0.110, JaDX 0.6.1 или FernFlower (аналитический декомпилятор).

2 голосов
/ 31 января 2016

Это можно сделать в следующие пять шагов:

Этот самоцвет делает эти вещи автоматически, даже при установке необходимых инструментов

  1. конвертировать файл apk в zip
  2. распаковать файл
  3. извлечь из него classes.dex
  4. использовать dex для jar, чтобы преобразовать classes.dex в файл jar
  5. используйте jadx gui, чтобы открыть файл jar как исходный код java
1 голос
/ 18 апреля 2015

Если вы не хотите загружать dex2jar, просто используйте apk_grabber скрипт Python , чтобы декомпилировать любой apk в jar-файлы. Затем вы читаете их с помощью jd-gui.

...