# 技术文档摘要
<div align="center">
# JADX-AI-MCP(Zin MCP套件的一部分)
⚡ 完全自动化的MCP服务器 + 与LLM通过MCP通信以分析Android APK的JADX插件——使用像Claude这样的LLMs来发现漏洞、分析APK并轻松进行逆向工程。







[](http://www.apache.org/licenses/LICENSE-2.0.html)
#### ⭐ 贡献者
感谢这些杰出人士的贡献⭐
<table>
<tr align="center">
<td>
<a href="https://github.com/badmonkey7">
<img src="https://avatars.githubusercontent.com/u/41368882?v=4" width="30px;" alt=""/>
<br /><sub><b>badmonkey7</b></sub>
</a>
</td>
<td>
<a href="https://github.com/tiann">
<img src="https://avatars.githubusercontent.com/u/4233744?v=4" width="30px;" alt=""/>
<br /><sub><b>tiann</b></sub>
</a>
</td>
<td>
<a href="https://github.com/ljt270864457">
<img src="https://avatars.githubusercontent.com/u/8609890?v=4" width="30px;" alt=""/>
<br /><sub><b>ljt270864457</b></sub>
</a>
</td>
<td>
<a href="https://github.com/ZERO-A-ONE">
<img src="https://avatars.githubusercontent.com/u/18625356?v=4" width="30px;" alt=""/>
<br /><sub><b>ZERO-A-ONE</b></sub>
</a>
</td>
<td>
<a href="https://github.com/neoz">
<img src="https://avatars.githubusercontent.com/u/360582?v=4" width="30px;" alt=""/>
<br /><sub><b>neoz</b></sub>
</a>
</td>
<td>
<a href="https://github.com/SamadiPour">
<img src="https://avatars.githubusercontent.com/u/24422125?v=4" width="30px;" alt=""/>
<br /><sub><b>SamadiPour</b></sub>
</a>
</td>
<td>
<a href="https://github.com/wuseluosi">
<img src="https://avatars.githubusercontent.com/u/192840340?v=4" width="30px;" alt=""/>
<br /><sub><b>wuseluosi</b></sub>
</a>
</td>
<td>
<a href="https://github.com/CainYzb">
<img src="https://avatars.githubusercontent.com/u/50669073?v=4" width="30px;" alt=""/>
<br /><sub><b>CainYzb</b></sub>
</a>
</td>
<td>
<a href="https://github.com/tbodt">
<img src="https://avatars.githubusercontent.com/u/5678977?v=4" width="30px;" alt=""/>
<br /><sub><b>tbodt</b></sub>
</a>
</td>
<td>
<a href="https://github.com/LilNick0101">
<img src="https://avatars.githubusercontent.com/u/100995805?v=4" width="30px;" alt=""/>
<br /><sub><b>LilNick0101</b></sub>
</a>
</td>
<td>
<a href="https://github.com/lwsinclair">
<img src="https://avatars.githubusercontent.com/u/2829939?v=4" width="30px;" alt=""/>
<br /><sub><b>lwsinclair</b></sub>
</a>
</td>
</tr>
</table>
</div>
<div align="center">
<img alt="banner" height="480px" widht="620px" src="docs/assets/img.png">
</div>
---
## 🤖 什么是JADX-AI-MCP?
**JADX-AI-MCP** 是一个针对 [JADX 反编译器](https://github.com/skylot/jadx) 的插件,它直接集成了 [模型上下文协议(MCP)](https://github.com/anthropic/mcp),提供实时的反向工程支持,使用像 Claude 这样的大语言模型(LLMs)。
思考: "反编译 → 上下文感知代码审查 → AI 建议" —— 全部实时完成。
#### 高级序列图
```mermaid
sequenceDiagram
LLM CLIENT->>JADX MCP SERVER: 调用 MCP 工具
JADX MCP SERVER->>JADX AI MCP 插件: 发送 HTTP 请求
JADX AI MCP 插件->>请求处理器: 调用 HTTP 请求处理器
请求处理器->>JADX GUI: 执行操作/收集数据
JADX GUI->>请求处理器: 操作执行/数据收集
请求处理器->>JADX AI MCP 插件: 构造 HTTP 响应
JADX AI MCP 插件->>JADX MCP SERVER: HTTP 响应
JADX MCP SERVER->>LLM 客户端: MCP 工具结果
https://github.com/user-attachments/assets/b65c3041-fde3-4803-8d99-45ca77dbe30a
https://github.com/user-attachments/assets/c184afae-3713-4bc0-a1d0-546c1f4eb57f
https://github.com/user-attachments/assets/6342ea0f-fa8f-44e6-9b3a-4ceb8919a5b0
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
https://github.com/user-attachments/assets/f42d8072-0e3e-4f03-93ea-121af4e66eb1
https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec
这是两个工具的组合:
JADX MCP Server 是一个独立的Python服务器,通过MCP(模型上下文协议)与JADX-AI-MCP插件交互。它允许LLMs实时与反编译的Android应用上下文进行通信。
以下MCP工具是可用的:
fetch_current_class() — 获取所选类的名称和完整源码get_selected_text() — 获取当前选中的文本get_all_classes() — 列出项目中的所有类get_class_source() — 获取给定类的完整源码get_method_by_name() — 获取方法的源码search_method_by_name() — 在类中搜索方法search_classes_by_keyword() — 搜索源码中包含特定关键字的类(支持分页)get_methods_of_class() — 列出类中的方法get_fields_of_class() — 列出类中的字段get_smali_of_class() — 获取类的smali代码get_main_activity_class() — 从jadx中获取AndroidManifest.xml文件中提到的主要活动类get_main_application_classes_code() — 根据AndroidManifest.xml文件中定义的包名获取所有主要应用程序类的代码get_main_application_classes_names() — 根据AndroidManifest.xml文件中定义的包名获取所有主要应用程序类的名称get_android_manifest() — 获取并返回AndroidManifest.xml的内容get_strings() :获取strings.xml文件get_all_resource_file_names() :检索应用程序中存在的所有资源文件名get_resource_file() :检索资源文件内容rename_class() :重命名类名rename_method() :重命名方法rename_field() :重命名字段debug_get_stack_frames() :从jadx调试器获取堆栈帧debug_get_threads() :从jadx调试器获取线程信息debug_get_variables() :从jadx调试器获取变量🔍 基本代码理解
"解释这个类的作用。"
"总结这个方法的责任。"
"这个类中有任何混淆吗?"
"列出这个类可能需要的所有Android权限。"
🛡️ 漏洞检测
"这个方法中有任何不安全的API使用吗?"
"检查这个类是否有硬编码的秘密或凭据。"
"这个方法在使用之前是否对用户输入进行了清理?"
"这段代码可能会引入哪些安全漏洞?"
🛠️ 逆向工程助手
"去混淆并重命名类和方法,使其可读。"
"你能推断出这个smali方法的原始用途吗?"
"这个类似乎属于哪些库或SDK?"
"告诉我哪些类包含与'加密'相关的代码?"
📦 静态分析
"列出这个类中的所有网络相关API调用。"
"识别文件I/O操作及其潜在风险。"
"这个方法是否会泄露设备信息或个人身份信息(PII)?"
🤖 AI代码修改
"重构这个方法以提高可读性。"
"在这个代码中添加注释,解释每一步。"
"将这个Java方法重写为Python进行分析。"
📄 文档和元数据
"为所有方法生成Javadoc样式的注释。"
"这个类很可能属于哪个包或应用组件?"
"你能识别出Android组件类型(如Activity、Service等)吗?"
🐞 调试助手
"从调试器获取堆栈帧、变量和线程,并提供摘要"
"基于调试器的堆栈帧,解释应用程序的执行流程"
"根据变量的状态,是否存在安全威胁?"
[!NOTE]
下载
jadx-ai-mcp-<version>.jar和jadx-mcp-server-<version>.zip文件。
# 0. 下载 jadx-ai-mcp-<version>.jar 和 jadx-mcp-server-<version>.zip
https://github.com/zinja-coder/jadx-ai-mcp/releases
# 1.
unzip jadx-ai-mcp-<version>.zip
├jadx-mcp-server/
├── jadx_mcp.py
├── requirements.txt
├── README.md
├── LICENSE
├jadx-ai-mcp-<version>.jar
# 2. 安装插件
# 你可以采用两种方式:
## 1. 一行命令 - 在你的shell中执行下面的命令
jadx plugins --install "github:zinja-coder:jadx-ai-mcp"
## 上面的一行代码会直接将最新版本的插件安装到jadx中,无需下载jadx-ai-mcp的.jar文件。
## 2. 或者你可以使用JADX-GUI来安装,如下图所示:
<div align="center">
<img alt="banner" height="480px" widht="620px" src="docs/assets/img_1231.png">
</div>
<div align="center">
<img alt="banner" height="480px" widht="620px" src="docs/assets/img_1123.png">
</div>
<div align="center">
<img alt="banner" height="480px" widht="620px" src="docs/assets/img_2122.png">
</div>
## 3. 使用GUI方法,下载.jar文件并按照以下步骤操作

# 3. 导航到 jadx-mcp-server 目录
cd jadx-mcp-server
# 4. 该项目使用uv - https://github.com/astral-sh/uv 来代替pip进行依赖管理。
## a. 安装uv(如果还没有安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
## b. 可选,如果在jadx-mcp-server中遇到依赖错误,请设置环境
uv venv
source .venv/bin/activate # 或 .venv\Scripts\activate 在Windows上
## c. 可选 安装依赖
uv pip install httpx fastmcp
# jadx-ai-mcp 和 jadx_mcp_server 的设置已完成。
确保Claude Desktop正在运行并且启用了MCP。
例如,我使用了以下方法在Kali Linux上安装:https://github.com/aaddrick/claude-desktop-debian
配置并将MCP服务器添加到LLM文件中:
nano ~/.config/Claude/claude_desktop_config.json
对于:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/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"
]
}
}
}
替换:
path/to/uv 为实际的uv可执行文件路径path/to/jadx-mcp-server 为克隆此仓库的实际路径然后,通过内置集成导航代码并通过实时代码审查提示进行交互。
或者
或者你可以直接使用以下命令安装jadx_mcp_server作为可执行文件:
uv tool install git+https://github.com/zinja-coder/jadx-mcp-server
然后你只需在mcp配置的command部分提供jadx_mcp_server。
如果你想在Cherry Studio中配置MCP工具,可以参考以下配置。
--directory
path/to/jadx-mcp-server
run
jadx_mcp_server.py
path/to/jadx-mcp-server 为克隆此仓库的实际路径你也可以通过配置其mcp.json文件来使用JADX AI MCP Server与LM Studio。这里有一个视频指南。
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
你还可以使用--http选项与jadx_mcp_server.py一起在HTTP流模式下运行Jadx,如下所示:
uv run jadx_mcp_server.py --http
或者
uv run jadx_mcp_server.py --http --port 9999