incogbyte/android-reverse-engineering-claude-skill
GitHub: incogbyte/android-reverse-engineering-claude-skill
一个集成 jadx 和 Fernflower 的 Claude Code 技能,用于自动化反编译安卓应用并提取 API 端点、分析安全模式和生成结构化报告。
Stars: 0 | Forks: 0
# Android 逆向工程 - Claude Code Skill
**作者:** [incogbyte](https://github.com/incogbyte)
这是一个用于自动化 Android 应用逆向工程的 Claude Code 技能。它可以反编译 APK、XAPK、AAB、DEX、JAR 和 AAR 文件,提取 HTTP 端点(Retrofit、OkHttp、Volley、GraphQL、WebSocket),追踪调用流,分析安全模式,并记录发现的 API。
## 此技能的功能
- **反编译** APK、XAPK、AAB、DEX、JAR 和 AAR:使用 jadx 或 Fernflower/Vineflower(可单独或并行对比使用)
- **提取 HTTP API**:Retrofit 端点、OkHttp 调用、Volley、GraphQL 查询/变更、WebSocket 连接、硬编码 URL、身份验证标头
- **追踪调用流**:从 Activities/Fragments 到网络调用,经 ViewModels、Repositories、coroutines/Flow 和 RxJava 链
- **分析应用结构**:AndroidManifest、包结构、架构模式(MVP、MVVM、Clean Architecture)
- **审计安全性**:证书锁定、禁用 SSL 验证、暴露的密钥、调试标志、弱加密
- **处理混淆代码**:应对 ProGuard/R8 输出的策略,使用字符串和注解作为锚点
- **生成报告**:包含所有发现的结构化 Markdown 报告
## 所需工具
### 必备
| 工具 | 最低版本 | 用途 |
|---|---|---|
| **Java JDK** | 17+ | jadx 和 Fernflower 的运行时 |
| **jadx** | any | 主反编译器(APK/DEX/JAR/AAR 转 Java) |
### 可选(推荐)
| 工具 | 用途 |
|---|---|
| **Vineflower** (Fernflower fork) | 对 lambda、泛型和复杂 Java 代码提供更高质量的反编译 |
| **dex2jar** | 将 DEX 转换为 JAR(Fernflower 处理 APKs/DEX 文件时需要) |
| **bundletool** | 将 AAB (App Bundle) 转换为 APK 以便反编译 |
| **apktool** | 在 jadx 失败时解码资源(XML、drawables) |
| **adb** | 直接从连接的 Android 设备提取 APK |
### 如何安装工具
该技能包含一个脚本,可自动检测操作系统和包管理器:
```
# 检查已安装和缺失的组件
bash scripts/check-deps.sh
# 单独安装依赖项(检测 brew/apt/dnf/pacman)
bash scripts/install-dep.sh java
bash scripts/install-dep.sh jadx
bash scripts/install-dep.sh vineflower
bash scripts/install-dep.sh dex2jar
bash scripts/install-dep.sh bundletool
```
脚本会尽可能在无 sudo 权限下安装(本地下载到 `~/.local/`)。当需要 sudo 时,它会请求确认。如果无法安装,它会打印手动说明。
#### 手动安装
**Java JDK 17+:**
```
# macOS
brew install openjdk@17
# Ubuntu/Debian
sudo apt install openjdk-17-jdk
# Fedora
sudo dnf install java-17-openjdk-devel
# Arch
sudo pacman -S jdk17-openjdk
```
**jadx:**
```
# macOS/Linux (Homebrew)
brew install jadx
# 或直接从 GitHub 下载:
# https://github.com/skylot/jadx/releases/latest
# 解压并将 bin/ 添加到 PATH
```
**Vineflower (Fernflower fork):**
```
# macOS (Homebrew)
brew install vineflower
# 或下载 JAR:
# https://github.com/Vineflower/vineflower/releases/latest
# 保存 JAR 并设置:
export FERNFLOWER_JAR_PATH="$HOME/vineflower/vineflower.jar"
```
**dex2jar:**
```
# macOS (Homebrew)
brew install dex2jar
# 或下载:
# https://github.com/pxb1988/dex2jar/releases/latest
# 解压并添加到 PATH
```
**bundletool:**
```
# macOS (Homebrew)
brew install bundletool
# 或下载 JAR:
# https://github.com/google/bundletool/releases/latest
# 保存并设置:
export BUNDLETOOL_JAR_PATH="$HOME/bundletool/bundletool.jar"
```
## 技能安装
### 通过 GitHub(推荐)
在 Claude Code 中,添加市场并安装:
```
/plugin marketplace add incogbyte/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
```
### 通过本地克隆
```
git clone https://github.com/incogbyte/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
```
### 快速测试(无需安装)
直接为当前会话加载插件:
```
claude --plugin-dir /path/to/android-reverse-engineering-skill/plugins/android-reverse-engineering
```
## 使用方法
### /decompile 命令
```
/decompile path/to/app.apk
```
运行完整流程:检查依赖、反编译并分析应用结构。
### 自然语言
该技能会在出现以下短语时自动激活:
- “Decompile this APK”(反编译此 APK)
- “Reverse engineer this Android app”(逆向工程此 Android 应用)
- “Extract the API endpoints from this app”(从此应用提取 API 端点)
- “Follow the call flow from LoginActivity”(追踪来自 LoginActivity 的调用流)
- “Analyze this AAR library”(分析此 AAR 库)
- “Find the hardcoded URLs in this APK”(在此 APK 中查找硬编码 URL)
- “Decompile this AAB file”(反编译此 AAB 文件)
- “Audit the security of this app”(审计此应用的安全性)
- “Find GraphQL endpoints in this APK”(在此 APK 中查找 GraphQL 端点)
- “Check for certificate pinning”(检查证书锁定)
### 独立脚本
这些脚本可以直接在 Claude Code 之外使用:
```
# 使用 jadx 反编译(默认)
bash scripts/decompile.sh app.apk
# 反编译 XAPK(提取并反编译每个内部 APK)
bash scripts/decompile.sh app-bundle.xapk
# 反编译 AAB(使用 bundletool 提取通用 APK)
bash scripts/decompile.sh app-bundle.aab
# 直接反编译 DEX 文件
bash scripts/decompile.sh classes.dex
# 使用 Fernflower 反编译(更适合 JAR)
bash scripts/decompile.sh --engine fernflower library.jar
# 使用两种引擎反编译并进行比较
bash scripts/decompile.sh --engine both --deobf app.apk
# 仅反编译代码(无资源,速度更快)
bash scripts/decompile.sh --no-res app.apk
# 在反编译代码中搜索 API 调用(所有模式)
bash scripts/find-api-calls.sh output/sources/
# 搜索带有上下文行以提高可读性
bash scripts/find-api-calls.sh output/sources/ --context 3
# 仅搜索 Retrofit 端点
bash scripts/find-api-calls.sh output/sources/ --retrofit
# 仅搜索硬编码 URL
bash scripts/find-api-calls.sh output/sources/ --urls
# 搜索身份验证模式
bash scripts/find-api-calls.sh output/sources/ --auth
# 搜索 Kotlin coroutines/Flow 模式
bash scripts/find-api-calls.sh output/sources/ --kotlin
# 搜索 RxJava 模式
bash scripts/find-api-calls.sh output/sources/ --rxjava
# 搜索 GraphQL queries/mutations
bash scripts/find-api-calls.sh output/sources/ --graphql
# 搜索 WebSocket 连接
bash scripts/find-api-calls.sh output/sources/ --websocket
# 安全审计(cert pinning、暴露的秘密、debug flags、加密)
bash scripts/find-api-calls.sh output/sources/ --security
# 完整分析,包含 Markdown 报告、上下文和去重
bash scripts/find-api-calls.sh output/sources/ --context 3 --dedup --report report.md
```
### decompile.sh 选项
| 选项 | 描述 |
|---|---|
| `-o ` | 输出目录(默认:`-decompiled`) |
| `--deobf` | 启用反混淆(重命名混淆的类/方法) |
| `--no-res` | 跳过资源解码(更快) |
| `--engine ENGINE` | `jadx`(默认)、`fernflower` 或 `both` |
### find-api-calls.sh 选项
| 选项 | 描述 |
|---|---|
| `--retrofit` | 仅搜索 Retrofit 注解 |
| `--okhttp` | 仅搜索 OkHttp 模式 |
| `--volley` | 仅搜索 Volley 模式 |
| `--urls` | 仅搜索硬编码 URL |
| `--auth` | 仅搜索身份验证相关模式 |
| `--kotlin` | 仅搜索 Kotlin coroutines/Flow 模式 |
| `--rxjava` | 仅搜索 RxJava 模式 |
| `--graphql` | 仅搜索 GraphQL 模式 |
| `--websocket` | 仅搜索 WebSocket 模式 |
| `--security` | 仅搜索安全模式(证书锁定、密钥、调试标志、加密) |
| `--all` | 搜索所有模式(默认) |
| `--context N` | 显示匹配项周围 N 行上下文 |
| `--dedup` | 按端点/URL 去重结果 |
| `--report FILE` | 将结果导出为结构化 Markdown 报告 |
### 何时使用各引擎
| 场景 | 推荐引擎 |
|---|---|
| 对任何 APK/AAB 的初步分析 | `jadx`(更快,能解码资源) |
| JAR/AAR 库分析 | `fernflower`(更好的 Java 输出) |
| jadx 有警告或代码损坏 | `both`(对比并为每个类选择最佳结果) |
| 复杂 lambda、泛型、流 | `fernflower` |
| 大型 APK 的快速概览 | `jadx --no-res` |
| DEX 文件分析 | `jadx`(原生支持)或 `fernflower`(通过 dex2jar) |
## 仓库结构
```
android-reverse-engineering-skill/
├── .claude-plugin/
│ └── marketplace.json
├── plugins/
│ └── android-reverse-engineering/
│ ├── .claude-plugin/
│ │ └── plugin.json
│ ├── skills/
│ │ └── android-reverse-engineering/
│ │ ├── SKILL.md
│ │ ├── references/
│ │ │ ├── setup-guide.md
│ │ │ ├── jadx-usage.md
│ │ │ ├── fernflower-usage.md
│ │ │ ├── api-extraction-patterns.md
│ │ │ └── call-flow-analysis.md
│ │ └── scripts/
│ │ ├── check-deps.sh
│ │ ├── install-dep.sh
│ │ ├── decompile.sh
│ │ └── find-api-calls.sh
│ └── commands/
│ └── decompile.md
├── LICENSE
└── README.md
```
标签:AAB 处理, Android 应用安全, Android 逆向工程, API 提取, APK 反编译, Claude Code Skill, Decompiler, DEX 转换, DNS 反向解析, Fernflower, GraphQL, IP 地址批量处理, JADX, Java 反编译, JS文件枚举, Mobile Security, OkHttp, ProGuard 混淆分析, R8 混淆, Retrofit, SSL Pinning 绕过, Vineflower, WebSocket, 云安全监控, 依赖分析, 安全漏洞检测, 应用安全, 服务器监控, 网络流量分析, 自动化安全工具, 静态分析