Need help with jadx?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

skylot
25.9K Stars 3.2K Forks Apache License 2.0 1.5K Commits 164 Opened issues

Description

Dex to Java decompiler

Services available

!
?

Need anything else?

Contributors list

# 438
Java
HTML
Shell
dex
1062 commits
# 4,269
Java
seleniu...
microso...
chatbot...
88 commits
# 8,026
Java
mpd
analysi...
Android
48 commits
# 13,496
C
Java
sed
Android
24 commits
# 14,957
Android
iOS
Rust
Java
19 commits
# 21,486
Java
dex
Android
decompi...
12 commits
# 33,492
Java
dex
Android
decompi...
6 commits
# 32,734
JavaFX
Java
Kotlin
decompi...
6 commits
# 33,473
Java
dex
Android
decompi...
6 commits
# 37,458
golang
Java
cms-fra...
Laravel
5 commits
# 43,040
Kotlin
decompi...
dex
Java
4 commits
# 50,059
Python
Shell
binary-...
dex
3 commits
# 41,572
Kotlin
Java
github-...
GitHub
3 commits
# 50,124
tdlib
Telegra...
Java
dex
3 commits
# 36,755
Java
Android
CSS
decompi...
3 commits
# 18,364
vala
Qt
smali
kotlin-...
3 commits
# 63,607
decompi...
dex
Java
Android
2 commits
# 63,606
decompi...
dex
Java
Android
2 commits
# 63,603
decompi...
dex
Java
Android
2 commits
# 27,693
Python
Android
HTML
Shell
2 commits

JADX

Build status Alerts from lgtm.com semantic-release License

jadx - Dex to Java decompiler

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

Main features: - decompile Dalvik bytecode to java classes from APK, dex, aar, aab and zip files - decode

AndroidManifest.xml
and other resources from
resources.arsc
- deobfuscator included

jadx-gui features: - view decompiled code with highlighted syntax - jump to declaration - find usage - full text search

Upcoming unstable features: - smali debugger (thanks to @LBJ-the-GOAT), check wiki page for setup and usage

See these features in action here: jadx-gui features overview

jadx-gui screenshot

Download

After download unpack zip file go to

bin
directory and run: -
jadx
- command line version -
jadx-gui
- UI version

On Windows run

.bat
files with double-click\ Note: ensure you have installed Java 8 or later 64-bit version. For windows you can download it from adoptopenjdk.net (select "Install JRE").

Install

  1. Arch linux
    bash
        sudo pacman -S jadx
    
  2. macOS
    bash
        brew install jadx
    

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

Usage

jadx[-gui] [options]  (.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab)
options:
  -d, --output-dir                    - output directory
  -ds, --output-dir-src               - output directory for sources
  -dr, --output-dir-res               - output directory for resources
  -r, --no-res                        - do not decode resources
  -s, --no-src                        - do not decompile source code
  --single-class                      - decompile a single class
  --output-format                     - can be 'java' or 'json', default: java
  -e, --export-gradle                 - save as android gradle project
  -j, --threads-count                 - processing threads count, default: 4
  --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-cfg-file                    - deobfuscation map file, default: same dir and name as input file with '.jobf' extension
  --deobf-rewrite-cfg                 - force to save deobfuscation map
  --deobf-use-sourcename              - use source file name as class name alias
  --deobf-parse-kotlin-metadata       - parse kotlin metadata to class and package names
  --rename-flags                      - what to rename, comma-separated, 'case' for system case sensitivity, 'valid' for java identifiers, 'printable' characters, 'none' or 'all' (default)
  --fs-case-sensitive                 - treat filesystem as case sensitive, false by default
  --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 (set --log-level to DEBUG)
  -q, --quiet                         - turn off output (set --log-level to QUIET)
  --log-level                         - set log level, values: QUIET, PROGRESS, ERROR, WARN, INFO, DEBUG, default: PROGRESS
  --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
 jadx --log-level error app.apk

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

Troubleshooting

Please check wiki page Troubleshooting Q&A

Contributing

To support this project you can: - Post thoughts about new features/optimizations that important to you - Submit decompilation issues, please read before proceed: Open issue - Open pull request, please follow these rules: Pull Request Process


Licensed under the Apache 2.0 License

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.