文章总结: JADX-AI-MCP是一个将JADX反编译工具与AI结合的插件系统,通过MCP服务器将APK的代码上下文传递给LLM客户端,支持源码理解、漏洞排查和调试辅助。项目采用三层架构,提供类检索、资源分析、重命名等工具,适用于移动安全审计和代码分析。文档包含安装配置指南和使用场景说明,强调仅用于授权测试并注意网络安全。 综合评分: 82 文章分类: 移动安全,安全工具,代码审计,逆向分析,安全开发
让 JADX 接上 AI
攻防路 攻防路
攻防录
2026年5月3日 06:00 内蒙古
在小说阅读器读本章
去阅读
JADX-AI-MCP 是一个 JADX 插件加 MCP Server 组合。它把 Android APK 的反编译上下文接给 Claude、Codex、Cherry Studio、LM Studio 等 LLM 客户端,用来做源码理解、漏洞线索排查、资源分析和调试辅助。
项目地址: https://github.com/zinja-coder/jadx-ai-mcp
文档地址: https://jadx-ai-mcp.readthedocs.io/en/latest/
该项目适合授权 APK 审计、移动安全研究和代码理解。
项目 Banner
技术原理
JADX-AI-MCP 的底层是三层结构:LLM Client、Python MCP Server、JADX GUI Plugin。
LLM 客户端不直接读取 APK 文件。它调用 MCP 工具,MCP Server 再向 JADX 插件发 HTTP 请求。插件从 JADX GUI 里读取当前类、方法、Manifest、资源文件、引用关系或调试信息,再把结果返回给 LLM。
工作链路
项目文档把系统拆成 3 层:
| 层级 | 组件 | 作用 | | — | — | — | | Presentation Tier | Claude、Cherry Studio、LM Studio、Codex 等 LLM 客户端 | 发起自然语言分析请求 | | Application Tier | Python MCP Server、FastMCP、httpx | 暴露 MCP 工具,转发请求 | | Data Tier | JADX-AI-MCP 插件、JADX Core、JADX GUI | 提供反编译后的真实上下文 |
Java 插件侧使用 Javalin 提供本地 HTTP 服务。Python Server 使用 asyncio 和 httpx.AsyncClient 处理请求。文档里还特别提到一点:访问 JADX GUI 数据时要走 Swing 的 EDT 线程,否则容易碰到并发问题。
当前 MCP 工具覆盖面比较宽:
工具分组
| 能力 | 典型工具 | 适合做什么 |
| — | — | — |
| 当前上下文 | fetch_current_class() 、get_selected_text() | 解释当前类、当前选中代码 |
| 全局检索 | get_all_classes() 、search_classes_by_keyword() | 找加密、网络、登录等关键逻辑 |
| 方法和字段 | get_method_by_name() 、get_fields_of_class() | 定位具体实现 |
| Manifest 和资源 | get_android_manifest() 、get_strings()、get_resource_file() | 看权限、组件、字符串和资源 |
| 重命名 | rename_class() 、rename_method()、rename_field() | 辅助反混淆和阅读 |
| 调试辅助 | debug_get_stack_frames() 、debug_get_threads()、debug_get_variables() | 结合调试状态解释执行流 |
| 交叉引用 | xrefs_to_class() 、xrefs_to_method()、xrefs_to_field() | 追踪类、方法、字段被谁调用 |
它和“把源码复制给 AI”最大的区别,是上下文可以来自 JADX 当前项目。分析一个大 APK 时,不用一次性塞进所有代码,而是按工具逐步读取。
项目也做了大 APK 场景的处理。文档提到,大型 APK 可能有 10000+ classes,列表接口支持 offset 和 count 分页,默认 100 条,最大 10000 条。
快速上手
1. 检查环境
文档要求 Java 11+、Python 3.10+、JADX 1.5.1+。
java -version
python --version
jadx --version
JADX 代码界面
2. 安装 JADX 插件
推荐一行命令安装:
jadx plugins --install "github:zinja-coder:jadx-ai-mcp"
3. 准备 MCP Server
Release 里需要下载两个文件:
jadx-ai-mcp-<version>.jar
jadx-mcp-server-<version>.zip
进入 jadx-mcp-server 后,可以用 uv 启动:
cd jadx-mcp-server
uv run jadx_mcp_server.py --help
4. 配置 LLM 客户端
Claude Desktop 的配置文件位置如下:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
配置示例:
{
"mcpServers": {
"jadx-mcp-server": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/jadx-mcp-server/",
"run",
"jadx_mcp_server.py"
]
}
}
}
5. 启动并使用
在 JADX-GUI 里打开 APK,再启动 MCP Server。默认情况下,JADX 插件监听 127.0.0.1:8650,MCP Server HTTP 模式监听 127.0.0.1:8651。
uv run jadx_mcp_server.py --http
连接成功后,LLM 客户端里可以看到可用 MCP 工具:
MCP 工具列表
例如让 Claude 分析当前类:
fetch currently selected class and perform quick sast on it
SAST 示例
使用场景
APK 代码理解
任务示例: 打开一个混淆后的 APK,让 AI 解释当前类负责什么。
技术要点: 用 fetch_current_class() 获取当前类源码,再让 LLM 总结职责、识别可疑命名和外部依赖。遇到大项目时,用分页和关键词搜索逐步展开,不要一次性拉全量类。
移动安全审计
任务示例: 检查某个类是否存在硬编码密钥、明文存储、SQL 拼接、危险权限调用。
技术要点: 结合 get_android_manifest()、get_strings()、search_classes_by_keyword() 和当前类源码。AI 给出的结论只能作为线索,最终要回到代码和运行环境确认。
反混淆和重命名
任务示例: 某个包里大量类名、方法名不可读,需要先整理阅读路径。
技术要点: 先让 AI 根据上下文推断类职责,再使用 rename_class()、rename_method()、rename_field() 做可读性改名。重命名前最好保存项目状态,避免误改影响后续分析。
调试状态解释
任务示例: JADX 调试器停在某个位置,需要解释线程、变量和调用栈。
技术要点: 使用 debug_get_stack_frames()、debug_get_threads()、debug_get_variables() 把运行状态交给 LLM。适合梳理执行流,不适合直接代替人工判断漏洞可利用性。
使用注意
- 只分析自己有权测试的 APK。
- LLM 输出是审计线索,不是漏洞结论。
- 默认使用 localhost。远程绑定前先想清楚网络边界。
- README 明确提醒:
--host 0.0.0.0会让 MCP Server 以明文 HTTP 暴露给网络,且没有认证。 - 远程或 Docker 场景建议用防火墙、隔离网络或 SSH Tunnel。
- 代码、Manifest、资源和调试变量可能包含敏感信息,接入云端模型前要先做数据边界判断。
往期推荐 📚
taste-skill:AI前端审美外挂
GPT-Image-2 提示词模板库
给 AI 装上黑客大脑:hack-skills
欢迎关注“攻防录”✨
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:攻防录 攻防路 攻防路《让 JADX 接上 AI》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论