FIXED: relative paths

This commit is contained in:
Simone Avogadro
2026-02-02 16:36:48 +01:00
parent 5ec451e352
commit fc9a722359
2 changed files with 25 additions and 25 deletions
@@ -22,7 +22,7 @@ If the user provided a file path as an argument, use that. Otherwise, ask the us
Run the dependency check: Run the dependency check:
```bash ```bash
bash skills/android-reverse-engineering/scripts/check-deps.sh bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/check-deps.sh
``` ```
Parse the output looking for `INSTALL_REQUIRED:` and `INSTALL_OPTIONAL:` lines. Parse the output looking for `INSTALL_REQUIRED:` and `INSTALL_OPTIONAL:` lines.
@@ -30,8 +30,8 @@ Parse the output looking for `INSTALL_REQUIRED:` and `INSTALL_OPTIONAL:` lines.
**If required dependencies are missing**, install them one by one: **If required dependencies are missing**, install them one by one:
```bash ```bash
bash skills/android-reverse-engineering/scripts/install-dep.sh java bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/install-dep.sh java
bash skills/android-reverse-engineering/scripts/install-dep.sh jadx bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/install-dep.sh jadx
``` ```
The install script auto-detects the OS and installs without sudo when possible (user-local install to `~/.local/`). If sudo is needed, it will prompt — if the user declines or sudo is unavailable, the script prints exact manual instructions (exit code 2). Show those instructions to the user and stop. The install script auto-detects the OS and installs without sudo when possible (user-local install to `~/.local/`). If sudo is needed, it will prompt — if the user declines or sudo is unavailable, the script prints exact manual instructions (exit code 2). Show those instructions to the user and stop.
@@ -46,23 +46,23 @@ Run the decompile script on the target file. Choose the engine based on the inpu
- **APK or XAPK** → use jadx first (handles resources natively; XAPK is auto-extracted): - **APK or XAPK** → use jadx first (handles resources natively; XAPK is auto-extracted):
```bash ```bash
bash skills/android-reverse-engineering/scripts/decompile.sh <file> bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/decompile.sh <file>
``` ```
- **JAR/AAR** and Fernflower is available → prefer fernflower for better Java output: - **JAR/AAR** and Fernflower is available → prefer fernflower for better Java output:
```bash ```bash
bash skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower <file> bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower <file>
``` ```
- **If jadx output has warnings** or the user wants the best quality → run both and compare: - **If jadx output has warnings** or the user wants the best quality → run both and compare:
```bash ```bash
bash skills/android-reverse-engineering/scripts/decompile.sh --engine both <file> bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/decompile.sh --engine both <file>
``` ```
For obfuscated apps (if the user mentions it or you detect single-letter package names), add `--deobf`: For obfuscated apps (if the user mentions it or you detect single-letter package names), add `--deobf`:
```bash ```bash
bash skills/android-reverse-engineering/scripts/decompile.sh --deobf <file> bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/decompile.sh --deobf <file>
``` ```
### Step 4: Analyze structure ### Step 4: Analyze structure
@@ -83,4 +83,4 @@ Tell the user what they can do next:
- **Analyze specific classes**: "Point me to a specific class or feature to analyze" - **Analyze specific classes**: "Point me to a specific class or feature to analyze"
- **Re-decompile with Fernflower**: If jadx output has warnings, offer to re-run with `--engine both` for comparison - **Re-decompile with Fernflower**: If jadx output has warnings, offer to re-run with `--engine both` for comparison
Refer to the full skill documentation in `skills/android-reverse-engineering/SKILL.md` for the complete workflow. Refer to the full skill documentation in `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/SKILL.md` for the complete workflow.
@@ -11,10 +11,10 @@ Decompile Android APK, XAPK, JAR, and AAR files using jadx and Fernflower/Vinefl
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: 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:
```bash ```bash
bash skills/android-reverse-engineering/scripts/check-deps.sh bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/check-deps.sh
``` ```
If anything is missing, follow the installation instructions in `skills/android-reverse-engineering/references/setup-guide.md`. If anything is missing, follow the installation instructions in `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/setup-guide.md`.
## Workflow ## Workflow
@@ -25,7 +25,7 @@ Before decompiling, confirm that the required tools are available — and instal
**Action**: Run the dependency check script. **Action**: Run the dependency check script.
```bash ```bash
bash skills/android-reverse-engineering/scripts/check-deps.sh bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/check-deps.sh
``` ```
The output contains machine-readable lines: The output contains machine-readable lines:
@@ -35,7 +35,7 @@ The output contains machine-readable lines:
**If required dependencies are missing** (exit code 1), install them automatically: **If required dependencies are missing** (exit code 1), install them automatically:
```bash ```bash
bash skills/android-reverse-engineering/scripts/install-dep.sh <dep> bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/install-dep.sh <dep>
``` ```
The install script detects the OS and package manager, then: The install script detects the OS and package manager, then:
@@ -54,7 +54,7 @@ Use the decompile wrapper script to process the target file. The script supports
**Action**: Choose the engine and run the decompile script. The script handles APK, XAPK, JAR, and AAR files. **Action**: Choose the engine and run the decompile script. The script handles APK, XAPK, JAR, and AAR files.
```bash ```bash
bash skills/android-reverse-engineering/scripts/decompile.sh [OPTIONS] <file> bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/decompile.sh [OPTIONS] <file>
``` ```
For **XAPK** files (ZIP bundles containing multiple APKs, used by APKPure and similar stores): the script automatically extracts the archive, identifies all APK files inside (base + split APKs), and decompiles each one into a separate subdirectory. The XAPK manifest is copied to the output for reference. For **XAPK** files (ZIP bundles containing multiple APKs, used by APKPure and similar stores): the script automatically extracts the archive, identifies all APK files inside (base + split APKs), and decompiles each one into a separate subdirectory. The XAPK manifest is copied to the output for reference.
@@ -79,7 +79,7 @@ When using `--engine both`, the outputs go into `<output>/jadx/` and `<output>/f
For APK files with Fernflower, the script automatically uses dex2jar as an intermediate step. dex2jar must be installed for this to work. For APK files with Fernflower, the script automatically uses dex2jar as an intermediate step. dex2jar must be installed for this to work.
See `references/jadx-usage.md` and `references/fernflower-usage.md` for the full CLI references. See `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/jadx-usage.md` and `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/fernflower-usage.md` for the full CLI references.
### Phase 3: Analyze Structure ### Phase 3: Analyze Structure
@@ -124,7 +124,7 @@ Follow execution paths from user-facing entry points down to network calls.
5. **Handle obfuscated code**: When class names are mangled, use string literals and library API calls as anchors. Retrofit annotations and URL strings are never obfuscated. 5. **Handle obfuscated code**: When class names are mangled, use string literals and library API calls as anchors. Retrofit annotations and URL strings are never obfuscated.
See `references/call-flow-analysis.md` for detailed techniques and grep commands. See `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/call-flow-analysis.md` for detailed techniques and grep commands.
### Phase 5: Extract and Document APIs ### Phase 5: Extract and Document APIs
@@ -133,19 +133,19 @@ Find all API endpoints and produce structured documentation.
**Action**: Run the API search script for a broad sweep. **Action**: Run the API search script for a broad sweep.
```bash ```bash
bash skills/android-reverse-engineering/scripts/find-api-calls.sh <output>/sources/ bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/find-api-calls.sh <output>/sources/
``` ```
Targeted searches: Targeted searches:
```bash ```bash
# Only Retrofit # Only Retrofit
bash skills/android-reverse-engineering/scripts/find-api-calls.sh <output>/sources/ --retrofit bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/find-api-calls.sh <output>/sources/ --retrofit
# Only hardcoded URLs # Only hardcoded URLs
bash skills/android-reverse-engineering/scripts/find-api-calls.sh <output>/sources/ --urls bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/find-api-calls.sh <output>/sources/ --urls
# Only auth patterns # Only auth patterns
bash skills/android-reverse-engineering/scripts/find-api-calls.sh <output>/sources/ --auth bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/find-api-calls.sh <output>/sources/ --auth
``` ```
Then, for each discovered endpoint, read the surrounding source code to extract: Then, for each discovered endpoint, read the surrounding source code to extract:
@@ -171,7 +171,7 @@ Then, for each discovered endpoint, read the surrounding source code to extract:
- **Called from**: `LoginActivity → LoginViewModel → UserRepository → ApiService` - **Called from**: `LoginActivity → LoginViewModel → UserRepository → ApiService`
``` ```
See `references/api-extraction-patterns.md` for library-specific search patterns and the full documentation template. See `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/api-extraction-patterns.md` for library-specific search patterns and the full documentation template.
## Output ## Output
@@ -184,8 +184,8 @@ At the end of the workflow, deliver:
## References ## References
- `references/setup-guide.md` — Installing Java, jadx, Fernflower/Vineflower, dex2jar, and optional tools - `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/setup-guide.md` — Installing Java, jadx, Fernflower/Vineflower, dex2jar, and optional tools
- `references/jadx-usage.md` — jadx CLI options and workflows - `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/jadx-usage.md` — jadx CLI options and workflows
- `references/fernflower-usage.md` — Fernflower/Vineflower CLI options, when to use, APK workflow - `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/fernflower-usage.md` — Fernflower/Vineflower CLI options, when to use, APK workflow
- `references/api-extraction-patterns.md` — Library-specific search patterns and documentation template - `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/api-extraction-patterns.md` — Library-specific search patterns and documentation template
- `references/call-flow-analysis.md` — Techniques for tracing call flows in decompiled code - `${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/references/call-flow-analysis.md` — Techniques for tracing call flows in decompiled code