Jadx merupakan aplikasi berbasis Command line dan GUI yang memungkinkan untuk melakukan konversi ke file source java dan file android Dex atau file apk.

Fitur utama:

  • decompile Dalvik bytecode ke java classes dari APK, dex, aar dan file zip
  • decode AndroidManifest.xml
  • termasuk melakukan deobfuscator

Fitur jadx-gui:

  • melihat hasil code yang sudah di decopile dilengkapi dengan  highlighted syntax
  • jump to declaration
  • find usage dan full text search

Jadx tersedia di windows, linux, mac. Untuk menjalankannya pastikan sudah terinstall java 8 atau terbaru untuk versi 64-bit.

Install

1. Arch linux
sudo pacman -S jadx

2. macOS
brew install jadx

Build from source

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 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
-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-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’ (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

untuk lebih ke jelasnya bisa meluncur ke https://github.com/skylot/jadx

Tagged : # #

Leave a Reply

Your email address will not be published. Required fields are marked *