只反编译代码不碰资源?android-reverse-engineering-skill 用 --no-res 加速大APK分析
【免费下载链接】android-reverse-engineering-skillClaude Code skill to support Android app's reverse engineering项目地址: https://gitcode.com/GitHub_Trending/an/android-reverse-engineering-skill
android-reverse-engineering-skill是一个为 Claude Code 打造的安卓逆向工程技能包,能把 APK / XAPK / JAR / AAR 反编译成 Java 源码,并自动提取 Retrofit、OkHttp、Ktor 等 HTTP API 接口。面对动辄上百 MB 的大 APK,内置的--no-res参数可以跳过资源解码、只反编译代码,让大 APK 分析提速一截——本文带你 3 分钟掌握这个技巧。
为什么大 APK 反编译总这么慢?
一个 APK 实际上是个 ZIP 压缩包,里面装着两部分内容:
| 组成部分 | 内容 | 逆向时是否常需要 |
|---|---|---|
| 代码(DEX) | 编译后的 Java/Kotlin 字节码 | ✅ 几乎总是需要 |
| 资源(resources) | 布局、图标、字符串、AndroidManifest 等 | ⚠️ 视目标而定 |
jadx 默认会同时解码资源和反编译源码。当你的目标是提取 API 接口、追踪调用链时,几千个图片、XML 布局文件的解码纯属浪费,还容易拖慢进度、占用磁盘。
而--no-res正是为此设计的:jadx 官方将其描述为"Skip resource decoding — faster when you only need code"(见 jadx-usage.md)。
--no-res 快速上手:只反编译代码的步骤
第一步:安装技能包
本地克隆仓库后,在 Claude Code 中注册插件市场并安装:
git clone https://gitcode.com/GitHub_Trending/an/android-reverse-engineering-skill/plugin marketplace add /path/to/android-reverse-engineering-skill /plugin install android-reverse-engineering@android-reverse-engineering-skill依赖方面只需要Java JDK 17+和jadx,可先运行依赖检查脚本确认环境,详细安装方法见 setup-guide.md。
第二步:加上 --no-res 运行反编译
脚本 decompile.sh 会把--no-res原样透传给 jadx:
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --no-res big-app.apkWindows 用户使用 PowerShell 版脚本,对应开关是-NoRes(decompile.ps1):
& .\plugins\android-reverse-engineering\skills\android-reverse-engineering\scripts\decompile.ps1 -NoRes big-app.apk运行完成后,输出目录<文件名>-decompiled/中只生成sources/(反编译源码),不再有体积庞大的resources/目录。
第三步:按需补跑其他参数
| 参数 | 作用 | 建议场景 |
|---|---|---|
--no-res | 跳过资源解码,只出代码 | 大 APK 快速过一遍代码 |
--deobf | 混淆名重命名为可读名 | 被 R8/ProGuard 混淆的应用 |
-o <dir> | 指定输出目录 | 需要统一归档时 |
--engine both | jadx + Fernflower 双引擎对比 | jadx 输出警告多时 |
也可以在 Claude Code 里直接说自然语言触发,例如"用 --no-res 反编译这个 APK",或者使用斜杠命令/decompile big-app.apk(decompile.md)执行完整工作流。
引擎怎么选?大 APK 场景速查表
技能文档 SKILL.md 给出了明确的选型策略,jadx --no-res正是"大 APK 快速概览"的官方推荐组合:
| 场景 | 推荐引擎 |
|---|---|
| 快速浏览大型 APK | jadx --no-res |
| 首次反编译任意 APK | jadx(含资源) |
| JAR / AAR 库分析 | fernflower(Java 输出质量更高) |
| jadx 输出有警告/坏码 | both(双引擎对比择优) |
| 复杂 lambda、泛型、流式代码 | fernflower |
💡 小提示:跑完--no-res发现确实需要看资源(比如 AndroidManifest.xml),再重跑一次不带--no-res的全量反编译即可,两者输出目录用-o分开存放互不干扰。
反编译只是第一步:继续提取 API 与调用链
拿到源码后,真正的高光时刻是自动化分析:
- 先做指纹分诊:fingerprint.sh 可在几秒内判断应用类型(Flutter / React Native / 原生 Kotlin)、HTTP 技术栈和混淆程度,避免对混合框架应用"白反";
- 批量挖 API:find-api-calls.sh 默认全栈扫描 Retrofit、OkHttp、Volley、Ktor、Apollo,也支持
--retrofit、--urls、--auth等定向搜索; - 追踪调用链:从 Activity → ViewModel → Repository → HTTP 调用,完整技巧见 call-flow-analysis.md。
常见问题速答
| 问题 | 解决方案 |
|---|---|
| 大 APK 反编译内存不足 | 提高堆内存:jadx -Xmx4g -d output app.apk |
源码里大量// Error注释 | 加--show-bad-code查看部分反编译结果 |
| 跳过资源后想看 Manifest | 重跑全量反编译,或用 apktool 单独解码资源 |
| 找不到 jadx 命令 | 确认 jadx 的bin/目录已加入PATH |
写在最后
--no-res是 SKILL.md 完整工作流中的一个关键提速开关:先快速过代码、锁定重点包和 API,再决定是否补全资源,这套"先快后精"的节奏让大 APK 逆向从苦力活变成了可预期工程。
⚖️合规提醒:本工具请仅用于安全研究、授权渗透测试、恶意软件分析、教学与 CTF 等合法用途,使用需遵守所在地法律法规及相关服务条款。
项目基于 Apache 2.0 协议开源,完整许可见 LICENSE。
【免费下载链接】android-reverse-engineering-skillClaude Code skill to support Android app's reverse engineering项目地址: https://gitcode.com/GitHub_Trending/an/android-reverse-engineering-skill
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考