
Android APK/XAPK/JAR/AARファイルを逆コンパイルし、jadxを使用してHTTP API、認証パターン、コールフローを抽出します。また、セキュリティ研究やペネトレーションテストのためのR8耐性のあるKotlin名の復元機能を備えています。
Android APK/XAPK/JAR/AAR ファイルをデコンパイルし、アプリが使用する HTTP API を抽出する Claude Code スキルです — Retrofit エンドポイント、OkHttp 呼び出し、ハードコードされた URL、認証パターン — これにより、元のソースコードなしでそれらを文書化し再現できます。
Kotlin のファーストクラスサポート: 現代の Android アプリは Kotlin/KMP であり、R8 によって強力に難読化されています。このスキルは、R8 が削除できないメタデータから 元の Kotlin クラス名 を復元し、Ktor、Apollo (GraphQL)、Koin から API を抽出します — 従来の Retrofit/OkHttp スタックだけでなく。以下の Kotlin 名の復元 を参照してください。
Windows / PowerShell サポート (実験的): bash スクリプトと並ぶ
*.ps1スクリプトは最近のコミュニティ貢献であり、まだ安定化中です。問題が発生した場合は、この リポジトリで issue を開いてください (貢献者のアップストリームフォークではありません): PowerShell スクリプトはここで @SimoneAvogadro によって保守されています。
| 機能 | 説明 |
|---|---|
| フィンガープリント優先 (フェーズ 0) | APK/XAPK を数秒でトリアージ — 完全なデコンパイルに時間を費やす 前に、フレームワーク (Flutter / React Native / Cordova / Xamarin / ネイティブ Kotlin)、HTTP スタック、難読化レベル、ネイティブライブラリを検出 |
| デコンパイル | jadx と Fernflower/Vineflower を使用して APK、XAPK、JAR、AAR ファイルを処理 (単一エンジンまたは並列比較) |
| Kotlin 名の復元 | R8 が削除できない Kotlin メタデータを使用して、R8 難読化バイナリから元の *Repository / *ViewModel / *UseCase クラス名を再構築 |
| API の抽出 | Retrofit、OkHttp、Volley および現代の Kotlin/KMP スタック: Ktor、Apollo (GraphQL)、Koin DI — エンドポイント、ハードコードされた URL、認証ヘッダー、トークン、HMAC リクエスト署名スキーム |
| 呼び出しフローの追跡 | Activity/Fragment から ViewModel、リポジトリを経て HTTP 呼び出しまで |
| 構造の分析 | マニフェスト、パッケージ、アーキテクチャパターン |
| 難読化への対応 | R8 耐性のあるパス/URL 抽出と、ProGuard/R8 出力をナビゲートするための戦略 |
必須:
オプション (推奨):
詳細なインストール手順については plugins/android-reverse-engineering/skills/android-reverse-engineering/references/setup-guide.md を参照してください。
Claude Code 内で以下を実行:
/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
スキルは今後のすべてのセッションで永続的に利用可能になります。
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git
次に Claude Code で:
/plugin marketplace add /path/to/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
/decompile path/to/app.apk
これにより完全なワークフローが実行されます: 依存関係チェック、デコンパイル、初期構造分析。
スキルは以下のようなフレーズで起動します:
スクリプトは単独でも使用できます:
# Check dependencies
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh
# Install a missing dependency (auto-detects OS and package manager)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh jadx
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh vineflower
# Fingerprint an APK/XAPK BEFORE decompiling (Phase 0 triage):
# framework, HTTP stack, obfuscation level, native libs, notable SDKs
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/fingerprint.sh app.apk
# Decompile APK with jadx (default)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk
# Decompile XAPK (auto-extracts and decompiles each APK inside)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app-bundle.xapk
# Decompile with Fernflower
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower library.jar
# Run both engines and compare
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk
# Find API calls — defaults to a full scan across every supported stack
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --retrofit
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --urls
# Modern Kotlin/KMP stacks and obfuscation-resistant extraction
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --ktor # Ktor client
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --apollo # Apollo / GraphQL
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --paths # quoted path literals that survive R8 inlining
実際の Kotlin/KMP アプリのほとんどは R8 を通して出荷されるため、デコンパイルされたクラスは
a.b.c として出力されます。R8 は JVM シンボルをリネームしますが、Kotlin
メタデータ文字列を削除することはできません — Kotlin ランタイム (リフレクション、コルーチン) は実行時に元の完全修飾名を必要とします。このスキルはそれらの
@DebugMetadata / @Metadata アノテーションをマイニングして、難読化 → 実名 のクラス名マップを再構築します。典型的なアプリでは、実際に読みたい
*Repository / *ViewModel / *UseCase / *Impl クラスの約 100% を復元します。
# 1. Build the mapping from the decompiled sources
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/recover-kotlin-names.sh output/sources/ output/names/
# → output/names/mapping.tsv, mapping.json, by_package/
# 2. Query it: resolve an obfuscated name, search by real name, or grep
# the sources with each hit annotated with its recovered class name
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ LoginRepository
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ -o a.b.c
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ --grep 'login' output/sources/