$npx -y skills add SimoneAvogadro/android-reverse-engineering-skill --skill android-reverse-engineeringDecompile Android APK, XAPK, JAR, and AAR files using jadx or Fernflower/Vineflower. Reverse engineer Android apps, extract HTTP API endpoints (Retrofit, OkHttp, Volley), and trace call flows from UI to network layer. Use when the user wants to decompile, analyze, or reverse engi
| 1 | # Android Reverse Engineering |
| 2 | |
| 3 | Decompile Android APK, XAPK, JAR, and AAR files using jadx and Fernflower/Vineflower, trace call flows through application code and libraries, and produce structured documentation of extracted APIs. Two decompiler engines are supported — jadx for broad Android coverage and Fernflower for higher-quality output on complex Java code — and can be used together for comparison. |
| 4 | |
| 5 | ## Prerequisites |
| 6 | |
| 7 | This skill requires **Java JDK 17+** and **jadx** to be installed. **Fernflower/Vineflower** and **dex2jar** are optional but recommended for better decompilation quality. Run the dependency checker to verify: |
| 8 | |
| 9 | ```bash |
| 10 | bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/check-deps.sh |
| 11 | ``` |
| 12 | |
| 13 | On Windows (PowerShell): |
| 14 | ```powershell |
| 15 | & "${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/check-deps.ps1" |
| 16 | ``` |
| 17 | |
| 18 | If anything is missing, follow the installation instructions in `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/setup-guide.md`. |
| 19 | |
| 20 | ## Workflow |
| 21 | |
| 22 | ### Phase 0: Fingerprint the App (recommended before anything else) |
| 23 | |
| 24 | Before installing tools or decompiling, run a fast triage to determine what |
| 25 | kind of app you are looking at. **Decompiling Java is mostly useless for |
| 26 | Flutter, React Native, Cordova/Capacitor, and Xamarin apps** — the real code |
| 27 | lives elsewhere. The fingerprint script tells you which. |
| 28 | |
| 29 | ```bash |
| 30 | bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/fingerprint.sh <file.apk|file.xapk> |
| 31 | ``` |
| 32 | |
| 33 | It prints, in one screen: |
| 34 | |
| 35 | - **Mobile framework** (Flutter / React Native / Cordova / Xamarin / Native Kotlin / etc.) with the file marker that triggered the verdict. |
| 36 | - **HTTP stack** (Retrofit, OkHttp, Ktor, Apollo, Volley) detected via DEX string scan — works even when class names are obfuscated. |
| 37 | - **DI / serialization** signals (Hilt, Dagger, Koin, kotlinx.serialization, Moshi, Gson, Jackson). |
| 38 | - **Obfuscation level** estimate based on root-level short-named packages. |
| 39 | - **Notable third-party SDKs** (AppsFlyer, Datadog, Sentry, Firebase, payment SDKs, support/chat SDKs, etc.). |
| 40 | - **Consolidated native libraries** across the base APK and all splits — XAPK split bundles often place `.so` files in `config.<abi>.apk`, not in `base.apk`. |
| 41 | - **Recommended next step**, which differs by framework (e.g. for Flutter the script suggests `blutter` / `strings libapp.so` rather than jadx). |
| 42 | |
| 43 | If the fingerprint says the app is Flutter / RN / Cordova / Xamarin, **stop** |
| 44 | and switch to the framework-appropriate tooling. Phases 1–5 below assume a |
| 45 | native (Java/Kotlin) Android app. |
| 46 | |
| 47 | ### Phase 1: Verify and Install Dependencies |
| 48 | |
| 49 | Before decompiling, confirm that the required tools are available — and install any that are missing. |
| 50 | |
| 51 | **Action**: Run the dependency check script. |
| 52 | |
| 53 | ```bash |
| 54 | bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/check-deps.sh |
| 55 | ``` |
| 56 | |
| 57 | On Windows (PowerShell): |
| 58 | ```powershell |
| 59 | & "${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/check-deps.ps1" |
| 60 | ``` |
| 61 | |
| 62 | The output contains machine-readable lines: |
| 63 | - `INSTALL_REQUIRED:<dep>` — must be installed before proceeding |
| 64 | - `INSTALL_OPTIONAL:<dep>` — recommended but not blocking |
| 65 | |
| 66 | **If required dependencies are missing** (exit code 1), install them automatically: |
| 67 | |
| 68 | ```bash |
| 69 | bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/install-dep.sh <dep> |
| 70 | ``` |
| 71 | |
| 72 | On Windows (PowerShell): |
| 73 | ```powershell |
| 74 | & "${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/install-dep.ps1" <dep> |
| 75 | ``` |
| 76 | |
| 77 | The install script detects the OS and package manager, then: |
| 78 | - Installs without sudo when possible (downloads to `~/.local/share/`, symlinks in `~/.local/bin/`) |
| 79 | - Uses sudo and the system package manager when necessary (apt, dnf, pacman) |
| 80 | - If sudo is needed but unavailable or the user declines, it prints the exact manual command and exits with code 2 — show these instructions to the user |
| 81 | |
| 82 | **Windows notes**: The PowerShell install script uses `winget`, `scoop`, or `choco` (in that order). If none are available, it downloads directly to `%USERPROFILE%\.local\share\` and adds the directory to the user's PATH. After running `install-dep.ps1`, the PATH is persisted but the current terminal session may not see it. The `check-deps.ps1` and `decompile.ps1` scripts automatically refresh PATH from the user environment, so re-running them will find newly ins |