Reverse Engineeringdecompilerandroiddexapkjava

jadx

jadx is a Dex to Java decompiler that produces Java source code from Android Dex and APK files. It includes both command-line and GUI tools with features like resource decoding and deobfuscation.

Description

jadx is a dex to java decompiler package in Kali Linux, containing command line and GUI tools to produce Java source code from Android Dex and Apk files. Main features include decompiling Dalvik bytecode to java classes from APK, dex, aar, and zip files, decoding AndroidManifest.xml and other resources from resources.arsc, and an included deobfuscator. The jadx-gui provides viewing decompiled code with highlighted syntax, jump to declaration, find usage, and full text search.

Use cases involve reverse engineering Android applications by extracting readable Java source code for analysis, understanding app behavior, or security auditing. It supports various input formats like .apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab, .xapk, .apkm, and .jadx.kts.

The tool manages plugins and offers environment variables for customizing security checks and directories.

How It Works

jadx decompiles Dalvik bytecode from dex files to Java classes, decodes resources like AndroidManifest.xml from resources.arsc, and handles multiple input formats including APK, dex, aar, zip. It uses plugins like dex-input for loading and verifying dex/apk files, java-convert for converting .class/.jar/.aar to dex using dx or d8 modes, and kotlin-metadata for code generation. Deobfuscation is built-in, with threading for processing and options to skip resources or sources.

Installation

bash
sudo apt install jadx

Flags

-d, --output-diroutput directory
-ds, --output-dir-srcoutput directory for sources
-dr, --output-dir-resoutput directory for resources
-r, --no-resdo not decode resources
-s, --no-srcdo not decompile source code
-j, --threads-countprocessing threads count, default: 3
--single-classdecompile a single class, full name, raw or alias
--single-class-outputfile or dir for write if decompile a single class
-sc, --select-classGUI: Open the selected class and show the decompiled code
--log-levelset log level, values: quiet, progress, error, warn, info, debug, default: info

Examples

Decompiles classes.dex to output directory 'out'
jadx -d out classes.dex
Decompiles classes.dex with no renaming flags
jadx --rename-flags "none" classes.dex
Decompiles classes.dex with valid and printable rename flags
jadx --rename-flags "valid, printable" classes.dex
Decompiles app.apk with ERROR log level
jadx --log-level ERROR app.apk
Decompiles app.apk disabling dex checksum verification
jadx -Pdex-input.verify-checksum=no app.apk
Launches jadx-gui and opens the selected class
jadx-gui -sc
Updated 2026-04-16kali.org ↗