dex2jar README

The project's README from github.com/pxb1988/dex2jar. As one markdown file: README.md.

dex2jar

Project move to GitHub

_ Mirror Wiki Downloads Issues
gh https://github.com/pxb1988/dex2jar Wiki Releases Issues
sf https://sourceforge.net/p/dex2jar old old old
bb https://bitbucket.org/pxb1988/dex2jar old old old
gc https://code.google.com/p/dex2jar old old old

Tools to work with android .dex and java .class files

  1. dex-reader/writer: Read/write the Dalvik Executable (.dex) file. It has a light weight API similar with ASM.
  2. d2j-dex2jar: Convert .dex file to .class files (zipped as jar)
  3. smali/baksmali: disassemble dex to smali files and assemble dex from smali files. different implementation to smali/baksmali, same syntax, but we support escape in type desc "Lcom/dex2jar\t\u1234;"
  4. other tools: d2j-decrypt-string

Usage

  1. In the root directory run: ./gradlew distZip
  2. cd dex-tools/build/distributions
  3. Unzip the file dex-tools-2.1-SNAPSHOT.zip (file size should be ~5 MB)
  4. Run d2j-dex2jar.sh from the unzipped directory

Example usage:

sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk

And the output file will be apk_to_decompile-dex2jar.jar.

Need help ?

post on issue trackers list above.

License

Apache 2.0

dex2jar (pxb1988/dex2jar)

Searching Database…

13.1K ·GitHub
Что это такое?Набор консольных утилит для работы с файлами .dex (Android) и .class (Java). Больше всего он известен тем, что конвертирует dex-байткод внутри APK в jar-файл, который потом можно открыть в Java-декомпиляторе.
Это консольная утилита или библиотека, на которой я буду писать свой код?И то и другое. В повседневном использовании это командная строка (d2j-dex2jar.sh и другие скрипты), но в пакет также входит dex-reader/writer — легковесный Java-API для чтения и записи .dex-файлов, сделанный по образцу ASM.
Как получить рабочую копию?Собрать из исходников: выполните ./gradlew distZip в корне репозитория, возьмите dex-tools-2.1-SNAPSHOT.zip из папки dex-tools/build/distributions, распакуйте его (~5 МБ) и запускайте скрипты d2j-*.sh из этой папки.
Что должно быть установлено, чтобы хоть что-то запустить?JDK: это Java-программы, которые собираются с помощью идущего в комплекте Gradle wrapper и запускаются через shell-скрипты. Минимальную версию Java в README не указывают.
Получу ли я на выходе читаемый Java-код?Сам по себе нет: d2j-dex2jar превращает .dex в .class-файлы, упакованные в jar, и чтобы получить читаемый исходный код, этот jar ещё нужно скормить Java-декомпилятору.
Это работает на Windows или только на Linux/macOS?В README показано только использование через shell-скрипты (sh d2j-dex2jar.sh), то есть документированы Linux и macOS. Но поскольку это обычная Java, программа работает везде, где есть JVM, — просто отдельный лаунчер для Windows не упоминается.
Что такое smali и когда он нужен вместо декомпилятора?smali — это человекочитаемая форма байткода Dalvik, похожая на ассемблер. baksmali превращает dex в файлы .smali, которые можно читать и править, а smali собирает их обратно в dex — так можно не только изучать код приложения, но и вносить в него изменения.
Можно скормить ему целый APK или только голые .dex-файлы?APK работает напрямую: в примере из README путь к APK передаётся скрипту как есть — sh d2j-dex2jar.sh -f ~/path/to/apktodecompile.apk — и на выходе получается apktodecompile-dex2jar.jar.
Чем его smali/baksmali отличаются от известных оригиналов?Это независимая реализация с тем же синтаксисом, дополненная поддержкой escape-последовательностей в дескрипторах типов — это полезно, когда имена классов содержат необычные символы, на которых обычные инструменты спотыкаются.
Есть ли готовые бинарники или придётся собирать самому?Ссылки на GitHub Releases есть в начале README, но описанный путь — собрать zip самостоятельно: ./gradlew distZip создаёт dex-tools-2.1-SNAPSHOT.zip (~5 МБ), который затем распаковывается и запускается.
Creator
pxb1988
Size
8.5 MB
Stars
13.1K
Age
11y
Commits · 90 Days