| name | apk-reverse-sdk-gen |
| description | APK逆向分析SDK生成器 - 输入APK自动执行解包、反编译、脱壳检测与处理、加密参数分析、接口分析、代码混淆分析,生成完整分析报告和多语言SDK(Python/Java/JS),支持apktool+jadx+Frida+FART全工具链,支持动态调试与Hook注入 |
APK Reverse Engineering SDK Generator
概述
这个skill实现了一个完整的APK逆向分析与SDK生成工作流:
- 输入APK → 自动检测环境并安装依赖
- 解包反编译 → apktool解包 + jadx反编译DEX
- 脱壳检测 → 自动检测加壳并启动FART脱壳流程
- 加密参数分析 → 分析API加密算法、签名逻辑
- 接口分析 → 提取所有HTTP接口并生成调用SDK
- 混淆分析 → 分析代码混淆策略并还原关键逻辑
- 完整输出 → 分析报告 + SDK文档 + 多语言SDK(Python/Java/JS)
流程图
整体工作流程
flowchart TB
A[用户输入APK路径] --> A0[环境检测与安装]
A0 --> A0R{环境OK?}
A0R -->|否| A0I[自动安装依赖]
A0I --> A0C[再次检测]
A0C --> A0R
A0R -->|是| B[询问配置项]
B --> C[解析APK包名]
C --> D[创建工作目录]
D --> E[复制scripts和hooks]
E --> F[创建project-config.json]
F --> G[APK解包apktool]
G --> H[DEX反编译jadx]
H --> I[脱壳检测]
I --> J{存在加壳?}
J -->|是| K[FART脱壳流程]
K --> L[获取脱壳DEX]
L --> M[重新反编译]
J -->|否| M
M --> N[加密参数检测]
N --> O{存在加密?}
O -->|是| P[加密算法分析]
P --> Q[Frida Hook调试]
Q --> R[定位加密函数]
R --> S[还原加密逻辑]
O -->|否| T[直接SDK生成]
S --> U[接口提取与分析]
T --> U
U --> V[混淆代码分析]
V --> W[生成多语言SDK]
W --> X[SDK验证测试]
X --> Y[输出完整文档]
Y --> Z[完成]
脱壳流程详情
flowchart TB
A[脱壳检测] --> B{检测壳类型}
B -->|360加固| C[使用FART脱壳]
B -->|梆梆加固| C
B -->|爱加密| C
B -->|腾讯御安全| C
B -->|其他壳| C
B -->|无壳| D[跳过脱壳]
C --> E[启动Frida]
E --> F[注入脱壳脚本]
F --> G[运行APP触发加载]
G --> H[dump DEX文件]
H --> I[修复DEX]
I --> J[反编译脱壳DEX]
J --> K[对比原始DEX]
加密分析流程
flowchart TB
A[加密参数检测] --> B[扫描API请求代码]
B --> C[提取加密关键词]
C --> D{加密类型判断}
D -->|MD5/SHA| E[哈希算法分析]
D -->|AES/DES| F[对称加密分析]
D -->|RSA| G[非对称加密分析]
D -->|自定义| H[自定义算法分析]
E --> I[Frida Hook定位]
F --> I
G --> I
H --> I
I --> J[获取加密参数]
J --> K[还原加密逻辑]
K --> L[生成签名SDK]
触发条件
- 用户输入
/apk-reverse 命令
- 用户提供
.apk 文件路径且上下文暗示需要逆向分析
- 用户提到"APK逆向"、"安卓逆向"、"脱壳"等关键词
参考文档索引
按需引入以下参考文档:
前置配置询问
必须首先询问用户以下配置项(使用 AskUserQuestion 工具):
第一批询问
- APK路径: 如果用户未提供,询问APK文件完整路径
- SDK语言: Python / Java / JavaScript(多选)
- 脱壳方式: 自动检测并处理(推荐) / 手动选择脱壳工具 / 跳过脱壳
- 动态调试: 启用Frida调试 / 仅静态分析
工作流程
Phase -1: 环境检测与安装(前置操作)
必须在所有Phase之前执行:
python scripts/check-environment.py
python scripts/check-environment.py --auto-install
检测内容:
- Java/JDK 版本 (需要 >= 11)
- apktool (APK解包工具)
- jadx (DEX反编译工具)
- Frida (动态调试框架)
- FART (脱壳工具)
- Python 必需包: frida, frida-tools, pycryptodome, jadx-wrapper
- Android 设备连接状态 (动态调试需要)
Phase 0: 前置配置与工作目录初始化
参考: workspace-structure.md
- 验证APK文件存在
- 解析APK包名(从APK中提取或生成)
- 创建工作目录
apk-projects/{package_name}/
- 初始化子目录结构
- 复制脚本和Hook文件
- 创建配置文件
project-config.json
Phase 1: APK解包与初步分析
参考: apk-tools-guide.md
cd apk-projects/{package_name}
python scripts/apk-unpacker.py --apk "{apk_path}" --output "./unpacked"
python scripts/apk-info-extractor.py --apk "{apk_path}"
输出:
unpacked/ - APK解包目录
apk-info.json - APK基本信息(包名、版本、权限、组件等)
Phase 2: DEX反编译与脱壳检测
参考: apk-tools-guide.md | unpacking-detection.md
python scripts/dex-decompiler.py --dex-dir "./unpacked" --output "./decompiled"
python scripts/packer-detector.py --apk "{apk_path}" --decompiled "./decompiled"
脱壳处理(检测到加壳时):
python scripts/fart-unpacker.py --apk "{apk_path}" --output "./unpacked-dex"
python scripts/dex-decompiler.py --dex-dir "./unpacked-dex" --output "./decompiled-real"
Phase 3: 加密参数分析与逆向
参考: encryption-analysis.md | frida-hook-guide.md
python scripts/crypto-param-detector.py --decompiled "./decompiled" --output "./analysis/crypto-analysis.json"
python scripts/frida-hook-injector.py --apk "{apk_path}" --hook "crypto-hook.js" --output "./hook-output"
Hook脚本列表:
| Hook脚本 | 功能描述 |
|---|
crypto-hook.js | 加密函数拦截(MD5/SHA/AES/DES等) |
api-hook.js | HTTP请求拦截 |
native-hook.js | Native函数调用拦截 |
string-hook.js | 字符串操作追踪 |
all-in-one-hook.js | 综合Hook(推荐) |
Phase 4: 接口提取与混淆分析
参考: api-extraction.md | obfuscation-analysis.md
python scripts/api-extractor.py --decompiled "./decompiled" --output "./analysis/api-list.json"
python scripts/obfuscation-analyzer.py --decompiled "./decompiled" --output "./analysis/obfuscation-report.json"
Phase 5: SDK生成与验证
参考: sdk-best-practices.md | output-specification.md
python scripts/sdk-generator.py --analysis "./analysis" --languages "python,java,js" --output "./output/sdk"
python scripts/sdk-validator.py --sdk-path "./output/sdk/python" --test-config "./analysis/api-list.json"
输出完整文档:
output/analysis-report.md - 逆向分析报告
output/sdk-document.md - SDK接口说明文档
output/encryption-analysis.md - 加密算法分析报告
output/api-list.md - API接口清单
output/README.md - 使用说明
output/sdk/{language}/ - SDK代码
输出物规范
分析报告结构
# APK逆向分析报告
## 1. APK基本信息
- 包名、版本、签名信息
- 权限清单、组件清单
## 2. 脱壳分析
- 加壳检测结果
- 脱壳方法与结果
## 3. 加密参数分析
- 加密算法类型
- 加密参数来源
- 签名逻辑还原
## 4. API接口分析
- 接口清单
- 参数说明
- 调用示例
## 5. 代码混淆分析
- 混淆策略
- 关键代码还原
## 6. SDK使用说明
- 安装方法
- 调用示例
SDK代码规范
Python SDK示例:
class APIClient:
"""自动生成的API调用SDK"""
BASE_URL = "https://api.example.com"
def __init__(self, device_id: str = None):
self.device_id = device_id or self._generate_device_id()
self.session = requests.Session()
def _sign(self, params: dict) -> str:
"""签名算法还原"""
...
def request_api(self, endpoint: str, params: dict) -> dict:
"""通用API请求"""
params["sign"] = self._sign(params)
response = self.session.post(f"{self.BASE_URL}/{endpoint}", json=params)
return response.json()
环境准备
详细依赖: tech-dependencies.md
sudo apt install openjdk-11-jdk
brew install openjdk@11
pip install frida frida-tools
pip install -r requirements.txt
快速开始
python scripts/init-workspace.py --apk "path/to/app.apk"
cd apk-projects/com.example.app
python scripts/apk-unpacker.py --apk "path/to/app.apk"
python scripts/dex-decompiler.py --dex-dir "./unpacked"
python scripts/crypto-param-detector.py --decompiled "./decompiled"
python scripts/sdk-generator.py --analysis "./analysis" --languages "python"
使用示例
用户: /apk-reverse path/to/app.apk
Skill执行:
[Phase 0] 初始化工作目录 → apk-projects/com.example.app/
[Phase 0] 创建项目配置 → project-config.json
[Phase 1] APK解包 → unpacked/ 目录
[Phase 1] APK信息 → 包名: com.example.app, 版本: 1.2.3
[Phase 2] DEX反编译 → decompiled/ 目录
[Phase 2] 脱壳检测 → 检测到360加固
[Phase 2] FART脱壳 → 获取真实DEX
[Phase 3] 加密检测 → 发现sign参数使用MD5
[Phase 3] Frida Hook → 定位加密函数在 CryptoHelper.java
[Phase 4] API提取 → 15个HTTP接口
[Phase 4] 混淆分析 → ProGuard混淆
[Phase 5] SDK生成 → Python/Java/JS SDK
[Phase 5] 输出完成 → analysis-report.md, sdk-document.md, README.md
相关资源
Skill源目录
- 初始化脚本:
scripts/init-workspace.py
- 脚本模板:
scripts/
- Hook模板:
hooks/
- SDK模板:
assets/
- 参考文档:
references/
项目工作目录
初始化后复制到 apk-projects/{package_name}/:
- scripts/ - 所有分析脚本
- hooks/ - Frida Hook脚本
- analysis/ - 分析结果目录
- output/ - 输出SDK目录