使用说明
项目简介
JADX-MCP-SERVER 是一个独立的 Python 服务器,它作为 JADX-AI 插件的后端,通过 Model Context Protocol (MCP) 协议与 LLM 客户端(如 Claude Desktop)进行通信。该服务器允许 LLM 实时访问和理解 JADX 反编译的 Android 应用程序代码,从而实现基于上下文的代码审查、漏洞检测、逆向工程辅助等功能。简而言之,它让你的 LLM 能够“看到”并理解 Android 应用程序的内部代码结构。
主要功能点
- MCP 服务器核心功能: 实现了 MCP 协议,作为 LLM 客户端的上下文信息提供者。
- JADX 桥接: 连接 JADX 反编译器,将反编译的 Android 代码作为资源暴露给 LLM。
- 实时代码上下文: 能够实时获取 JADX 中当前选中的类、方法、代码片段等信息。
- 丰富的工具集: 提供一系列预定义的 MCP 工具,如获取类源码、方法源码、类列表、搜索方法等,方便 LLM 获取代码细节。
- 支持本地 LLM: 特别为本地 LLM (如 Claude Desktop) 设计,实现本地环境下的代码分析和辅助逆向工程。
安装步骤
- 安装 Java 11+ 和 Python 3.10+: 确保你的系统已安装 Java 11 或更高版本,以及 Python 3.10 或更高版本。
- 下载 JADX-AI: JADX-MCP-SERVER 依赖于修改版的 JADX 编译器 JADX-AI。你需要从 JADX-AI 的 Release 页面 下载最新版本的 'jadx-gui'。
- 下载 JADX-MCP-SERVER: 从本仓库(jadx-mcp-server)下载 'jadx_mcp.py' 文件。
- 运行 JADX-GUI: 启动下载的 'jadx-gui'。确保 JADX-AI 插件已正确加载 (通常情况下,下载的 Release 版本已包含插件)。
- 运行 JADX-MCP-SERVER: 在命令行中,导航到 'jadx_mcp.py' 所在的目录,并执行命令 'python jadx_mcp.py' 来启动 MCP 服务器。服务器默认使用 stdio 传输协议。
服务器配置
MCP 客户端需要配置以下信息以连接到 JADX-MCP-SERVER。以下是针对 stdio 传输协议的配置示例 (JSON 格式):
{ "server_name": "JADX-AI Reverse Engineering Server", // MCP 服务器名称,与 jadx_mcp.py 中 FastMCP 初始化时定义的名称一致 "command": "python", // 启动 MCP 服务器的命令,这里使用 python 解释器 "args": [ // 命令参数列表 "jadx_mcp.py" // MCP 服务器脚本文件名,确保客户端能找到该脚本 ], "transport": "stdio", // 使用 stdio 传输协议 "capabilities": [ // (可选) 声明服务器能力,通常 MCP 客户端会自动发现 "tools", "prompts", "resources" ] }
配置说明:
- 'server_name': 服务器的名称,用于客户端识别。必须与 'jadx_mcp.py' 代码中 'FastMCP("JADX-AI Reverse Engineering Server")' 定义的名称完全一致。
- 'command': 启动服务器进程的命令。由于 'jadx_mcp.py' 是 Python 脚本,这里使用 'python' 命令。
- 'args': 命令的参数列表。这里只有一个参数,即 'jadx_mcp.py' 文件名。请确保客户端的当前工作目录或环境变量设置能让它找到 'jadx_mcp.py' 文件。
- 'transport': 指定 MCP 服务器使用的传输协议,这里配置为 'stdio',表示使用标准输入输出进行通信。
- 'capabilities': (可选) 声明服务器提供的能力。虽然通常客户端可以自动发现,但显式声明可以帮助客户端更好地理解服务器的功能。这里声明了 'tools', 'prompts', 和 'resources' 能力,表明服务器支持工具调用、Prompt 模板和资源管理 (虽然当前示例中 Prompt 模板和资源管理可能没有明确体现,但根据 MCP 服务器的定义,可以包含这些声明)。
重要提示:
- 确保 MCP 客户端配置中的 'command' 和 'args' 能正确执行 'python jadx_mcp.py' 命令,并启动 MCP 服务器。客户端可能需要根据实际情况调整脚本路径或 Python 解释器路径。
- 启动 JADX-GUI 后,再启动 'jadx_mcp.py' 服务器。服务器依赖 JADX-GUI 提供数据。
基本使用方法
-
启动 JADX-GUI 和 JADX-MCP-SERVER。
-
在 JADX-GUI 中打开要分析的 Android APK 文件。
-
连接 MCP 客户端 (如 Claude Desktop) 到 JADX-MCP-SERVER。 在客户端中配置上述服务器配置信息,建立连接。
-
在 JADX-GUI 中浏览和选择代码。 例如,选择一个类或一段代码。
-
在 MCP 客户端中,使用自然语言指令与 LLM 交互,利用 MCP 工具获取 JADX 中的代码上下文。 例如,你可以向 LLM 提问:
- "解释当前类 'MainActivity' 的作用。" (LLM 可能会调用 'fetch_current_class' 或 'get_class_source' 工具获取 'MainActivity' 的代码,然后进行分析)
- "列出 'LoginActivity' 中所有的方法。" (LLM 可能会调用 'get_methods_of_class' 工具获取方法列表)
- "查找名为 'onCreate' 的方法在哪些类中被使用。" (LLM 可能会调用 'search_method_by_name' 工具进行搜索)
参考示例 Prompt 和已定义的 MCP 工具列表,可以进行更复杂的代码分析和逆向工程任务。
核心思想: 通过 MCP 客户端,利用自然语言指令,调用 JADX-MCP-SERVER 提供的工具,让 LLM 理解和分析 JADX 反编译的代码,从而辅助逆向工程工作。
信息
分类
开发者工具