File: README.md
JADX
jadx - Dex to Java decompiler
Command line and GUI tools for producing Java source code from Android Dex and Apk files
[!WARNING]
Please note that in most cases jadx can't decompile all 100% of the code, so errors will occur.
Check Troubleshooting guide for workarounds.
Main features:
- decompile Dalvik bytecode to Java code from APK, dex, aar, aab and zip files
- decode
AndroidManifest.xmland other resources fromresources.arsc - deobfuscator included
jadx-gui features:
- view decompiled code with highlighted syntax
- jump to declaration
- find usage
- full text search
- smali debugger, check wiki page for setup and usage
Jadx-gui key bindings can be found here
See these features in action here: jadx-gui features overview
Download
- release
from github: - latest unstable build
After download unpack zip file go to bin directory and run:
jadx- command line versionjadx-gui- UI version
On Windows run .bat files with double-click
Note: ensure you have installed Java 11 or later 64-bit version.
For Windows, you can download it from oracle.com (select x64 Installer).
Install
- Arch Linuxbash
sudo pacman -S jadx - macOSbash
brew install jadx - Flathubbash
flatpak install flathub com.github.skylot.jadx
Use jadx as a library
You can use jadx in your java projects, check details on wiki page
Build from source
JDK 17 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
Usage
/* Detailed source-code truncated for AI context efficiency. */These options also work in jadx-gui running from command line and override options from preferences' dialog
Usage for plugins command
usage: plugins [options]
options:
-i, --install <locationId> - install plugin with locationId
-j, --install-jar - install plugin from jar file
-l, --list - list installed plugins
-a, --available - list available plugins from jadx-plugins-list (aka marketplace)
-u, --update - update installed plugins
--uninstall - uninstall plugin with pluginId
--disable - disable plugin with pluginId
--enable - enable plugin with pluginId
--list-all - list all plugins including bundled and dropins
--list-versions <locationId> - fetch latest versions of plugin from locationId (will download all artefacts, limited to 10)
-h, --help - print this helpTroubleshooting
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
File: config/jflex/README.md
Refer to the following instructions to modify and use to generate SmaliTokenMarker
jflex SmaliTokenMaker.flex --skel skeleton.defaultFile: jadx-commons/jadx-zip/README.md
jadx zip
Custom zip reader implementation to fight tampering and provide additional security checks
File: jadx-commons/jadx-app-commons/README.md
jadx app commons
This module contains common utilities used in jadx apps (cli and gui) and not needed in jadx-code module:
JadxCommonFiles- wrapper fordev.dirs:directorieslib to get
'config' and 'cache' directories in cross-platform wayJadxCommonEnv- utils for work with environment variables
File: jadx-plugins/jadx-input-api/README.md
jadx-input-api
Base API for code input used in jadx.
Contains common data structures to support both java and dex bytecode.
File: jadx-plugins-tools/src/main/java/jadx/plugins/tools/resolvers/README.md
Supported publish locations for Jadx plugins
GitHub release artifact
Pattern: github:<owner>:<repo>[:<version>][:<artifact name prefix>]
Examples: github:skylot:jadx, github:skylot:jadx:sample-plugin or github:skylot:jadx:0.1.0
<version> - exact version to install (optional), should be equal to release name
Artifact name pattern: <artifact name prefix>[-<release-version-name>].jar.
Default value for <artifact name prefix> is a repo name, -<release-version-name> is optional.
Local file
Install local jar file.
Pattern: file:.jar
Example: file:/home/user/plugin.jar
As alternative to install, plugin jars can be copied to plugins/dropins folder.