JADX-MCP-SERVER(Zin逆向工程MCP套件的一部分)
⚡ 全自动MCP服务器,用于与JADX-AI-MCP插件通信,使用Claude等LLM分析Android APK,轻松发现漏洞、解析清单和逆向工程。

⭐ 贡献者
感谢这些了不起的人的贡献⭐
ljt270864457
badmonkey7
p0px
bx33661
Haicaji
ChineseAStar
cyal1
tainn
ZERO-A-ONE
neoz
SamadiPour
wuseluosi
CainYzb
tbodt
LikNick0101
lwsinclair
阅读文档:
- 我们现在正在阅读文档:
______________________________________________________________________
立即下载:https://github.com/zinja-coder/jadx-ai-mcp/releases
______________________________________________________________________
🤖 什么是JADX-MCP-SERVER?
JADX MCP服务器 是一个独立的Python服务器,与修改版本的 jadx-gui (参见: jadx-ai-mcp)通过MCP(模型上下文协议)。它允许LLM与反编译的Android应用程序上下文实时通信。
🤖 什么是JADX-AI-MCP?
思考:“分解→ 上下文感知代码审查→ 人工智能建议”——所有这些都是实时的。
高级序列图
sequenceDiagram
LLM CLIENT->>JADX MCP SERVER: INVOKE MCP TOOL
JADX MCP SERVER->>JADX AI MCP PLUGIN: INVOKE HTTP REQUEST
JADX AI MCP PLUGIN->>REQUEST HANDLERS: INVOKE HTTP REQUEST HANDLER
REQUEST HANDLERS->>JADX GUI: PERFORM ACTION/GATHER DATA
JADX GUI->>REQUEST HANDLERS: ACTION PERFORMED/DATA GATHERED
REQUEST HANDLERS->>JADX AI MCP PLUGIN: CRAFT HTTP RESPONSE
JADX AI MCP PLUGIN->>JADX MCP SERVER:HTTP RESPONSE
JADX MCP SERVER->>LLM CLIENT: MCP TOOL RESULT观看演示!
- 执行快速分析
https://github.com/user-attachments/assets/b65c3041-fde3-4803-8d99-45ca77dbe30a
- 快速发现漏洞
https://github.com/user-attachments/assets/c184afae-3713-4bc0-a1d0-546c1f4eb57f
- 支持多个AI代理
https://github.com/user-attachments/assets/6342ea0f-fa8f-44e6-9b3a-4ceb8919a5b0
- 分析APK资源
https://github.com/user-attachments/assets/f42d8072-0e3e-4f03-93ea-121af4e66eb1
- 使用JADX调试APK期间的AI助手
https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec
它结合了两种工具:
- JADX-AI-MCP
- JADX-MCP服务器
______________________________________________________________________
MCP 套件
当前MCP工具
以下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()--把全班同学都叫来get_main_activity_class()--从AndroidManifest.xml文件中提到的jadx中获取主要活动。get_main_application_classes_code()--根据AndroidManifest.xml中定义的包名获取所有主要应用程序类的代码。get_main_application_classes_names()--根据AndroidManifest.xml中定义的包名获取所有主要应用程序类的名称。get_android_manifest()--检索并返回AndroidManifest.xml内容。get_manifest_component-检索特定的清单组件,而不是整个清单文件get_strings():获取strings.xml文件get_all_resource_file_names():检索应用程序中存在的所有资源文件名get_resource_file():检索资源文件内容rename_variable():重命名方法中的变量debug_get_stack_frames():从jaxx调试器获取堆栈帧debug_get_threads():从jaxx调试器获取线程的见解debug_get_variables():从jaxx调试器获取变量xrefs_to_class():查找对类的所有引用(返回方法级和类级引用,支持分页)xrefs_to_method():查找对方法的所有引用(包括重写相关方法,支持分页)xrefs_to_field():查找对某个字段的所有引用(返回访问该字段的方法,支持分页)
______________________________________________________________________
注:在Claude Desktop上测试。未来可能会测试对其他LLM的支持。
🗒️ 示例提示
🔍 基本代码理解
"Explain what this class does in one paragraph."
"Summarize the responsibilities of this method."
"Is there any obfuscation in this class?"
"List all Android permissions this class might require."🛡️ 漏洞检测
"Are there any insecure API usages in this method?"
"Check this class for hardcoded secrets or credentials."
"Does this method sanitize user input before using it?"
"What security vulnerabilities might be introduced by this code?"🛠️ 逆向工程助手
"Deobfuscate and rename the classes and methods to something readable."
"Can you infer the original purpose of this smali method?"
"What libraries or SDKs does this class appear to be part of?"📦 静态分析
"List all network-related API calls in this class."
"Identify file I/O operations and their potential risks."
"Does this method leak device info or PII?"🤖 AI代码修改
"Refactor this method to improve readability."
"Add comments to this code explaining each step."
"Rewrite this Java method in Python for analysis."📄 文档和元数据
"Generate Javadoc-style comments for all methods."
"What package or app component does this class likely belong to?"
"Can you identify the Android component type (Activity, Service, etc.)?"🐞 调试器助手
"Fetch stack frames, varirables and threads from debugger and provide summary"
"Based the stack frames from debugger, explain the execution flow of the application"
"Based on the state of variables, is there security threat?"______________________________________________________________________
🛠️ 入门指南
演示: 执行代码审查以在本地查找漏洞
https://github.com/user-attachments/assets/4cd26715-b5e6-4b4b-95e4-054de6789f42
高级CLI选项——了解标志
有 两个独立的连接 每个都有自己的主机/端口:
┌─────────────┐ --host / --port ┌──────────────────┐ --jadx-host / --jadx-port ┌──────────────────┐
│ LLM Client │ ◄──────────────────► │ jadx-mcp-server │ ──────────────────────────► │ JADX-GUI Plugin │
│ (Claude, │ Where the MCP server │ │ Where the MCP server looks │ (jadx-ai-mcp) │
│ Codex..) │ LISTENS for clients │ │ for the JADX plugin │ │
└─────────────┘ └──────────────────┘ └──────────────────┘| 标志 | 默认值 | 控件 |
|---|---|---|
--http | off | 使用HTTP传输而不是stdio |
--host | 127.0.0.1 | MCP服务器监听的位置 (绑定LLM客户端的地址) |
--port | 8651 | MCP服务器监听哪个端口 |
--jadx-host | 127.0.0.1 | 在哪里可以找到JADX插件 (目标JADX-GUI机器) |
--jadx-port | 8650 | JADX插件位于哪个端口 |
用法示例
场景1——同一台机器上的所有内容(最常见):
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http场景2——Docker容器或WSL(可从主机网络访问的MCP服务器):
# MCP server listens on ALL interfaces so the host can reach it
# JADX plugin is still on the same machine
uv run jadx_mcp_server.py --http --host 0.0.0.0场景3-JADX-GUI在另一台机器上运行(例如远程VM):
# MCP server runs locally, but connects to JADX plugin on a remote machine
uv run jadx_mcp_server.py --http --jadx-host 192.168.1.100场景4——完全远程设置(所有内容都在不同的机器上):
# MCP server listens on all interfaces on port 9999
# JADX plugin is on a different machine at 192.168.1.100:8652
uv run jadx_mcp_server.py --http --host 0.0.0.0 --port 9999 --jadx-host 192.168.1.100 --jadx-port 8652\[!小心\] ### ⚠️ 安全警告--远程绑定 使用时--host 0.0.0.0(或任何非本地主机地址),MCP服务器绑定到 所有网络接口 结束 无身份验证的纯HTTP这意味着: - 网络上的任何人 可以连接和调用所有MCP工具 - 有 无TLS加密 --交通可以被拦截 - 攻击者可以使用服务器 读取反编译代码, 重命名类/方法,以及 访问调试信息 缓解措施: - 仅绑定到0.0.0.0上 可信、隔离的网络 (例如,Docker桥、本地VM) - 使用一个 防火墙 限制对MCP端口的访问 - 考虑一个 SSH隧道 相反:ssh -L 8651:127.0.0.1:8651 remote-host同样地,--jadx-host使用非本地主机地址意味着MCP服务器将 未经身份验证的HTTP请求 对那个主人。确保目标是可信的。
🛣️ 未来路线图
- \[x\] 添加对apktool的支持
- \[\]添加对hermes代码的支持(ReactNative应用程序)
- \[\]添加docker支持
- \[x\] 添加更多有用的MCP工具
- \[x\] 使LLM能够修改JADX上的代码
- \[x\] 添加提示模板,让llm访问Android APK文件作为资源
- \[\]~~构建MCP客户端以支持本地LLM~~
- \[ \] 最终目标 :使所有android逆向工程和APK修改工具与单个MCP服务器连接,使逆向工程APK文件尽可能简单,纯粹来自vibes。
投稿人须知
- 可以找到与JADX-AI-MCP相关的文件 这里
- 与以下内容相关的文件 jadx-mcp服务器 只能在此存储库中找到。
🙏 学分
该项目是JADX的插件,JADX是由创建和维护的一款出色的开源Android反编译器 @skylot所有核心反编译逻辑都属于它们。我只扩展了它来支持我的MCP服务器的AI功能。
jadx的原始README.md包含在此存储库中以供参考和引用。
这个MCP服务器得益于JADX-GUI的可扩展性和令人惊叹的Android逆向工程社区。
也非常感谢 @aaddrick 用于为基于Debian的linux开发Claude桌面。
以及所有开源维护者和贡献者,他们使允许这样的项目的库和依赖关系成为可能。
已审核并获得评估徽章
](https://mseep.ai/app/zinja-coder-jadx-mcp-server)
感谢Mseep.net审核并提供评估徽章。
依赖项
这个项目使用了以下很棒的库。
- 插件-Java
- 贾瓦林-https://javalin.io/Apache 2.0许可证 - SLF4J-https://slf4j.org/-MIT许可证 - org.w3c.dom-https://mvnrepository.com/artifact/org.w3c.dom-W3C软件和文档许可证
- MCP服务器-Python
- FastMCP-https://github.com/jlowin/fastmcpApache 2.0许可证 - httpx-https://www.python-httpx.org-BSD-3条款(“BSD许可”)
📄 许可证
此插件继承了原始JADX存储库中的Apache 2.0许可证。
⚖️ 法律警告
免责声明
工具 jadx-ai-mcp 和 jadx_mcp_server 严格用于教育、研究和道德安全评估目的。它们是“按原样”提供的,没有任何明示或暗示的保证。用户全权负责确保他们对这些工具的使用符合所有适用的法律、法规和道德准则。
通过使用 jadx-ai-mcp 或 jadx_mcp_server,您同意仅在您有权测试的环境中使用它们,例如您拥有或有明确权限分析的应用程序。严禁将这些工具用于未经授权的逆向工程、侵犯知识产权或恶意活动。
开发商 jadx-ai-mcp 和 jadx_mcp_server 对于因使用或误用这些工具而导致的任何损害、数据丢失、法律后果或其他后果,概不负责。用户对其行为及其使用造成的任何影响承担全部责任。
负责任地使用。尊重知识产权。遵循合乎道德的黑客行为。
______________________________________________________________________
🙌 贡献或支持
- 觉得有用吗?给它一个⭐️
- 有想法吗?打开一个 问题 或提交PR
- 在上面建东西?DM或提及我——我会将其添加到README中!
______________________________________________________________________
内置于❤️ 面向逆向工程和人工智能社区。
