把这个 Skill 交给你的 Agent

复制下面的提示词,粘贴给 Claude Code、Codex 或任何能读网页的 Agent。它会替你装好,并告诉你这个 Skill 做什么。

请帮我安装这个 skill。

先阅读 https://cwyz.com/zh/skills/android-reverse-engineering
原始 SKILL.md 在 https://cwyz.com/api/skills/android-reverse-engineering/raw

把它保存为我的 skills 目录下的 android-reverse-engineering/SKILL.md(Claude Code:所有项目通用放 ~/.claude/skills/,只用于当前项目放 .claude/skills/)。

装好后用两句话告诉我它做什么、什么时候会用到。在我确认之前,不要执行它里面描述的任何操作。

也可以把下载的压缩包解压到 ~/.claude/skills/(所有项目)或项目里的 .claude/skills/。 Skill 是在指挥 Agent 做事。装之前先读一遍,不是你自己写的尤其要读。

Android 逆向从安装包里理出接口和调用链

当用户想反编译 APK、XAPK、JAR、AAR,提取应用的 HTTP 接口、鉴权方式和代码结构时使用。基于开源的 android-reverse-engineering-skill(Apache-2.0):先指纹识别,再用 jadx 等反编译,支持还原 R8 混淆后的 Kotlin 类名。只分析自己有权分析的应用。

应用场景让 Agent 反编译安卓应用,理出它调用的接口和代码结构。

Android 逆向从安装包里理出接口和调用链

用户想弄清一个 Android 应用调用了哪些接口、代码结构怎么组织时,用这个 Skill。底层是开源的 android-reverse-engineering-skill(Apache-2.0):反编译 APK、XAPK、JAR、AAR,从中提取 HTTP 接口,不需要原始源码。

触发

用户说"反编译这个 APK""看看这个 App 调了哪些接口""提取 API 端点""从 LoginActivity 顺着调用追下去""分析这个 AAR 库"。

硬性规则

  1. 只分析你自己的目标,或有明确授权的目标。 授权范围不清楚,先停下来问用户,不要先动手。
  2. 不对线上系统做扫描、攻击、绕过付费或访问控制、拒绝服务。 只读分析和本地分析优先。
  3. 装东西、改配置之前先说一声,用户同意后再做。
  4. 结论分三类: 亲眼看到的(带文件和位置)、推断的、没找到的(写"未知",不写"不存在")。
  5. 不输出、不记录找到的密钥和令牌的完整内容,只报告它在哪里。
  6. 只分析自己有权分析的应用。 没有权限的软件,逆向可能违反知识产权和服务条款。提取出的接口信息用于文档化、互操作和安全研究,不要拿提取到的令牌、密钥去访问别人的服务。
  7. 先指纹识别,再决定要不要完整反编译。

安装

需要 Java JDK 17 以上和 jadx(命令行)。可选:Vineflower 或 Fernflower(复杂 Java 代码输出更好)、dex2jar(给 Fernflower 处理 APK 用)。

在 Claude Code 里:

/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill

先检查依赖,缺什么征得同意后再装:

bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh

流程

  1. 指纹识别(第 0 阶段): 在完整反编译前,几秒内判断框架(Flutter、React Native、Cordova、Xamarin、原生 Kotlin)、HTTP 库、混淆程度和原生库。
bash .../scripts/fingerprint.sh app.apk
  1. 反编译:
bash .../scripts/decompile.sh app.apk                    # 默认用 jadx
bash .../scripts/decompile.sh app-bundle.xapk            # 自动解开 XAPK
bash .../scripts/decompile.sh --engine both --deobf app.apk   # 两个引擎并排对比
  1. 找接口: 默认全面扫描,也可以按技术栈缩小。
bash .../scripts/find-api-calls.sh output/sources/            # 全部
bash .../scripts/find-api-calls.sh output/sources/ --retrofit
bash .../scripts/find-api-calls.sh output/sources/ --ktor     # Ktor
bash .../scripts/find-api-calls.sh output/sources/ --apollo   # GraphQL
bash .../scripts/find-api-calls.sh output/sources/ --paths    # R8 内联后仍然保留的路径字面量
  1. 还原 Kotlin 类名: R8 混淆后类名会变成 a.b.c,但 Kotlin 元数据混淆不掉,可以用它重建 *Repository、*ViewModel、*UseCase 这类原名。
  2. 追调用链: 从 Activity、Fragment 经 ViewModel 和仓库层,一直追到 HTTP 调用。

在 Claude Code 里也可以直接用 /decompile 路径/app.apk 走完整流程。Windows 的 PowerShell 脚本仍是实验性的。

输出格式

  1. 应用框架、HTTP 库和混淆程度。
  2. 接口清单:方法、路径、鉴权方式(硬编码的密钥只写位置)。
  3. 关键调用链和代码结构说明。
  4. 没分析到的部分,比如原生库里的逻辑,要明确写出来。
读完了?标记一下,记录学习进度。登录
收藏起来,稍后再看登录
对这篇有疑问?向 Ask AI 提问

评论(0)

还没有评论,来说第一句。

登录后参与讨论。登录