乐于分享
好东西不私藏

不用写一行代码,AI帮你反编译任何App并提取所有API接口

不用写一行代码,AI帮你反编译任何App并提取所有API接口

PART 01

PART 01 /// 这个项目是什么?

最近在GitHub上发现一个有趣的开源项目:android-reverse-engineering-skill,作者是Simone.Avogadro。

简单说,它是一个给Claude Code用的"技能包"——安装之后,你只需要对Claude说"帮我反编译这个APK",它就能自动完成依赖检查、反编译、结构分析、API提取等全套逆向工程流程。

项目地址:github.com/SimoneAvogadro/android-reverse-engineering-skill

开源协议:Apache 2.0

PART 02

PART 02 /// 它能做什么?

这个技能的核心能力可以概括为五个阶段:

第一阶段:依赖检查与安装

自动检测你的环境里有没有Java JDK 17+、jadx、Fernflower等工具。缺什么装什么,支持macOS、Linux、Windows,还能自动识别包管理器。

第二阶段:反编译

支持三种引擎:

  • jadx:默认引擎,速度快,能处理资源文件
  • Fernflower/Vineflower:JetBrains出品,对复杂Java代码(lambda、泛型、Stream API)输出质量更高
  • both模式:两个引擎同时跑,生成对比报告

支持的文件格式包括APK、XAPK(多APK捆绑包)、JAR和AAR。

第三阶段:结构分析

自动读取AndroidManifest.xml,识别所有Activity、Service、BroadcastReceiver和ContentProvider。分析包结构,区分应用代码和第三方库,还能识别架构模式(MVP、MVVM、Clean Architecture)。

第四阶段:调用链追踪

从Activity的onCreate()出发,一路追踪到ViewModel、Repository,最终找到HTTP请求的发起点。即使代码被ProGuard混淆了,它也能通过字符串常量和库API调用作为锚点来追踪。

第五阶段:API提取与文档化

这是最实用的部分。自动扫描所有Retrofit接口、OkHttp调用、硬编码URL、认证头信息,然后生成结构化的API文档,包括:

  • HTTP方法和路径
  • Base URL
  • 请求参数(路径参数、查询参数、请求体)
  • 响应类型
  • 完整的调用链

PART 03

PART 03 /// 技术实现亮点

双引擎对比机制

这个设计很聪明。jadx速度快但对复杂代码可能有warning,Fernflower输出质量高但需要额外步骤(先用dex2jar转成JAR)。当两个引擎都跑一遍后,你可以对比它们的输出,对有warning的类优先看Fernflower的结果。

混淆代码的应对策略

作者总结了一套很实用的策略:什么会被混淆(类名、方法名、字段名),什么不会(字符串常量、Android框架类、Retrofit注解、AndroidManifest条目)。基于这个认知,即使面对重度混淆的APK,也能找到分析入口。

模块化脚本设计

四个核心脚本各司其职:

  • check-deps.sh:检查依赖
  • install-dep.sh:安装依赖
  • decompile.sh:反编译
  • find-api-calls.sh:API搜索

每个脚本都可以独立使用,不需要Claude Code环境。

PART 04

PART 04 /// 社区怎么说?

这个项目在XDA开发者论坛和Reddit的r/androiddev板块都有讨论。

XDA用户Simone.Avogadro分享时提到,他做这个的初衷是为了解决一个实际问题:他需要反编译一个没有官方自动化接口的智能家居应用,想通过逆向工程找到它的API然后实现自动化控制。

社区用户dever1211评价说,这个工具对有IDA Pro和反编译经验的人来说非常实用,特别是在处理DEX和so文件时。

Reddit上也有开发者讨论,认为这种"AI+逆向工程"的组合很有前景,尤其是对于快速理解一个陌生应用的内部机制。

PART 05

PART 05 /// 怎么用?

安装(两行命令):

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

/plugin install android-reverse-engineering@android-reverse-engineering-skill

使用方式:

方式一:用斜杠命令

/decompile path/to/app.apk

方式二:自然语言

"帮我反编译这个APK"

"从这个应用里提取所有API接口"

"追踪LoginActivity的调用链"

方式三:脚本直接调用

# 反编译

bash decompile.sh app.apk

# 找API调用

bash find-api-calls.sh output/sources/

# 只找Retrofit

bash find-api-calls.sh output/sources/ --retrofit

PART 06

PART 06 /// 适合谁用?

  • 安全研究员:快速分析应用的网络通信和数据流向
  • 渗透测试工程师:在授权测试中发现隐藏的API端点
  • 开发者:学习优秀应用的架构设计和API设计
  • CTF参赛者:在CTF竞赛中快速分析Android挑战题
  • 自动化爱好者:像作者一样,通过逆向找到没有官方API的应用的控制方式

需要说明的是,这个工具明确声明仅用于合法目的,包括安全研究、授权渗透测试、互操作性分析和教育用途。使用者需要自行确保符合当地法律法规。

///

这就是这个项目的核心内容。整体来看,它把原本需要手动执行的多个工具链整合成了一个AI驱动的自动化流程,降低了Android逆向工程的门槛。对于需要快速分析APK的场景,确实是个不错的工具。

THANKS FOR READING

⚡ 爱马仕 · Hermes Agent 技术分享