skill
MobileRE-Skill
AI Agent 驱动的移动端逆向技能集:Frida hook、一键脱壳、反检测绕过、内存 DEX dump、Ghidra MCP 符号/结构恢复。AI-agent skill system for mobile reverse engineering.
Set up
Skills are installed by placing their folder where your agent loads skills.
Install instructions come from the README
Skills do not use an MCP config. Follow the steps in the README below; one-click install arrives with accounts.
README
synced Oct 14, 2026MobileRE-Skill — 综合移动端逆向分析 Agent 技能集
一个让 AI Agent(Kilo)真正"会逆向"的完整技能系统 —— 不只是 Frida 脚本,而是覆盖静态分析、动态分析、脱壳、反检测、Native 逆向、安全合规的完整逆向工作流。
English README · English
如果这个项目对你有帮助,欢迎 ⭐ Star 支持!
使用场景
你只需要用一句话描述需求,AI 按决策树自动完成整个分析流程:
| 场景 | 一句话需求示例 | AI 会做什么 |
|---|---|---|
| 🎯 加固脱壳 | "帮我脱壳这个 App" | 多种方式按场景选择:一键脱壳(默认回填/修复/去重/方法体标记);或内存 DEX dump(panda/mem 双 dumper,ptrace-free,反调试下更隐蔽) |
| 🔐 加密分析 | "看下这个 App 的加密算法和密钥" | Java + Native 双层加解密自吐:算法/密钥/IV/明文;签名/自研/魔改算法也能还原并离线复算 |
| 🛡️ 反检测绕过 | "挂上 Frida 就闪退,帮我绕过" | 6 阶段 Pipeline:定位检测 SO → 抢 init_array → 保活 → NOP 闪退函数 |
| 🔍 行为摸底 | "这个 App 偷偷干了什么" | 文件/网络/线程/进程/Intent 全程监控 + 内核文件事件视角(不注入、免 Frida,看"谁碰了什么文件"),输出行为画像 |
| 🧩 Dex2C/VMP 分析 | "这个加密是 native 的,帮我分析逻辑" | 定位 so+offset,hook 优先 / unidbg 复现 / Ghidra 伪代码 |
| 🧬 静态攻击面 | "帮我审计这个 App 的攻击面" | 从 Manifest 枚举 exported 组件/Provider/WebView,source→sink 追踪 |
| 🧪 安全合规测试 | "帮我检查这个 App 的安全合规" | 自动运行合规检测(注入/调试/WebView SSL/元数据),出具结果 |
| 🧷 SO 符号/结构恢复 | "这个 so 去符号了,帮我还原函数名和结构体" | 离线 SO 静态分析(so.py info/strings/strref/callers)→ Ghidra MCP 交叉引用推理 → 重命名 + 结构定义 |
| 🦄 离线模拟执行 | "不跑真机,帮我模拟这个 native 函数" | Unicorn 加载 .so,JNI/libc/syscall 打桩,直接跑目标函数拿结果 |
所有操作由 AI 完成,你不需要手敲命令或运行脚本。
这是什么
一个 AI 逆向分析 Agent 的完整技能系统,不是脚本合集:
- 🧠 Agent 大脑(
.kilo/agent/reverser.md)— 逆向分析角色定义,按决策树自动选模块 - 📚 领域知识(
references/项目级 wiki +.kilo/skill/)— 9 大技巧域手册(全量索引_index.md)+ 动态分析总控 + Native 深度能力(符号/结构恢复、离线模拟执行、内存 DEX 脱壳) - 🔧 能力单元(
scripts/)— 25 个 Frida 模块(monitors 15 + bypass 10)+ 22 个独立工具 + 检测清单 - 🛠️ 合规检测 — 注入、调试、WebView SSL、APK 元数据/签名
- 🔌 MCP 集成(
kilo.json)— jadx-mcp(Java 反编译)+ ghidra-mcp(二进制分析)
与传统工具箱的区别
| 维度 | 传统逆向工具箱 | 本 Skill |
|---|---|---|
| 使用者 | 人类工程师 | AI Agent(Kilo 等) |
| 交互方式 | 手敲命令 | 一句话描述需求 |
| 核心交付 | 脚本/工具 | Skill 文档 + Agent 定义(.kilo/) |
| 决策依据 | 人的经验 | SKILL.md 决策树 |
| 反馈闭环 | 无 | Feedback 机制自动记录失败路径 |
| 静态分析 | 手动开 JADX | jadx-mcp 让 AI 直接读类源码 |
架构
┌────────────────────────────────────────────────────────────┐
│ AI Agent (Kilo) │
│ .kilo/agent/reverser.md — Agent 角色定义 │
│ .kilo/skill/.../SKILL.md — 任务路由 + 决策树 + 模块索引 │
│ feedback/FEEDBACK.md — agent 级反馈闭环(项目根) │
├────────────────────────────────────────────────────────────┤
│ Frida 动态 Hook 模块(skill scripts/) │
│ monitors/ (15 个) — 纯观察,不修改行为 │
│ bypass/ (10 个) — 主动干预,修改 app 行为 │
│ utils/ — 内存 dump / 运行时 JS 工具 │
├────────────────────────────────────────────────────────────┤
│ 独立工具(项目根 tools/) │
│ so.py · unpack · dex_* · frida_run · device_ui │
│ emu_run · trace_recon · cipher_lab · fsmon_run · 检测 │
├────────────────────────────────────────────────────────────┤
│ MCP 集成(kilo.json 配置) │
│ jadx-mcp — AI 直接读 Java 源码反编译 │
│ ghidra-mcp — AI 直接反汇编/调试二进制 │
├────────────────────────────────────────────────────────────┤
│ 合规检测能力 │
│ 注入检测 · 调试检测 · WebView SSL · APK 元数据/签名验证 │
└────────────────────────────────────────────────────────────┘
关键技术
- 一键脱壳:
unpack.py6 步线性流水线(默认回填 → 补充扫描 → 自动 pull → 修复 checksum → 去重 → 方法体标记),一代/抽取壳通吃,产物直接拖 jadx - 反检测 Pipeline:6 阶段自动递进(定位检测 SO → 抢 init_array → 追踪符号 → 保活 → 检测 shellcode → NOP 闪退函数)
- 分层下钻:
Java → JNI → Native → libc → syscall → SVC,上层 hook 被绕过自动降级到更低层 - Dex2C/VMP 分析:hook 优先拿数据 → unidbg 复现算法 → Ghidra 伪代码,不需要 IDA 重工具
- Native 深度逆向:无符号函数/结构恢复(离线 ELF 侦察 + Ghidra 交叉引用推理)、Unicorn 单函数模拟执行(JNI/libc/syscall 打桩)、内存 DEX 脱壳(双 dumper 交叉验证,ptrace-free)
项目结构
MobileRE-Skill/
├── references/ # 技巧手册 wiki(项目级,索引见 _index.md)
│ ├── _index.md # 索引:作用 / 何时读 / 是否常驻
│ ├── unpacking.md # 脱壳
│ ├── anti-detection.md # 环境对抗
│ ├── crypto-hook.md # 加密/功能 hook
│ ├── behavior-analysis.md # 行为分析
│ ├── static-analysis.md # 静态攻击面
│ ├── native-analysis.md # SO 层分析
│ ├── troubleshooting.md # 故障诊断
│ ├── api-reference.md # Frida API 参考
│ ├── articles.md # 参考文章索引
│ └── smoke-test.md # 冒烟自检(回归清单,其它资料)
├── .kilo/
│ ├── agent/
│ │ └── reverser.md # Agent 角色定义(工作纪律 + 重要手册清单)
│ └── skill/
│ ├── frida-mobile-security/ # 动态分析总控(Frida + jadx/ghidra MCP)
│ │ ├── SKILL.md # 总控:任务路由 + 决策树 + 模块目录
│ │ └── scripts/ # Frida JS 模块(由 frida -l 加载)
│ │ ├── core/utils.js # 公共工具(始终首个加载)
│ │ ├── monitors/ # 15 个监控模块(纯观察)
│ │ ├── bypass/ # 10 个干预模块(反检测等)
│ │ ├── utils/ # 内存 dump JS(so_dump / dex_* / codeitem)
│ │ ├── checklist/ # 检测清单脚本
│ │ └── templates/ # 模板(analysis.py / custom_hook.js)
│ ├── rev-symbol/ # 无符号 .so 函数命名(Ghidra MCP)
│ ├── rev-struct/ # 结构体恢复(偏移访问聚合)
│ ├── rev-unicorn-debug/ # Unicorn 模拟调试(工具在 tools/)
│ ├── rev-dex-dumper/ # 运行时 DEX 脱壳(panda + mem,ptrace-free)
│ └── karpathy-guidelines/ # 编码准则(开发辅助)
├── tools/ # 独立工具(py/bat/jar,无 Frida 依赖)
│ ├── so.py # SO 静态分析一站式(ELF 侦察/字符串/字节/反汇编/交叉引用/SVC/JNI 判型)
│ ├── unpack.py # 一键脱壳入口
│ ├── dex_rebuilder.py / dex_dedupe.py # DEX 修复 / 去重
│ ├── fix_elf.py / fix_axml.py / patch_gadget_threadnames.py
│ ├── frida_run.py # 非交互 Frida 运行(无人值守)
│ ├── device_ui.py # 设备交互(元素树/点击/输入/截图)
│ ├── emu_run.py / uniharness.py # Unicorn 离线仿真(含 --watch-* 观测层)
│ ├── trace_recon.py / cipher_lab.py # 观测日志→状态重建 / 密码结构判定(层/表/编排)
│ ├── fsmon_run.py # 设备侧内核文件事件采集与分析(fsmon inotify 后端;落盘件 pull)
│ ├── check-anti-inject.bat / check-janus.bat / debug-gdb.py / janus_check.py # 检测项
│ └── hap_parser.py # HAP(鸿蒙)包信息解析
├── feedback/FEEDBACK.md # agent 级反馈闭环(本地保留,不入库)
├── requirements.txt # Python 依赖(frida/unicorn/capstone/…)
├── kilo.json # MCP 配置(jadx-mcp / ghidra-mcp,本地保留,不入库)
├── AGENTS.md # 开发规范(AI 编码约束)
└── README.md / README.en.md # 本文件
环境搭建
宿主机要求
| 工具 | 用途 | 下载 |
|---|---|---|
| Python 3.9+ | 运行 Python 分析脚本 | https://www.python.org/downloads/ |
| Frida CLI | Frida 命令行工具 | pip install frida-tools |
| ADB | Android 调试桥 | Android SDK Platform-Tools |
| Android NDK | GDB 调试客户端 | https://developer.android.com/ndk/downloads |
| Java Runtime | APK 信息提取 | https://www.oracle.com/java/technologies/downloads/ |
| JADX | Java 反编译 | https://github.com/skylot/jadx |
| Ghidra | 二进制分析 | https://ghidra-sre.org/ |
Python 依赖
pip install -r requirements.txt
| 包 | 用途 |
|---|---|
frida / frida-tools | Frida 动态插桩 |
unicorn | CPU 模拟执行(SO 离线分析 / 模拟调试) |
capstone | 反汇编(模拟追踪/指令级调试) |
keystone-engine | 汇编(模拟打桩) |
pyelftools | ELF 解析(so.py / uniharness.py 等) |
lief | ELF 改写(dump so 修复重建 / patch 常量 / 加节改 DT_NEEDED) |
z3-solver | 约束求解(从条件/结果反推输入;配 emu 观测层) |
MCP 配套(让 AI 直接读源码/反汇编)
通过 kilo.json 集成,AI 分析时直接调用,无需手动开 GUI:
| MCP | 作用 | 安装 |
|---|---|---|
| jadx-mcp | AI 直接读 Java 类源码(jadx_get_class_source 等) | jadx-ai-mcp |
| ghidra-mcp | AI 直接反汇编/调试二进制(ghidra_import_file 等) | GhidraMCP |
测试机准备
# 1. 推送 frida-server
adb push frida-server-<版本>-android-arm64 /data/local/tmp/fuckserver
adb shell "chmod 755 /data/local/tmp/fuckserver"
adb shell "su -c '/data/local/tmp/fuckserver -D'"
# 2. 推送 AndKittyInjector(合规检测用)
adb push AndKittyInjector /data/local/tmp/AndKittyInjector
adb shell "chmod 755 /data/local/tmp/AndKittyInjector"
# 3. 推送 gdbserver64(调试检测用)
adb push gdbserver64 /data/local/tmp/gdbserver64
adb shell "chmod 755 /data/local/tmp/gdbserver64"
# 4. fsmon(内核文件事件采集,tools/fsmon_run.py 的设备侧依赖;缺件时 AI 自行下载 arm64 预编译并推送)
# https://github.com/nowsecure/fsmon/releases
fsmon_run.py 与检测项均以 root(su -c)运行;fsmon 默认路径 /data/local/tmp/fsmon-android-arm64(--fsmon-path 覆盖)。
设计原则
- 单一职责 — 一个模块做一件事,monitors/ 只观察不修改,bypass/ 只干预不监控
- 可组合 — 模块通过
-l参数自由组合,不互相依赖 - 可观测 — 所有 hook 点必须有日志输出,不静默吞掉
- 可复现 — 脚本能在其他设备上跑,不依赖特定路径硬编码
- 最小权限 — 只 hook 需要的目标,不做全量扫描
许可
MIT 许可。
免责声明
本项目仅供教育和合法授权的安全测试使用:
- 请勿用于任何未经授权的 App 分析、破解或逆向
- 使用者须确保拥有对目标 App 进行测试的合法授权
- 因使用本项目造成的任何法律责任由使用者自行承担
- 如侵犯了您的权益,请联系作者删除相关内容
支持
- ⭐ Star 本项目
- 🐛 遇到问题提交 Issue
- 🧩 有新的检测项/模块想法,欢迎讨论