Skip to main content

jadx

Use jadx for authorized Android APK, DEX, AAR, and JAR decompilation, app logic review, endpoint discovery, embedded-secret review, and mobile reverse engineering.

Jump to install

Source facts

Repository
Aethena-Lab/Z3r0
Last source activity
September 3, 2026 at 10:00
Detected SKILL.md language
English
Stars
891
Forks
193

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
jadx
description
Use jadx for authorized Android APK, DEX, AAR, and JAR decompilation, app logic review, endpoint discovery, embedded-secret review, and mobile reverse engineering.
# jadx Use `jadx` to decompile Android APK, DEX, AAR, and JAR inputs into readable Java source and decoded resources. Prefer CLI output that can be searched, scripted, and archived. ## Help first Before constructing commands, run the installed help and use it as the source of truth: ```bash jadx --help ``` ## Usage rules - Work only on provided Android artifacts or explicitly authorized mobile applications. - Prefer task-scoped output directories and preserve the original input file. - Ensure the output directory is writable and has enough space because decompiled output can be several times larger than the input. - Start from `resources/AndroidManifest.xml`, then inspect entry points and security-sensitive packages under `sources/`. - Use `--deobf` for obfuscated apps and `--show-bad-code` when partial decompilation is useful. - Use `apktool` when manifest, resources, smali, or packaging fidelity matters more than readable Java-like source. - Save large grep results and decompiled snippets to files rather than streaming them into the conversation. ## Common workflows ```bash # Standard decompilation jadx app.apk -d app-jadx # Recommended for obfuscated production apps jadx --deobf app.apk -d app-jadx # Faster code-only pass jadx --no-res --deobf app.apk -d app-code # Resources-only pass jadx --no-src app.apk -d app-resources # Preserve partially decompiled methods when errors occur jadx --show-bad-code app.apk -d app-jadx # Fallback mode for difficult inputs jadx --fallback --show-bad-code app.apk -d app-jadx ``` ## Output layout ```text app-jadx/ ├── sources/ # Decompiled Java source │ └── com/example/app/ └── resources/ # Decoded Android resources ├── AndroidManifest.xml ├── res/ └── assets/ ``` Start analysis from `resources/AndroidManifest.xml`, then inspect entry points and security-sensitive packages under `sources/`. ## Recommended workflow ```bash apk=app.apk out=app-jadx jadx --deobf --show-bad-code "$apk" -d "$out" # Entry points and components grep -r "extends Activity\|extends AppCompatActivity\|extends Application\|extends Service\|extends BroadcastReceiver" "$out/sources/" # URLs and API declarations grep -rE 'https?://[^"'"'"']+' "$out/sources/" "$out/resources/" grep -r "@GET\|@POST\|@PUT\|@DELETE\|@PATCH\|baseUrl\|BASE_URL\|API_URL" "$out/sources/" # Embedded secrets and authentication material grep -ri "api.*key\|apikey\|secret\|password\|passwd\|token\|bearer" "$out/sources/" "$out/resources/" # Crypto, storage, WebView, TLS handling grep -r "Cipher.getInstance\|MessageDigest\|DES\|MD5\|SHA1\|SecureRandom" "$out/sources/" grep -r "SharedPreferences\|SQLite\|openFileOutput\|MODE_WORLD_READABLE\|MODE_WORLD_WRITABLE" "$out/sources/" grep -r "setJavaScriptEnabled.*true\|addJavascriptInterface\|WebView.*loadUrl" "$out/sources/" grep -r "TrustManager\|HostnameVerifier\|CertificatePinner\|checkServerTrusted" "$out/sources/" ``` ## Common analysis tasks ### API endpoint discovery ```bash jadx --deobf app.apk -d app-jadx find app-jadx/sources \ -name '*Api*.java' -o \ -name '*Service*.java' -o \ -name '*Client*.java' grep -r "@GET\|@POST\|@PUT\|@DELETE\|@PATCH" app-jadx/sources/ | sort -u grep -r "baseUrl\|BASE_URL\|API_BASE\|API_URL" app-jadx/sources/ app-jadx/resources/ | sort -u ``` ### Embedded secret review ```bash jadx --no-res --deobf app.apk -d app-code grep -ri "api.*key\|apikey\|client.*secret\|secret.*key" app-code/sources/ grep -ri "username.*password\|user.*pass\|password\|passwd\|pwd" app-code/sources/ grep -ri "token\|jwt\|bearer\|authorization" app-code/sources/ ``` ### IoT companion app review ```bash jadx --deobf iot.apk -d iot-jadx grep -rE 'https?://[^"'"'"']+' iot-jadx/sources/ iot-jadx/resources/ | grep -vi "google\|android\|facebook" grep -ri "discover\|scan\|broadcast\|mdns\|udp\|mqtt\|coap\|onvif" iot-jadx/sources/ grep -ri "Authorization\|apiKey\|token\|login\|authenticate" iot-jadx/sources/ grep -r "CertificatePinner\|TrustManager\|HostnameVerifier" iot-jadx/sources/ ``` ### Batch processing ```bash for apk in *.apk; do name=$(basename "$apk" .apk) out="jadx-$name" jadx --no-res --deobf "$apk" -d "$out" grep -ri "api.*key\|password\|secret\|token\|baseUrl" "$out/sources/" > "findings-$name.txt" || true done ``` ## Useful options - `--deobf`: rename obfuscated classes and members where possible. - `--use-source-name-as-class-name-alias`: use source file names as deobfuscation hints; valid values include `always`, `if-better`, and `never`. - `--show-bad-code`: emit partial code for methods jadx cannot cleanly decompile. - `--fallback`: use fallback decompilation when normal output fails. - `--no-res`: skip resources for faster source-only analysis. - `--no-src`: decode resources without Java source output. - `--export-gradle`: export a Gradle project layout. - `-j <threads>`: set decompilation thread count. ## Troubleshooting ```bash # Obfuscated names make code hard to follow jadx --deobf --use-source-name-as-class-name-alias if-better app.apk -d app-jadx # Decompiler errors hide important logic jadx --show-bad-code --fallback app.apk -d app-jadx # Large APK is slow jadx --no-res -j 8 app.apk -d app-code # Need build-like project structure jadx --export-gradle app.apk -d app-project ``` ## Output Report the APK or artifact path, hash if available, jadx command used, output directory, relevant paths under `sources/` or `resources/`, exact constants/URLs/methods/components found, why the finding matters, and limitations such as decompiler errors or obfuscation.
View on GitHub