Skip to content
Dex to Java decompiler
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config style: enforce code style using checkstyle and spotless with eclipse … Apr 29, 2019
gradle/wrapper chore: update dependencies and gradle Mar 15, 2019
jadx-cli style: enforce code style using checkstyle and spotless with eclipse … Apr 29, 2019
jadx-core fix: avoid local variables collision with full class names (#647) May 3, 2019
jadx-gui feat(gui): make search bar usable for smali code (PR #652) Apr 30, 2019
jadx-samples style: enforce code style using checkstyle and spotless with eclipse … Apr 29, 2019
jadx-test-app build: remove sonar plugin from gradle config (fix #140) Dec 5, 2016
scripts build: check env variables for deploy stages (i.e skip deploy in forks) Mar 14, 2019
.codecov.yml build: disable codecov pull request report Feb 13, 2018
.editorconfig style: enforce code style using checkstyle and spotless with eclipse … Apr 29, 2019
.gitignore style: enforce code style using checkstyle and spotless with eclipse … Apr 29, 2019
.gitlab-ci.yml build: update gitlab config Mar 22, 2019
.gitmodules test: added module for check recompilation of test app Oct 10, 2015
.releaserc.yml chore: don't use labels for artifacts in github release Aug 26, 2018
.travis.yml build: check repo name and build type to skip deploy on PR and forks Mar 20, 2019
CONTRIBUTING.md Create CONTRIBUTING.md Feb 2, 2018
LICENSE add full license text file Mar 14, 2015
NOTICE gui: support images view/unpack Mar 26, 2016
README.md feat: add option to disable anonymous class inline (#633) Apr 25, 2019
build.gradle style: enforce code style using checkstyle and spotless with eclipse … Apr 29, 2019
gradle.properties gui: fix build for java 10 and update dependencies (#291) Jun 2, 2018
gradlew update gradle wrapper to version 4.4.1 Jan 2, 2018
gradlew.bat update gradle wrapper to version 4.4.1 Jan 2, 2018
settings.gradle test: added module for check recompilation of test app Oct 10, 2015

README.md

JADX

Build Status Code Coverage SonarQube Bugs License semantic-release

jadx - Dex to Java decompiler

Command line and GUI tools for produce Java source code from Android Dex and Apk files

jadx-gui screenshot

Downloads

After download unpack zip file go to bin directory and run:

  • jadx - command line version
  • jadx-gui - graphical version

On Windows run .bat files with double-click
Note: ensure you have installed Java 8 64-bit version

Related projects:

Building jadx from source

JDK 8 or higher must be installed:

git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist

(on Windows, use gradlew.bat instead of ./gradlew)

Scripts for run jadx will be placed in build/jadx/bin and also packed to build/jadx-<version>.zip

Run

Run jadx on itself:

cd build/jadx/
bin/jadx -d out lib/jadx-core-*.jar
# or
bin/jadx-gui lib/jadx-core-*.jar

Usage

jadx[-gui] [options] <input file> (.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc)
options:
  -d, --output-dir                    - output directory
  -ds, --output-dir-src               - output directory for sources
  -dr, --output-dir-res               - output directory for resources
  -j, --threads-count                 - processing threads count
  -r, --no-res                        - do not decode resources
  -s, --no-src                        - do not decompile source code
  -e, --export-gradle                 - save as android gradle project
  --show-bad-code                     - show inconsistent code (incorrectly decompiled)
  --no-imports                        - disable use of imports, always write entire package name
  --no-debug-info                     - disable debug info
  --no-inline-anonymous               - disable anonymous classes inline
  --no-replace-consts                 - don't replace constant value with matching constant field
  --escape-unicode                    - escape non latin characters in strings (with \u)
  --respect-bytecode-access-modifiers - don't change original access modifiers
  --deobf                             - activate deobfuscation
  --deobf-min                         - min length of name, renamed if shorter (default: 3)
  --deobf-max                         - max length of name, renamed if longer (default: 64)
  --deobf-rewrite-cfg                 - force to save deobfuscation map
  --deobf-use-sourcename              - use source file name as class name alias
  --rename-flags                      - what to rename, comma-separated, 'case' for system case sensitivity, 'valid' for java identifiers, 'printable' characters, 'none' or 'all'
  --cfg                               - save methods control flow graph to dot file
  --raw-cfg                           - save methods control flow graph (use raw instructions)
  -f, --fallback                      - make simple dump (using goto instead of 'if', 'for', etc)
  -v, --verbose                       - verbose output
  --version                           - print jadx version
  -h, --help                          - print this help
Example:
 jadx -d out classes.dex
 jadx --rename-flags "none" classes.dex
 jadx --rename-flags "valid,printable" classes.dex

These options also worked on jadx-gui running from command line and override options from preferences dialog

Troubleshooting

Out of memory error:
  • Reduce processing threads count (-j option)
  • Increase maximum java heap size:
    • command line (example for linux): JAVA_OPTS="-Xmx4G" jadx -j 1 some.apk
    • edit 'jadx' script (jadx.bat on Windows) and setup bigger heap size: DEFAULT_JVM_OPTS="-Xmx2500M"

Licensed under the Apache 2.0 License

Copyright 2018 by Skylot

You can’t perform that action at this time.