android-reverse-engineering-skill
Health Gecti
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 61 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh
- rm -rf — Recursive force deletion command in android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
这是一套专为 Codex 适配的 Android 逆向分析 skill,支持在 Codex 会话中反编译 APK、XAPK、JAR、AAR,并结合 jadx、Fernflower/Vineflower 梳理 Manifest、包结构、网络层和调用链。它可辅助提取接口、URL、鉴权头、token 与签名逻辑,并提供 Frida、抓包、JNI/SO 分析前的静态侦察方法,适合接口分 析、安全研究和授权测试。
android-reverse-engineering-skill
这是一套专为 Codex 适配的 Android 逆向分析 skill,支持在 Codex 会话中反编译 APK、XAPK、JAR、AAR,并结合 jadx、Fernflower/Vineflower 梳理 Manifest、包结构、网络层和调用链。它可辅助提取接口、URL、鉴权头、token 与签名逻辑,并提供 Frida、抓包、JNI/SO 分析前的静态侦察方法,适合接口分 析、安全研究和授权测试。
Windows / PowerShell 支持(实验性):仓库现在包含与 Bash 脚本对应的
*.ps1脚本,可在 Windows 环境下执行依赖检查、安装、反编译和 API 搜索流程。
项目来源
本项目基于原项目 SimoneAvogadro/android-reverse-engineering-skill 演化而来。
原项目主要聚焦于:
- Android APK/XAPK/JAR/AAR 的反编译
- API 提取与调用链分析
- Claude Code skill 形态下的基础工作流
本仓库在此基础上做了面向当前使用场景的扩展和调整。
与原项目的差异
相比原项目,这个仓库目前的主要不同点是:
- 增加了
Codex插件封装与相关元数据,不再只面向 Claude Code - README 已改为中文,更适合中文使用者直接阅读和上手
- skill 描述范围已经扩展到 Frida 前期侦察、运行时分析、JNI/SO 分析、签名定位分析
- 新增了
dynamic-analysis.md与native-analysis.md两份参考文档,用于指导动态分析与 Native 分析流程 - 文档中明确区分了“支持 Frida 分析方法”与“尚未内置 Frida 执行脚本”这两件事
- 保留原有反编译与 API 提取能力的同时,更强调“先静态侦察,再决定是否进入动态分析”
功能概览
- 使用 jadx 和 Fernflower/Vineflower 反编译 APK、XAPK、JAR、AAR,支持单引擎或双引擎对比
- 提取并整理 API:Retrofit 接口、OkHttp 调用、硬编码 URL、鉴权头和 token
- 从 Activity/Fragment 沿着 ViewModel、Repository 一路跟踪到 HTTP 调用
- 分析应用结构:Manifest、包结构、架构模式
- 处理混淆代码:提供在 ProGuard/R8 输出中定位逻辑的策略,并区分“运行时真实类名”与“反编译器可读别名”
- 提供运行时分析指引:什么时候该用 Frida、该 hook 哪一层、如何收窄请求/签名链路
- 提供 Native 分析指引:JNI/SO 侦察、签名生成边界识别,以及什么时候值得上 unidbg
Frida 支持范围
这个 skill 现在已经包含面向 Frida 的分析方法文档,但还没有内置可直接执行的 Frida 辅助脚本,也没有自动 attach 的命令。
当前状态:
- 可以指导你在 hook 之前先完成静态侦察
- 可以帮助你判断哪个 Java 或 JNI 边界最适合 hook
- 可以组织运行时分析结论和 Native 签名分析结论
- 仓库里还没有用于
frida、设备连接、自动生成 hook 模板的scripts/
一句话概括:当前项目支持的是 Frida 分析流程指导,不是 内置 Frida 执行工具链。
依赖要求
必需:
- Java JDK 17+
- jadx 命令行工具
可选但推荐:
- Vineflower 或 Fernflower,用于在复杂 Java 代码上获得更好的反编译结果
- dex2jar,用于在 APK/DEX 场景下配合 Fernflower 工作
- Rizin,用于
.so/ JNI / Native 导出符号与反汇编分析
详细安装说明见 android-reverse-engineering/skills/android-reverse-engineering/references/setup-guide.md。
安装
用于 Codex
这个仓库已经包含 Claude/Codex 兼容的插件元数据:
.claude-plugin/marketplace.jsonandroid-reverse-engineering/.claude-plugin/plugin.jsonandroid-reverse-engineering/.codex-plugin/plugin.json
skill 的主体内容位于:
android-reverse-engineering/skills/android-reverse-engineering/
使用方式
Slash 命令
/decompile path/to/app.apk
这会执行完整流程:检查依赖、执行反编译,并做初步结构分析。
自然语言触发
以下表达都可能触发这个 skill:
- “反编译这个 APK”
- “逆向分析这个 Android 应用”
- “提取这个应用的 API 接口”
- “从 LoginActivity 开始跟调用链”
- “分析这个 AAR 库”
- “找出这个应用的 sign 是在哪生成的”
- “用 Frida 分析请求链路”
- “分析这个 token 背后的 JNI 或 SO”
手动执行脚本
这些脚本也可以单独运行:
# 检查依赖
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh
# 安装缺失依赖(自动识别操作系统和包管理器)
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh jadx
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh vineflower
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh rizin
# 使用 jadx 反编译 APK(默认)
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk
# 需要保留运行时真实类名时,第一次反编译建议不要加 --deobf
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk
# 只在更重视源码可读性时再启用 --deobf
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --deobf app.apk
# 反编译 XAPK(自动解包并逐个处理其中的 APK)
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app-bundle.xapk
# 使用 Fernflower 反编译
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower library.jar
# 同时运行两个引擎并对比结果
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk
# 查找 API 调用
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --retrofit
bash android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --urls
Windows / PowerShell 对应写法:
# 检查依赖
& "android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.ps1"
# 安装缺失依赖
& "android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.ps1" jadx
& "android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.ps1" vineflower
# 反编译
& "android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.ps1" app.apk
& "android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.ps1" -Engine both -Deobf app.apk
# 查找 API 调用
& "android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.ps1" output/sources/
& "android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.ps1" output/sources/ -Retrofit
& "android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.ps1" output/sources/ -Urls
关于分包 / 套壳 APK 的补充:
- 如果外层 APK 本身只反编译出很少的 Java 文件,但
resources/里带有base.apk和split_config.*.apk decompile.sh/decompile.ps1会自动识别这种 bundled APK 包装形式- 脚本会继续反编译真正承载业务代码的
base.apk,并把主要输出放到<output>/base/
.so / Rizin 用法
当静态 Java 分析已经看到 native 方法、System.loadLibrary(...)、JNI 注册,或者怀疑签名/加密逻辑落在 .so 里时,推荐先用 rizin 做一轮轻量侦察。
常用命令:
# 查看 ELF 基本信息、架构、入口、依赖
rz-bin -I libfoo.so
# 查看导出符号 / 导入符号
rz-bin -s libfoo.so
rz-bin -i libfoo.so
# 搜字符串(URL、JNI、签名、socket 等)
rz-strings -a libfoo.so | rg 'http|https|Java_|JNI_OnLoad|RegisterNatives|encrypt|sign|ssl|socket'
# 列函数、看 JNI_OnLoad 反汇编
rizin -qc "aaa; afl; q" libfoo.so
rizin -qc "aaa; pdf @ sym.JNI_OnLoad; q" libfoo.so
# 导出某个函数的反汇编到本地文件
rizin -qc "aaa; pdf @ sym.JNI_OnLoad; q" libfoo.so > JNI_OnLoad.asm
如果只想快速确认 JNI 边界,通常先看这几样就够了:
rz-bin -s libfoo.so | rg 'JNI_OnLoad|Java_|RegisterNatives'
rz-strings -a libfoo.so | rg 'http|https|encrypt|sign|socket'
如果 rizin 不可用,也可以回退到系统工具:
readelf -Ws libfoo.so
nm -D libfoo.so | rg 'JNI_OnLoad|Java_|RegisterNatives'
objdump -d libfoo.so > libfoo.objdump.asm
strings -a libfoo.so | rg 'http|https|encrypt|sign|socket'
反编译命名策略
默认建议先使用 不带 --deobf 的 jadx 做第一轮反编译,原因是:
- 更接近 dex 里的运行时类名
- 更适合 Frida、JNI
FindClass、unidbg、运行时Class.forName - 避免把只存在于反编译结果中的可读别名误当成运行时类名
--deobf 仍然有价值,但更适合这些场景:
- 代码高度混淆,只想先提升阅读体验
- 当前任务以静态阅读为主,不需要马上做运行时 hook
- 想用第二份输出和原始命名版本对照分析
仓库结构
android-reverse-engineering-skill/
├── .claude-plugin/
│ └── marketplace.json # Claude 插件市场目录
├── android-reverse-engineering/
│ ├── .codex-plugin/
│ │ └── plugin.json # Codex 插件清单
│ ├── .claude-plugin/
│ │ └── plugin.json # Claude 插件清单
│ ├── skills/
│ │ └── android-reverse-engineering/
│ │ ├── SKILL.md # 核心流程(静态分析 + 动态侦察)
│ │ ├── references/
│ │ │ ├── setup-guide.md
│ │ │ ├── jadx-usage.md
│ │ │ ├── fernflower-usage.md
│ │ │ ├── api-extraction-patterns.md
│ │ │ ├── call-flow-analysis.md
│ │ │ ├── dynamic-analysis.md
│ │ │ └── native-analysis.md
│ │ └── scripts/
│ │ ├── check-deps.sh
│ │ ├── check-deps.ps1
│ │ ├── install-dep.sh
│ │ ├── install-dep.ps1
│ │ ├── decompile.sh
│ │ ├── decompile.ps1
│ │ ├── find-api-calls.sh
│ │ └── find-api-calls.ps1
│ └── commands/
│ └── decompile.md # /decompile 命令说明
├── LICENSE
└── README.md
参考项目
- jadx — Dex to Java 反编译器
- Fernflower — JetBrains 反编译器
- Vineflower — Fernflower 社区分支
- dex2jar — DEX 转 JAR 工具
- apktool — Android 资源解码工具
- Rizin — 开源二进制逆向工具链
- Frida — 动态插桩工具
免责声明
这个插件仅可用于合法用途,包括但不限于:
- 安全研究与经授权的渗透测试
- 适用法律允许范围内的互操作性分析
- 恶意软件分析与应急响应
- 教学用途与 CTF 比赛
你需要自行确保 对本工具的使用符合所在司法辖区的法律、法规以及目标软件的服务条款。对无授权的软件进行逆向,可能触犯知识产权或计算机相关法律。
作者不对任何滥用行为承担责任。
许可证
Apache 2.0,见 LICENSE
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi