传统 Android 逆向分析通常依赖 JADX、Ghidra、Frida、ADB 等工具,分别完成 Java/Native 代码反编译、静态分析、运行时调试与行为验证。分析过程中,研究者需要在不同工具之间反复切换,并通过大量代码搜索、定位与阅读逐步建立分析思路,整体流程较为繁琐。
本项目尝试将上述逆向分析工具通过 MCP 接入 Claude,使 Claude 作为 AI Agent 参与逆向分析流程。分析者首先明确分析目标并向 Agent 提出任务,Claude 根据目标调用对应的 MCP 工具进行分析;分析者对返回结果进行验证、二次分析或进一步追问,Agent 再根据新的分析方向继续调用工具,最终形成“分析目标 → AI 分析 → 调用工具执行 → 结果验证 → 进一步分析”的闭环。
通过将 AI 的代码理解与多种逆向工具的实际分析能力结合,减少传统逆向过程中重复性的代码搜索、定位与信息整理工作,从而提高 Android 逆向分析的效率,并探索 AI Agent 在实际逆向分析流程中的辅助能力。
项目整体采用 Claude + MCP + Android 逆向工具 + Android 运行环境 的架构。
其中 Claude 作为 AI Agent,负责理解分析目标、拆解分析任务、选择合适的工具并根据工具返回结果继续推进分析。
MCP 作为 Claude 与外部工具之间的连接层,将不同类型的 Android 逆向工具统一接入 Agent,使 Claude 能够根据当前分析阶段调用不同工具。
整体架构可以概括为:
分析者 → Claude → MCP → 逆向工具 → Android 环境 → 分析结果 → Claude
不同逆向工具在整个分析流程中承担不同职责。
主要用于 Java/Kotlin 层分析,包括类、方法、字符串搜索以及调用关系追踪等。
主要用于 APK 初步信息收集和安全检测,例如 Manifest、权限、组件、Exported Activity、Deep Link 以及 Native Library 等信息。
主要用于 Native 层分析。当 Java 层发现 JNI 或 Native 方法后,可以进一步定位对应 SO 文件并分析 Native 函数。
ADB 作为 Android 运行环境的底层控制工具,用于应用安装、设备通信、日志获取和运行状态验证。同时 MobSF 动态分析模块通过 docker 容器使用 ADB 与 Android Emulator 建立连接,实现动态分析环境的自动化控制。
用于动态观察程序运行行为,对静态分析得到的关键方法进行 Hook,从运行时角度验证分析结论。
这些工具并不是相互独立使用,而是根据不同分析阶段进行协同。
通过 MCP Server 将不同逆向工具暴露给 Claude 后,可以直接使用自然语言描述分析任务,而不需要在每个工具之间频繁切换。
如图,claude 中已配置好三个工具,且三个工具的状态都是 running 。

JADX 主要负责 Android Java/Kotlin 层代码分析。通过 JADX-AI-MCP,Claude 可以辅助完成:
APK 代码结构分析
类和方法搜索
关键字符串定位
方法调用关系分析
Activity / Service 等组件分析
Java → Native 调用定位

MobSF 主要用于 APK 初步信息收集和安全检测。通过 MCP 接入 docker desktop 运行,可以由 Claude 根据分析需求获取 APK 的基础信息、安全配置以及潜在风险点。
主要关注:
AndroidManifest.xml
权限
Activities
Services
Broadcast Receivers
Content Providers
Exported Components
Deep Link
Native Library
安全配置
同时,MobSF 的分析结果可以作为后续 JADX、Ghidra 和动态分析的输入。


当 Java 层分析发现 Native 方法或 SO 文件参与核心逻辑时,需要进一步进入 Native 层。GhidraMCP 将 Ghidra 的 Native 分析能力提供给 Claude,主要用于:
SO 文件分析
ELF 信息分析
Native 函数定位
JNI 分析
函数反编译
交叉引用分析
从而将 Java 层分析进一步延伸到:
Java → JNI → Native → SO

为了验证静态分析结果,需要提供实际的 Android 运行环境。使用 Android Emulator 作为动态分析环境,并通过 ADB 与模拟器进行交互。主要用于:
安装 APK
启动应用
获取 Logcat
执行 Shell 命令
获取进程信息
配合 Frida 进行动态分析

Frida 用于对运行中的应用进行动态分析。当静态分析得到某个关键方法或调用链后,可以通过 Frida 对目标方法进行 Hook,观察其实际运行情况。主要观察:
方法是否实际执行
参数内容
返回值
调用次数
调用时机
Java / Native 之间的运行关系
通过动态结果对静态分析进行验证,从而减少仅依赖代码阅读造成的误判。
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
最后于 21小时前
被er7编辑
,原因: 格式问题