All Projects → skylot → Jadx

skylot / Jadx

Licence: apache-2.0
Dex to Java decompiler

Programming Languages

java
68154 projects - #9 most used programming language
Smali
51 projects
Lex
420 projects

Projects that are alternatives of or similar to Jadx

Vdexextractor
Tool to decompile & extract Android Dex bytecode from Vdex files
Stars: ✭ 691 (-97.54%)
Mutual labels:  decompiler, dex
Simplesmali
通过精简Smali语法细节来增强反编译代码阅读性,自定义了一种简单语法
Stars: ✭ 61 (-99.78%)
Mutual labels:  decompiler, dex
Wasmdec
WebAssembly to C decompiler
Stars: ✭ 290 (-98.97%)
Mutual labels:  decompiler
Dexcalibur
[Official] Android reverse engineering tool focused on dynamic instrumentation automation. Powered by Frida. It disassembles dex, analyzes it statically, generates hooks, discovers reflected methods, stores intercepted data and does new things from it. Its aim is to be an all-in-one Android reverse engineering platform.
Stars: ✭ 512 (-98.18%)
Mutual labels:  dex
Intellij Java2smali
A plugin for IntelliJ IDEA & Android Studio to easily compile Java & Kotlin files to smali.
Stars: ✭ 384 (-98.64%)
Mutual labels:  dex
Fidl
A sane API for IDA Pro's decompiler. Useful for malware RE and vulnerability research
Stars: ✭ 319 (-98.87%)
Mutual labels:  decompiler
Dsync
IDAPython plugin that synchronizes disassembler and decompiler views
Stars: ✭ 399 (-98.58%)
Mutual labels:  decompiler
Protocols
A zkRollup DEX & Payment Protocol
Stars: ✭ 260 (-99.08%)
Mutual labels:  dex
Luadec
Lua Decompiler for lua 5.1 , 5.2 and 5.3
Stars: ✭ 676 (-97.6%)
Mutual labels:  decompiler
Dex65536
Solve the issue with dalvik compiler limitation on 65536 methods (Unable to execute dex: method ID not in [0, 0xffff]: 65536)
Stars: ✭ 352 (-98.75%)
Mutual labels:  dex
Rz Ghidra
Deep ghidra decompiler and sleigh disassembler integration for rizin
Stars: ✭ 478 (-98.3%)
Mutual labels:  decompiler
Androguard
Reverse engineering, Malware and goodware analysis of Android applications ... and more (ninja !)
Stars: ✭ 3,797 (-86.5%)
Mutual labels:  dex
Undertalemodtool
The most complete tool for modding, decompiling and unpacking Undertale (and other Game Maker: Studio games!)
Stars: ✭ 313 (-98.89%)
Mutual labels:  decompiler
Adhrit
Android Security Suite for in-depth reconnaissance and static bytecode analysis based on Ghera benchmarks.
Stars: ✭ 399 (-98.58%)
Mutual labels:  dex
Python Decompile3
Python decompiler for 3.7-3.8 Stripped down from uncompyle6 so we can refactor and fix up some long-standing problems
Stars: ✭ 303 (-98.92%)
Mutual labels:  decompiler
Fcd
An optimizing decompiler
Stars: ✭ 622 (-97.79%)
Mutual labels:  decompiler
Boomerang
Boomerang Decompiler - Fighting the code-rot :)
Stars: ✭ 265 (-99.06%)
Mutual labels:  decompiler
Dex Oracle
A pattern based Dalvik deobfuscator which uses limited execution to improve semantic analysis
Stars: ✭ 398 (-98.59%)
Mutual labels:  dex
R2dec Js
radare2 plugin - converts asm to pseudo-C code.
Stars: ✭ 345 (-98.77%)
Mutual labels:  decompiler
Valveresourceformat
🔬 Valve's Source 2 resource file format parser and decompiler
Stars: ✭ 638 (-97.73%)
Mutual labels:  decompiler

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

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 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
  • smali debugger (thanks to @LBJ-the-GOAT), check wiki page for setup and usage

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

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 11 or later 64-bit version. For windows you can download it from oracle.com (select x64 Installer).

Install

  1. Arch linux
        sudo pacman -S jadx
  2. macOS
        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-<version>.zip

Usage

jadx[-gui] [options] <input files> (.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
  --add-debug-lines                   - add comments with debug line numbers if available
  --no-inline-anonymous               - disable anonymous classes inline
  --no-inline-methods                 - disable methods 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 ignore and overwrite deobfuscation map file
  --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                      - fix options (comma-separated list of):
                                         'case' - fix case sensitivity issues (according to --fs-case-sensitive option),
                                         'valid' - rename java identifiers to make them valid,
                                         'printable' - remove non-printable chars from identifiers,
                                        or single 'none' - to disable all renames
                                        or single 'all' - to enable 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)
  --use-dx                            - use dx/d8 to convert java bytecode
  --comments-level                    - set code comments level, values: none, user_only, error, warn, info, debug, default: info
  --log-level                         - set log level, values: quiet, progress, error, warn, info, debug, default: progress
  -v, --verbose                       - verbose output (set --log-level to DEBUG)
  -q, --quiet                         - turn off output (set --log-level to QUIET)
  --version                           - print jadx version
  -h, --help                          - print this help
Examples:
  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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].