ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

REA APK 静态分析完整指南:5 条命令跑通从权限到引用追踪的逆向链路

REA APK 静态分析完整指南:5 条命令跑通从权限到引用追踪的逆向链路 REA APK 静态分析完整指南5 条命令跑通从权限到引用追踪的逆向链路【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/reaREA 是面向 AI Agent 的 Android 逆向工程工具集包装了一个未修改的 headless JADX 引擎。不用模拟器、不用 Android SDK5 条 CLI 命令就能跑通 APK 静态分析链路从权限检查、类定位、方法反编译到引用追踪每条结论都附带可审计的 Evidence。先说清它能做什么、不碰什么上手之前把预期摆正纯静态分析REA 不执行 APK也不写入原始文件整个分析过程安全无副作用Agent 原生CLI 和 MCP 共用同一套应用工作流注册之后 Claude Code、Cursor 这类 Agent 可以直接调用零臃肿依赖不需要 Gradle 构建不碰设备服务也不碰模拟器边界是诚实的目前不支持 Windows也不处理 split APK/AAB、签名校验和 native 库分析。如果确实需要存档层面的证据可以配合工件清点工具再用project-android-application-graph做一次无执行的图谱投影。两行配置接通引擎准备工作只有两样一份完整的 JDK 17 及以上注意必须包含jdk.compiler编译器模块只有可运行的 JRE 是编译不出元数据桥的再有一份你自己准备的jadx-headless-mcp 0.7.1 fat JAR。REA 不会替你安装任何 Java 或 Android 工具也不会自动下载引擎。引擎源码以 commit 锁定的 Git 子模块保存在 third_party/jadx-headless-mcp保留了上游 Apache-2.0 许可REA 侧的协议、会话、传输等适配代码集中在 src/android/ 目录包括JadxProvider.ts这些模块。# 指向 jadx-headless-mcp 0.7.1 的 fat JAR export REA_JADX_MCP_JAR/absolute/path/jadx-headless-mcp-0.7.1-all.jar # 可选显式指定要用的现有 JDK export JAVA_HOME/absolute/path/existing-jdk大 APK 的话用REA_JADX_HEAP_MIB调高堆内存上限、用REA_JADX_ACTIVE_PROCESSOR_COUNT调整可见处理器数即可都是可选的 JVM 调优项。当前元数据桥已在 macOS arm64 OpenJDK 21 上验证过POSIX 适配器同样支持 Linux。启动前 REA 会检查所选 JAR 的 ZIP 目录和桥接类发现无效归档会给出针对 JAR 的恢复指引。四步走到方法级反编译这四组命令都注册在src/cli/androidCommands.ts按分析深度递进使用。第一步读清单和权限rea inspect-android-package /path/Example.apk拿到的是解码后的 manifest XML、声明摘要、权限列表和类/资源数量这就是做 APK 权限检查的第一步。输出里签名验证会被明确标记成not_performed这是如实报告不是出错。第二步定位类并读成员# 子串搜索大小写敏感 rea search-android-classes /path/Example.apk MainActivity # 读成员清单类型、字段、内部类名 rea inspect-android-class /path/Example.apk example.MainActivity搜索会消费所有分页并校验计数类成员这一步直接读解析后的元数据不生成源码。这里有个省事的小坑查询传空串时会盘点出 APK 里全部类名适合不知道从哪找起的时候先摸家底。第三步深挖到方法级反编译rea inspect-android-method /path/Example.apk example.MainActivity onCreate # 存在同名重载时必须显式给重载序号从 0 开始 rea inspect-android-method /path/Example.apk example.MainActivity select --overload-index 1方法反编译会连同完整/部分标记一起返回文本。两个坑要知道出现同名重载方法时REA 会直接拒绝模糊请求不会悄悄挑第一个匹配项避免把错误的函数体安到错误的重载上没有函数体的 native/abstract 方法会报告body_status: not_available它不猜测具体实现来源。另外重载序号是绑定这个工件和引擎的跨不同构建并不稳定换包之后要重新确认。第四步追踪谁引用了它# 指向该类的静态引用 rea trace-android-references /path/Example.apk example.MainActivity # 指向某个唯一方法的引用 rea trace-android-references /path/Example.apk example.MainActivity --method-name onCreate引用追踪到方法时要求方法名唯一如果存在多个同名方法REA 会把这条边界报成不支持而不是给一个含糊的结果。让 AI Agent 直接上手CLI 与 MCP 对应关系npx rea-agents setup完成注册之后Agent 端有五个 MCP 工具和 CLI 命令一一对应CLI 命令MCP 工具inspect-android-packageinspect_android_packagesearch-android-classessearch_android_classesinspect-android-classinspect_android_classinspect-android-methodinspect_android_methodtrace-android-referencestrace_android_references所有请求都带path类/方法操作按需带class_name、method_name和overload_index。让 Agent 反编译一个方法调用长这样{ name: inspect_android_method, arguments: { path: /path/Example.apk, class_name: example.MainActivity, method_name: select, overload_index: 1 } }工具契约和输出模式详见 docs/mcp-contracts.md。Evidence 证明了什么又没证明什么每次请求都会把四样东西留在 Evidence 里原始请求、APK SHA-256、引擎 JAR SHA-256、原始响应。结论因此可以回溯到具体字节但解读时守住两个口径反编译出的源码是派生表示文本完整不等于语义完整更不等于能字节级重构引用结果是节点间的静态关系不是运行时观测到的调用。执行侧的限额如下项目限额说明会话闲置清理60 秒超时、失败、断连同样触发清理操作执行时限120 秒到达队列头部后才开始计时上游反编译时限90 秒JADX 引擎侧的限制manifest / 方法文本1 MiB超出预算会报告截断协议帧8 MiB超限直接失败不返回残缺数据会话复用也有讲究APK 和引擎 JAR 的摘要、JVM 配置先校验全部匹配才复用已加载引擎输入一变旧会话自动淘汰。一次性 CLI 命令在返回前总会等清理完成且 REA 永不写入原始 APK、永不启动目标代码。如何确认引擎真的可用项目自带一条端到端验证 lane用公开的 Appium ApiDemos APK 当样本npm run fixtures:android export REA_JADX_MCP_JAR$PWD/_reference/apk-integration/jadx-headless-mcp-0.7.1-all.jar export REA_ANDROID_TEST_APK$PWD/_reference/apk-integration/ApiDemos-debug.apk npm run verify:android下载脚本会校验固定的 SHA-256 值并拒绝覆盖已有文件文件落在_reference/下不会混进发布包。整个过程不需要 Gradle、模拟器和 Android SDK这条 lane 还会检查真实 Java 启动失败、失败后的恢复以及取消清理配好环境后值得完整跑一遍。常见问题Q分析过程需要联网吗不需要。引擎 JAR 由你自己提供分析全程本地进行不向任何地方上传文件。QWindows 上能用吗暂时不行。该提供方目前只支持 Linux 和 macOSWindows 受 owned stdio 进程边界限制。Q和 jadx-gui 手动反编译有什么区别两者用的是同一套引擎内核反编译结果一致。差别在于 REA 额外做了摘要校验、会话复用和 Evidence 保留产出更适合被脚本和 AI Agent 稳定消费。速查表步骤命令用途查包结构rea inspect-android-package pathmanifest、权限、类/资源数量定位类rea search-android-classes path name类名子串搜索空查询盘点全部读成员rea inspect-android-class path class类型、字段、内部类名方法反编译rea inspect-android-method path class method重载需加--overload-index引用追踪rea trace-android-references path class类或唯一方法的静态引用完整契约说明在 docs/android-analysis.md。从权限清单到方法级反编译再到引用追踪这条 APK 反编译 CLI 流水线几小时内就能搭起来之后交给 Agent 持续消费。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进