☰
REA 接入 headless JADX 的 Android APK 静态分析:从权限清单到方法反编译的实操指南
2026/10/12 1:27:48 网站建设 项目流程

REA 接入 headless JADX 的 Android APK 静态分析:从权限清单到方法反编译的实操指南

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

分析一个 APK 时,你往往得先装好 jadx-gui 或拖出 Android Studio,翻文档找入口,反编译结果散落在 GUI 窗口里——既写不进脚本,也喂不进 AI Agent。REA(Reverse Engineer Anything)是面向 AI Agent 的逆向工程工具集,它把 headless JADX 引擎封装成一组可复用的分析原语:查权限、搜类、反编译方法、追引用。CLI 和 MCP 走同一套流程,每一步结论都带着可审计的 Evidence。

它到底做了什么

REA 没有对 JADX 动刀,而是通过src/android/目录下的 Provider 适配器,包装一个未改动、commit 锁定的 jadx-headless-mcp(0.7.1)引擎 JAR;引擎源码以 Git 子模块形式保留上游 Apache-2.0 许可。分析全程在本地进行,不执行 APK、不写原始文件,CLI 与 MCP 共用同一应用工作流,结果直接内联绑定工件的 Evidence。换句话说,结论完全来自上游引擎,适配层只负责会话管理、摘要校验与证据保留,边界清晰。

动手之前

你只需要一个完整的 JDK 17 及以上(要带编译器模块,光 JRE 跑不起来)和引擎 JAR 本身。REA 不会替你安装任何 Java、Android SDK、JADX 或模拟器。在 shell 或 MCP server 环境里设置:

export REA_JADX_MCP_JAR=/absolute/path/jadx-headless-mcp-0.7.1-all.jar # 可选:显式指定一个已存在的 JDK,而不是用 PATH 里的 java export JAVA_HOME=/absolute/path/existing-jdk

分析完全离线,无需联网;引擎 JAR 要你自己备。大 APK 建议显式加大堆内存,比如export REA_JADX_HEAP_MIB=8192,可见处理器数用REA_JADX_ACTIVE_PROCESSOR_COUNT=4。元数据桥接已在 macOS arm64 + OpenJDK 21 上验证,POSIX 适配器覆盖 Linux。

拿一个真实例子走完流程

下面用同一个Example.apk走完整条链路,每一步只给当前必需的命令。

先看整体结构

rea inspect-android-package /path/Example.apk

返回解码后的 manifest XML、声明摘要、权限列表和类/资源数量。⚠️ 签名验证会明确标记为not_performed,这一步不替你验签。

找到目标类

rea search-android-classes /path/Example.apk MainActivity

大小写敏感的子串搜索,会消费所有分页并校验计数;把 query 传成空串则盘点 APK 里全部类名。

列出类的成员

rea inspect-android-class /path/Example.apk example.MainActivity

不生成源码就能读解析后的元数据,返回类型、字段和内部类名。先用这一步选定重载,再去反编译方法。

把方法反编译出来

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 会直接拒绝模糊请求,而不是悄悄选第一个匹配项——避免把错误的函数体归因给错误的重载。

把引用关系串起来

rea trace-android-references /path/Example.apk example.MainActivity # 追某个唯一方法的引用 rea trace-android-references /path/Example.apk example.MainActivity --method-name onCreate

不带--method-name追的是指向该类的静态引用;带上则追指向唯一方法的引用。

接入 AI Agent:MCP 工具映射

npx rea-agents setup完成注册后,MCP 工具与上面 CLI 命令一一对应:

MCP 工具对应操作
inspect_android_package检查 APK 声明与 manifest
search_android_classes搜索 / 盘点类名
inspect_android_class查看类成员清单
inspect_android_method反编译方法,支持overload_index
trace_android_references追踪类 / 方法引用

所有请求都带path;类 / 方法操作用class_name、method_name,必要时加overload_index。一次方法反编译的最小调用:

{ "name": "inspect_android_method", "arguments": { "path": "/path/Example.apk", "class_name": "example.MainActivity", "method_name": "select", "overload_index": 1 } }

输出怎么读

每次请求都会把原始请求、APK 的 SHA-256、实际使用的引擎 JAR SHA-256 和上游原始响应留在 Evidence 里,所以每个结论都能回溯到具体字节。要记住边界:反编译出的源码是派生表示,文本完整不等于语义完整,更不能据此做字节级重构;引用结果是节点间的静态关系,不是运行时观测到的调用;没有函数体的 native / abstract 方法会报body_status: "not_available",REA 不猜是哪个实现标志导致的。

边界与坑

项目数值说明
会话闲置清理60 秒超时、失败、断连、取消都会触发清理
单次操作时限120 秒到达队列头部后开始计时
上游反编译时限90 秒JADX 引擎侧限制
manifest / 方法文本1 MiB超预算会报告截断
协议帧上限8 MiB超限失败,不返回残缺数据
平台支持Linux / macOS / Windows x64Windows x64 需匹配的 bundled native 控制;arm64 暂不支持

这些操作不处理 split APK / AAB、签名校验、native 库分析和资源表完整语义;.aab后缀本质是 ZIP,不会被当作独立 APK。会话复用最先校验 APK 与引擎 JAR 的摘要和 JVM 配置,匹配才复用已加载引擎,输入变化会自动淘汰旧会话。一次性 CLI 命令返回前总会等待清理完成,且 REA 永不写入原始 APK、永不启动目标代码。

延伸阅读与溯源

从权限清单到方法级反编译再到引用追踪,REA 把 headless JADX 的能力整理成了脚本和 AI Agent 都能稳定消费的分析原语,配合会话复用和摘要校验,让静态结论可追溯。完整契约见 docs/android-analysis.md,MCP 工具与输出模式见 docs/mcp-contracts.md,上游引擎溯源记录在 third_party/README.md,适配层实现集中在 src/android/。

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询