⚡ 完全自动化的MCP服务器,旨在与JADX-AI-MCP插件通信,使用像Claude这样的大型语言模型(LLMs)分析Android APK,轻松发现漏洞、解析清单文件并进行逆向工程。
感谢这些杰出人士的贡献⭐
<table> <tr align="center"> <td> <a href="https://github.com/badmonkey7"> <img src="https://gips1.baidu.com/it/u=4292136168,2689505650&fm=3081&app=3081&f=JPEG?w=438&h=438" width="30px;" alt=""/> <br /><sub><b>badmonkey7</b></sub> </a> </td> <td> <a href="https://github.com/tiann"> <img src="https://gips3.baidu.com/it/u=2519281999,3564356871&fm=3081&app=3081&f=JPEG?w=460&h=460" width="30px;" alt=""/> <br /><sub><b>tainn</b></sub> </a> </td> <td> <a href="https://github.com/ljt270864457"> <img src="https://gips1.baidu.com/it/u=1103326137,3618293560&fm=3081&app=3081&f=JPEG?w=460&h=460" width="30px;" alt=""/> <br /><sub><b>ljt270864457</b></sub> </a> </td> <td> <a href="https://github.com/ZERO-A-ONE"> <img src="https://gips1.baidu.com/it/u=2439541198,3017953186&fm=3081&app=3081&f=PNG?w=460&h=460" width="30px;" alt=""/> <br /><sub><b>ZERO-A-ONE</b></sub> </a> </td> <td> <a href="https://github.com/neoz"> <img src="https://gips3.baidu.com/it/u=412250619,1270748392&fm=3081&app=3081&f=PNG?w=252&h=252" width="30px;" alt=""/> <br /><sub><b>neoz</b></sub> </a> </td> <td> <a href="https://github.com/SamadiPour"> <img src="https://gips3.baidu.com/it/u=304442657,961624924&fm=3081&app=3081&f=JPEG?w=460&h=460" width="30px;" alt=""/> <br /><sub><b>SamadiPour</b></sub> </a> </td> <td> <a href="https://github.com/wuseluosi"> <img src="https://gips2.baidu.com/it/u=3795219489,1548763439&fm=3081&app=3081&f=PNG?w=420&h=420" 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://gips1.baidu.com/it/u=353485616,3334637299&fm=3081&app=3081&f=JPEG?w=460&h=460" width="30px;" alt=""/> <br /><sub><b>tbodt</b></sub> </a> </td> <td> <a href="https://github.com/LilNick0101"> <img src="https://gips2.baidu.com/it/u=1236027327,3424768144&fm=3081&app=3081&f=PNG?w=420&h=420" width="30px;" alt=""/> <br /><sub><b>LikNick0101</b></sub> </a> </td> <td> <a href="https://github.com/lwsinclair"> <img src="https://gips1.baidu.com/it/u=2569636476,967744915&fm=3081&app=3081&f=JPEG?w=314&h=314" width="30px;" alt=""/> <br /><sub><b>lwsinclair</b></sub> </a> </td> </tr> </table> </div> <!-- 仍在早期开发阶段——预期会有错误、崩溃和逻辑错误。--> <!-- MCP(模型上下文协议)服务器连接到[JADX](https://github.com/skylot/jadx)的一个自定义插件[JADX-AI-MCP](https://github.com/zinja-coder/jadx-ai-mcp),并直接提供给本地LLMs如Claude Desktop的逆向工程能力。--> <div align="center"> <img alt="banner" height="480px" widht="620px" src="static/image.png"> </div> <!--  -->JADX MCP Server 是一个独立的Python服务器,它通过MCP(模型上下文协议)与修改版的jadx-gui(参见:jadx-ai-mcp)交互。它允许LLMs实时与反编译的Android应用程序上下文进行通信。
JADX-AI-MCP 是一个用于JADX反编译器的插件,它直接集成到模型上下文协议(MCP),以提供实时的AI支持的逆向工程,例如使用Claude这样的LLMs。
思考:“反编译 → 意识到代码审查 → AI建议”——所有这些都是实时进行的。
sequenceDiagram
LLM CLIENT->>JADX MCP SERVER: 调用MCP工具
JADX MCP SERVER->>JADX AI MCP PLUGIN: 发送HTTP请求
JADX AI MCP PLUGIN->>REQUEST HANDLERS: 处理HTTP请求
REQUEST HANDLERS->>JADX GUI: 执行操作/收集数据
JADX GUI->>REQUEST HANDLERS: 操作完成/数据收集完毕
REQUEST HANDLERS->>JADX AI MCP PLUGIN: 构造HTTP响应
JADX AI MCP PLUGIN->>JADX MCP SERVER: 发送HTTP响应
JADX MCP SERVER->>LLM CLIENT: 返回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/f42d8072-0e3e-4f03-93ea-121af4e66eb1
https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec
这是一个结合了两个工具的组合:
以下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() — 根据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() :检索资源文件内容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等)吗?"
🐞 调试助手
"从调试器获取堆栈帧、变量和线程,并提供摘要"
"基于调试器中的堆栈帧,解释应用程序的执行流程"
"根据变量的状态,是否存在安全威胁?"
演示:本地执行代码审查以查找漏洞
https://github.com/user-attachments/assets/4cd26715-b5e6-4b4b-95e4-054de6789f42
添加对apktool的支持
添加对Hermes代码的支持(ReactNative应用程序)
添加Docker支持
添加更多有用的MCP工具
让LLM能够修改JADX中的代码
添加提示模板,让LLM访问Android APK文件作为资源
构建支持本地LLM的MCP客户端
最终目标:使所有Android逆向工程和APK修改工具都能连接到单个MCP服务器,尽可能简化APK文件的逆向工程过程。
与JADX-AI-MCP相关的文件可以在这里找到
与jadx-mcp-server相关的文件仅在此仓库中可以找到。
此项目是一个插件,用于JADX,这是一个由@skylot创建和维护的出色开源Android反编译器。所有的核心反编译逻辑都归他们所有。我只是扩展了它,以支持我的具有AI能力的MCP服务器。
JADX的原始README.md已包含在此仓库中,供参考和致谢。
这个MCP服务器得益于JADX-GUI的可扩展性和出色的Android逆向工程社区。
还要特别感谢@aaddrick为Debian基于Linux的系统开发了Claude桌面。
最后感谢@anthropics开发了模型上下文协议以及@FastMCP团队。
以及所有开源维护者和贡献者,他们的库和依赖项使得像这样的项目成为可能。
感谢Mseep.net进行审计并提供评估徽章。
此项目使用以下优秀的库。
插件 - Java
MCP服务器 - Python
此插件继承了原始JADX存储库的Apache 2.0许可证。
免责声明
工具jadx-ai-mcp和`jadx