jadx
AndroidアプリのAPKファイルを解析し、内部のプログラムコードをJava形式に変換することで、アプリの仕組みを理解したり、セキュリティ上の弱点を見つけたり、隠された情報を発見したりするのに役立つSkill。
📜 元の英語説明(参考)
Android APK decompiler that converts DEX bytecode to readable Java source code. Use when you need to decompile APK files, analyze app logic, search for vulnerabilities, find hardcoded credentials, or understand app behavior through readable source code.
🇯🇵 日本人クリエイター向け解説
AndroidアプリのAPKファイルを解析し、内部のプログラムコードをJava形式に変換することで、アプリの仕組みを理解したり、セキュリティ上の弱点を見つけたり、隠された情報を発見したりするのに役立つSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o jadx.zip https://jpskill.com/download/17609.zip && unzip -o jadx.zip && rm jadx.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17609.zip -OutFile "$d\jadx.zip"; Expand-Archive "$d\jadx.zip" -DestinationPath $d -Force; ri "$d\jadx.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
jadx.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
jadxフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Jadx - Android APK デコンパイラ
このドキュメントは、ユーザーが jadx を使用して Android APK ファイルをデコンパイルし、DEX バイトコードを可読性の高い Java ソースコードに変換して、セキュリティ分析、脆弱性の発見、およびアプリの内部構造の理解を支援することを目的としています。
ツールの概要
Jadx は、Android APK ファイルからクリーンで可読性の高い Java ソースコードを生成する dex から Java へのデコンパイラです。apktool (smali を生成) とは異なり、jadx は実際に読みやすく分析しやすい Java コードを生成します。これは以下に不可欠です。
- DEX バイトコードを可読性の高い Java ソースに変換
- アプリのロジックと制御フローを理解
- コード内のセキュリティ脆弱性を発見
- ハードコードされた認証情報、API キー、URL を発見
- 暗号化/認証の実装を分析
- 使い慣れた Java 構文でコードを検索
前提条件
- jadx (およびオプションで jadx-gui) がインストールされている必要があります
- Java Runtime Environment (JRE) が必要です
- 十分なディスク容量 (デコンパイルされた出力は通常、APK サイズの 3〜10 倍)
- 出力ディレクトリへの書き込み権限
GUI vs CLI
Jadx は 2 つのインターフェースを提供します。
CLI (jadx): コマンドラインインターフェース
- 自動化とスクリプトに最適
- 複数の APK のバッチ処理
- 他のツールとの統合
- ヘッドレスサーバー環境
GUI (jadx-gui): グラフィカルインターフェース
- インタラクティブなコードブラウジング
- 組み込みの検索機能
- 相互参照とナビゲーション
- 手動分析が容易
- 構文の強調表示
それぞれの使用場面:
- 自動分析、スクリプト、CI/CD パイプラインには CLI を使用
- インタラクティブな探索と詳細な分析には GUI を使用
手順
1. 基本的な APK デコンパイル (最も一般的)
標準的なデコンパイルコマンド:
jadx <apk-file> -d <output-directory>
例:
jadx app.apk -d app-decompiled
難読化解除付き (難読化されたアプリに推奨):
jadx --deobf app.apk -d app-decompiled
2. 出力構造の理解
デコンパイル後、出力ディレクトリには以下が含まれます。
app-decompiled/
├── sources/ # Java ソースコード
│ └── com/company/app/ # パッケージ構造
│ ├── MainActivity.java
│ ├── utils/
│ ├── network/
│ └── ...
└── resources/ # デコードされたリソース
├── AndroidManifest.xml # 可読なマニフェスト
├── res/ # リソース
│ ├── layout/ # XML レイアウト
│ ├── values/ # 文字列、色
│ ├── drawable/ # 画像
│ └── ...
└── assets/ # アプリのアセット
3. デコンパイルオプション
A. パフォーマンスオプション
マルチスレッドデコンパイル (高速):
jadx -j 4 app.apk -d output
# -j はスレッド数を指定します (デフォルト: CPU コア数)
リソースをスキップ (コードのみ、大幅に高速):
jadx --no-res app.apk -d output
ソースコードをスキップ (リソースのみ):
jadx --no-src app.apk -d output
B. 難読化解除オプション
難読化解除を有効にする:
jadx --deobf app.apk -d output
- 難読化されたクラスの名前を変更 (a.b.c → 意味のある名前)
- 元の名前の復元を試みます
- コードがはるかに読みやすくなります
- 難読化/縮小されたアプリに不可欠
難読化解除マップの出力:
jadx --deobf --deobf-rewrite-cfg --deobf-use-sourcename app.apk -d output
- より積極的な難読化解除
- ソースファイル名をヒントとして使用
- 制御フローグラフを書き換えます
C. 出力制御
一貫性のない/不正なコードを表示:
jadx --show-bad-code app.apk -d output
- きれいにデコンパイルできなかったコードを表示
- 難読化またはアンチデコンパイルのトリックを見つけるのに役立ちます
- 構文エラーが含まれている可能性がありますが、構造を明らかにします
Gradle プロジェクトとしてエクスポート:
jadx --export-gradle app.apk -d output
- ビルド可能な Gradle Android プロジェクトを作成
- アプリの再構築/変更に役立ちます
- build.gradle ファイルが含まれています
フォールバックモード (デコンパイルが失敗した場合):
jadx --fallback app.apk -d output
- 代替のデコンパイル戦略を使用
- クリーンなコードは生成されませんが、エッジケースを処理します
4. 一般的な分析タスク
A. 機密情報の検索
デコンパイル後、一般的なセキュリティの問題を検索:
# API キーを検索
grep -r "api.*key\|apikey\|API_KEY" app-decompiled/sources/
# パスワードと認証情報を検索
grep -r "password\|credential\|secret" app-decompiled/sources/
# ハードコードされた URL を検索
grep -rE "https?://[^\"]+" app-decompiled/sources/
# 暗号化キーを検索
grep -r "AES\|DES\|RSA\|encryption.*key" app-decompiled/sources/
# トークンを検索
grep -r "token\|auth.*token\|bearer" app-decompiled/sources/
# データベースのパスワードを検索
grep -r "jdbc\|database\|db.*password" app-decompiled/sources/
B. セキュリティ脆弱性の発見
SQL インジェクション:
grep -r "SELECT.*FROM.*WHERE" app-decompiled/sources/ | grep -v "PreparedStatement"
grep -r "rawQuery\|execSQL" app-decompiled/sources/
安全でない暗号化:
grep -r "DES\|MD5\|SHA1" app-decompiled/sources/
grep -r "SecureRandom.*setSeed" app-decompiled/sources/
grep -r "Cipher.getInstance" app-decompiled/sources/ | grep -v "AES/GCM"
安全でないストレージ:
grep -r "SharedPreferences" app-decompiled/sources/
grep -r "MODE_WORLD_READABLE\|MODE_WORLD_WRITABLE" app-decompiled/sources/
grep -r "openFileOutput" app-decompiled/sources/
WebView の脆弱性:
grep -r "setJavaScriptEnabled.*true" app-decompiled/sources/
grep -r "addJavascriptInterface" app-decompiled/sources/
grep -r "WebView.*loadUrl" app-decompiled/sources/
証明書ピニングのバイパス:
grep -r "TrustManager\|HostnameVerifier" app-decompiled/sources/
grep -r "checkServerTrusted" app-decompiled/sources/
C. アプリのロジックの理解
エントリポイントの検索:
# メインアクティビティ
grep -r "extends Activity\|extends AppCompatActivity" app-decompiled/sources/
# アプリケーションクラス
grep -r "extends Application" app-de 📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Jadx - Android APK Decompiler
You are helping the user decompile Android APK files using jadx to convert DEX bytecode into readable Java source code for security analysis, vulnerability discovery, and understanding app internals.
Tool Overview
Jadx is a dex to Java decompiler that produces clean, readable Java source code from Android APK files. Unlike apktool (which produces smali), jadx generates actual Java code that's much easier to read and analyze. It's essential for:
- Converting DEX bytecode to readable Java source
- Understanding app logic and control flow
- Finding security vulnerabilities in code
- Discovering hardcoded credentials, API keys, URLs
- Analyzing encryption/authentication implementations
- Searching through code with familiar Java syntax
Prerequisites
- jadx (and optionally jadx-gui) must be installed
- Java Runtime Environment (JRE) required
- Sufficient disk space (decompiled output is typically 3-10x APK size)
- Write permissions in output directory
GUI vs CLI
Jadx provides two interfaces:
CLI (jadx): Command-line interface
- Best for automation and scripting
- Batch processing multiple APKs
- Integration with other tools
- Headless server environments
GUI (jadx-gui): Graphical interface
- Interactive code browsing
- Built-in search functionality
- Cross-references and navigation
- Easier for manual analysis
- Syntax highlighting
When to use each:
- Use CLI for automated analysis, scripting, CI/CD pipelines
- Use GUI for interactive exploration and deep-dive analysis
Instructions
1. Basic APK Decompilation (Most Common)
Standard decompile command:
jadx <apk-file> -d <output-directory>
Example:
jadx app.apk -d app-decompiled
With deobfuscation (recommended for obfuscated apps):
jadx --deobf app.apk -d app-decompiled
2. Understanding Output Structure
After decompilation, the output directory contains:
app-decompiled/
├── sources/ # Java source code
│ └── com/company/app/ # Package structure
│ ├── MainActivity.java
│ ├── utils/
│ ├── network/
│ └── ...
└── resources/ # Decoded resources
├── AndroidManifest.xml # Readable manifest
├── res/ # Resources
│ ├── layout/ # XML layouts
│ ├── values/ # Strings, colors
│ ├── drawable/ # Images
│ └── ...
└── assets/ # App assets
3. Decompilation Options
A. Performance Options
Multi-threaded decompilation (faster):
jadx -j 4 app.apk -d output
# -j specifies number of threads (default: CPU cores)
Skip resources (code only, much faster):
jadx --no-res app.apk -d output
Skip source code (resources only):
jadx --no-src app.apk -d output
B. Deobfuscation Options
Enable deobfuscation:
jadx --deobf app.apk -d output
- Renames obfuscated classes (a.b.c → meaningful names)
- Attempts to recover original names
- Makes code much more readable
- Essential for obfuscated/minified apps
Deobfuscation map output:
jadx --deobf --deobf-rewrite-cfg --deobf-use-sourcename app.apk -d output
- More aggressive deobfuscation
- Uses source file names as hints
- Rewrites control flow graphs
C. Output Control
Show inconsistent/bad code:
jadx --show-bad-code app.apk -d output
- Shows code that couldn't be decompiled cleanly
- Useful for finding obfuscation or anti-decompilation tricks
- May contain syntax errors but reveals structure
Export as Gradle project:
jadx --export-gradle app.apk -d output
- Creates buildable Gradle Android project
- Useful for rebuilding/modifying app
- Includes build.gradle files
Fallback mode (when decompilation fails):
jadx --fallback app.apk -d output
- Uses alternative decompilation strategy
- Produces less clean code but handles edge cases
4. Common Analysis Tasks
A. Searching for Sensitive Information
After decompilation, search for common security issues:
# Search for API keys
grep -r "api.*key\|apikey\|API_KEY" app-decompiled/sources/
# Search for passwords and credentials
grep -r "password\|credential\|secret" app-decompiled/sources/
# Search for hardcoded URLs
grep -rE "https?://[^\"]+" app-decompiled/sources/
# Search for encryption keys
grep -r "AES\|DES\|RSA\|encryption.*key" app-decompiled/sources/
# Search for tokens
grep -r "token\|auth.*token\|bearer" app-decompiled/sources/
# Search for database passwords
grep -r "jdbc\|database\|db.*password" app-decompiled/sources/
B. Finding Security Vulnerabilities
SQL Injection:
grep -r "SELECT.*FROM.*WHERE" app-decompiled/sources/ | grep -v "PreparedStatement"
grep -r "rawQuery\|execSQL" app-decompiled/sources/
Insecure Crypto:
grep -r "DES\|MD5\|SHA1" app-decompiled/sources/
grep -r "SecureRandom.*setSeed" app-decompiled/sources/
grep -r "Cipher.getInstance" app-decompiled/sources/ | grep -v "AES/GCM"
Insecure Storage:
grep -r "SharedPreferences" app-decompiled/sources/
grep -r "MODE_WORLD_READABLE\|MODE_WORLD_WRITABLE" app-decompiled/sources/
grep -r "openFileOutput" app-decompiled/sources/
WebView vulnerabilities:
grep -r "setJavaScriptEnabled.*true" app-decompiled/sources/
grep -r "addJavascriptInterface" app-decompiled/sources/
grep -r "WebView.*loadUrl" app-decompiled/sources/
Certificate pinning bypass:
grep -r "TrustManager\|HostnameVerifier" app-decompiled/sources/
grep -r "checkServerTrusted" app-decompiled/sources/
C. Understanding App Logic
Find entry points:
# Main activities
grep -r "extends Activity\|extends AppCompatActivity" app-decompiled/sources/
# Application class
grep -r "extends Application" app-decompiled/sources/
# Services
grep -r "extends Service" app-decompiled/sources/
# Broadcast receivers
grep -r "extends BroadcastReceiver" app-decompiled/sources/
Trace network communication:
# Find HTTP client usage
grep -r "HttpURLConnection\|OkHttpClient\|Retrofit" app-decompiled/sources/
# Find API endpoints
grep -r "@GET\|@POST\|@PUT\|@DELETE" app-decompiled/sources/
# Find base URLs
grep -r "baseUrl\|BASE_URL\|API_URL" app-decompiled/sources/
Find authentication logic:
grep -r "login\|Login\|authenticate\|Authorization" app-decompiled/sources/
grep -r "jwt\|JWT\|bearer\|Bearer" app-decompiled/sources/
D. Analyzing Specific Classes
After identifying interesting classes, read them directly:
# View specific class
cat app-decompiled/sources/com/example/app/LoginActivity.java
# Use less for pagination
less app-decompiled/sources/com/example/app/network/ApiClient.java
# Search within specific class
grep "password" app-decompiled/sources/com/example/app/LoginActivity.java
5. GUI Mode (Interactive Analysis)
Launch GUI:
jadx-gui app.apk
GUI features:
- Full-text search: Ctrl+Shift+F (search all code)
- Find usage: Right-click on class/method → "Find usage"
- Go to declaration: Ctrl+Click on any class/method
- Decompilation: Click any class to see Java code
- Save decompiled code: File → Save all
- Export options: File → Export as Gradle project
GUI workflow:
- Open APK with jadx-gui
- Browse package structure in left panel
- Use search (Ctrl+Shift+F) to find keywords
- Click results to view code in context
- Follow cross-references with Ctrl+Click
- Save interesting findings
6. Integration with Other Tools
Combine Jadx with Apktool
Both tools complement each other:
Jadx strengths:
- Readable Java source code
- Easy to understand logic
- Fast searching through code
Apktool strengths:
- Accurate resource extraction
- Smali code (closer to original)
- Can rebuild/repackage APKs
Recommended workflow:
# Use jadx for code analysis
jadx --deobf app.apk -d app-jadx
# Use apktool for resources and smali
apktool d app.apk -o app-apktool
# Analyze both outputs
grep -r "API_KEY" app-jadx/sources/
grep -r "api_key" app-apktool/res/
Common Workflows
Workflow 1: Security Assessment
# 1. Decompile with deobfuscation
jadx --deobf app.apk -d app-decompiled
# 2. Search for hardcoded secrets
echo "[+] Searching for API keys..."
grep -ri "api.*key\|apikey" app-decompiled/sources/ | tee findings-apikeys.txt
echo "[+] Searching for passwords..."
grep -ri "password\|passwd\|pwd" app-decompiled/sources/ | tee findings-passwords.txt
echo "[+] Searching for URLs..."
grep -rE "https?://[^\"]+" app-decompiled/sources/ | tee findings-urls.txt
# 3. Check crypto usage
echo "[+] Checking crypto implementations..."
grep -r "Cipher\|SecretKey\|KeyStore" app-decompiled/sources/ | tee findings-crypto.txt
# 4. Check for insecure storage
echo "[+] Checking storage mechanisms..."
grep -r "SharedPreferences\|SQLite\|openFileOutput" app-decompiled/sources/ | tee findings-storage.txt
# 5. Summary
echo "[+] Analysis complete. Check findings-*.txt files"
Workflow 2: IoT App Analysis
For IoT companion apps, find device communication:
# 1. Decompile
jadx --deobf iot-app.apk -d iot-app-decompiled
# 2. Find device communication
echo "[+] Finding device endpoints..."
grep -rE "https?://[^\"]+" iot-app-decompiled/sources/ | \
grep -v "google\|android\|facebook" | \
tee device-endpoints.txt
# 3. Find API structure
echo "[+] Finding API definitions..."
grep -r "@GET\|@POST\|@PUT" iot-app-decompiled/sources/ | tee api-endpoints.txt
# 4. Find authentication
echo "[+] Finding auth mechanisms..."
grep -r "Authorization\|authentication\|apiKey" iot-app-decompiled/sources/ | tee auth-methods.txt
# 5. Find device discovery
echo "[+] Finding device discovery..."
grep -r "discover\|scan\|broadcast\|mdns" iot-app-decompiled/sources/ | tee device-discovery.txt
# 6. Check for certificate pinning
echo "[+] Checking certificate pinning..."
grep -r "CertificatePinner\|TrustManager" iot-app-decompiled/sources/ | tee cert-pinning.txt
Workflow 3: Quick Credential Check
# Fast decompilation without resources
jadx --no-res --deobf app.apk -d app-code
# Search for common credential patterns
grep -r "username.*password\|user.*pass" app-code/sources/
grep -r "admin\|root\|default.*password" app-code/sources/
grep -r "hardcoded\|TODO.*password\|FIXME.*password" app-code/sources/
Workflow 4: API Endpoint Discovery
# Decompile
jadx app.apk -d app-decompiled
# Find Retrofit/REST API definitions
find app-decompiled/sources -name "*Api*.java" -o -name "*Service*.java" -o -name "*Client*.java"
# Extract all endpoints
grep -r "@GET\|@POST\|@PUT\|@DELETE\|@PATCH" app-decompiled/sources/ | \
sed 's/.*@\(GET\|POST\|PUT\|DELETE\|PATCH\)("\([^"]*\)".*/\1 \2/' | \
sort -u
# Find base URLs
grep -r "baseUrl\|BASE_URL\|API_BASE" app-decompiled/sources/
Workflow 5: Batch Processing Multiple APKs
# Decompile multiple APKs
for apk in *.apk; do
name=$(basename "$apk" .apk)
echo "[+] Processing $apk..."
jadx --no-res --deobf "$apk" -d "decompiled-$name"
# Quick search for secrets
grep -r "api.*key\|password\|secret" "decompiled-$name/sources/" > "findings-$name.txt"
done
echo "[+] All APKs processed. Check findings-*.txt files"
Best Practices
1. Always Use Deobfuscation for Production Apps
# Most production apps are obfuscated
jadx --deobf app.apk -d output
Without --deobf, you'll see code like:
public class a {
public void b(String c) { ... }
}
With --deobf, jadx attempts meaningful names:
public class NetworkClient {
public void sendRequest(String url) { ... }
}
2. Use Multi-threading for Large Apps
# Faster decompilation
jadx -j 8 large-app.apk -d output
3. Skip Resources for Code-Only Analysis
# 3-5x faster when you only need code
jadx --no-res app.apk -d output
4. Search Systematically
Create a search checklist:
- [ ] API keys and secrets
- [ ] Hardcoded credentials
- [ ] URLs and endpoints
- [ ] Crypto implementations
- [ ] Insecure storage
- [ ] WebView vulnerabilities
- [ ] Debug/logging code
- [ ] Commented-out sensitive code
5. Use GUI for Deep Analysis
For complex apps:
- Use CLI for initial decompilation
- Search for interesting patterns
- Open in GUI for detailed exploration
- Use cross-references to trace code flow
6. Combine with Runtime Analysis
Static analysis (jadx) + dynamic analysis:
- Use jadx to find API endpoints
- Test endpoints with curl/burp
- Use jadx to understand auth flow
- Test auth with runtime instrumentation (Frida)
Troubleshooting
Problem: Decompilation fails with errors
Solution: Use fallback mode or show bad code:
jadx --fallback --show-bad-code app.apk -d output
Problem: Code is unreadable (obfuscated)
Solution: Enable deobfuscation:
jadx --deobf app.apk -d output
Problem: Out of memory error
Solution: Increase Java heap size:
export JAVA_OPTS="-Xmx4096m"
jadx app.apk -d output
Or use the built-in option:
jadx -Xmx4096m app.apk -d output
Problem: Decompilation is very slow
Solution: Skip resources or use more threads:
jadx --no-res -j 8 app.apk -d output
Problem: Some methods show "Can't load method"
Solution: Use --show-bad-code to see partial decompilation:
jadx --show-bad-code app.apk -d output
Problem: GUI won't open APK
Solution: Use CLI first to check for errors:
jadx app.apk -d test-output
# If successful, try GUI again
Advanced Features
Export as Gradle Project
jadx --export-gradle app.apk -d app-project
cd app-project
./gradlew build
Creates a buildable Android Studio project.
Generate Deobfuscation Map
jadx --deobf --deobf-use-sourcename app.apk -d output
# Check output/mapping.txt for name mappings
Custom Decompilation Options
# All options combined
jadx \
--deobf \
--deobf-use-sourcename \
--show-bad-code \
--no-imports \
--no-inline-anonymous \
--no-replace-consts \
app.apk -d output
Integration with IoTHackBot Tools
Jadx fits into the IoTHackBot workflow:
-
APK → API Discovery:
- Decompile IoT app with jadx
- Extract API endpoints
- Test endpoints with network tools
-
APK → Credential Extraction:
- Find hardcoded credentials
- Test against IoT devices
- Use with onvifscan, telnetshell
-
APK → Protocol Analysis:
- Understand device communication protocol
- Capture traffic with iotnet
- Replay/modify with custom scripts
-
APK → Device Enumeration:
- Find device discovery mechanisms
- Use wsdiscovery for ONVIF devices
- Use nmap for network scanning
Quick Reference
# Basic decompilation
jadx <apk> -d <output-dir>
# With deobfuscation (recommended)
jadx --deobf <apk> -d <output-dir>
# Fast (no resources)
jadx --no-res <apk> -d <output-dir>
# Multi-threaded
jadx -j <threads> <apk> -d <output-dir>
# Show problematic code
jadx --show-bad-code <apk> -d <output-dir>
# Export as Gradle project
jadx --export-gradle <apk> -d <output-dir>
# GUI mode
jadx-gui <apk>
# Fallback mode
jadx --fallback <apk> -d <output-dir>
Security Analysis Checklist
Use this checklist when analyzing APKs with jadx:
- [ ] Decompile with deobfuscation enabled
- [ ] Search for hardcoded API keys
- [ ] Search for hardcoded credentials
- [ ] Find all HTTP/HTTPS URLs
- [ ] Check crypto implementations (algorithms, key generation)
- [ ] Check certificate pinning implementation
- [ ] Find SharedPreferences usage (storage security)
- [ ] Check WebView security settings
- [ ] Find database operations (SQL injection)
- [ ] Check for debug/logging code
- [ ] Find exported components (from manifest)
- [ ] Check authentication/authorization logic
- [ ] Find file operations (path traversal)
- [ ] Check for native library loading
- [ ] Document all findings
Important Notes
- Jadx produces Java source, which is approximate (not original)
- Some optimizations/obfuscations may produce uncompilable code
- Decompiled code may differ slightly from original source
- Always cross-check findings with runtime analysis
- Jadx works best with apps compiled with standard tools
- Heavily obfuscated/protected apps may have limited decompilation
- Some anti-tampering mechanisms detect decompilation
Security and Ethics
IMPORTANT: Only decompile APKs you own or have permission to analyze.
- Respect intellectual property and licensing
- Follow responsible disclosure for vulnerabilities
- Don't distribute decompiled source code
- Be aware of terms of service and EULAs
- Use for authorized security testing and research only
- Some jurisdictions have laws against reverse engineering
Success Criteria
A successful jadx analysis includes:
- APK successfully decompiled to readable Java code
- Deobfuscation applied (if app was obfuscated)
- All source code searchable and readable
- Security-relevant findings documented
- API endpoints and URLs extracted
- Crypto and authentication logic understood
- Integration points with other systems identified
- Findings verified with runtime testing when possible