README
🚀 JEB MCP Server
JEB MCP Server 是一个模型上下文协议(MCP)服务器,它将 Claude Desktop 与用于 Android APK 分析的 JEB 反编译器连接起来。这种集成使得能够直接在 Claude 中实现由人工智能辅助的逆向工程工作流程。
✨ 主要特性
- 反编译:将 DEX 中的方法和类反编译为 Java 源代码。
- 代码导航:列出类、搜索资源并探索交叉引用。
- 批量重命名:批量重命名类、方法、字段和局部变量。
- 资源分析:访问 AndroidManifest.xml、资源和资产文件。
- 交叉引用:查找方法、字段和字符串的所有引用。
- 类层次结构:探索类的实现和继承关系。
🔧 技术细节
该系统由两个组件组成:
- JEB MCP 服务器(
dJEB_mcp_server.py):作为 Jython 脚本在 JEB 内部运行,通过套接字公开 JEB 的 API。 - 桥接脚本(
jeb_mcp_bridge.py):通过标准输入输出将 Claude Desktop 连接到 JEB 服务器。
Claude Desktop <--> jeb_mcp_bridge.py <--> (端口 8851) <--> dJEB_mcp_server.py (JEB)
📦 安装指南
前提条件
- JEB 反编译器(许可版本)
- Claude Desktop
安装步骤
-
克隆此仓库:
git clone https://github.com/yourusername/jeb-mcp-server.git cd jeb-mcp-server -
配置 Claude Desktop: 编辑你的 Claude Desktop MCP 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
添加以下配置:
{ "mcpServers": { "jeb-mcp-server": { "command": "python3", "args": ["/absolute/path/to/jeb-mcp-server/jeb_mcp_bridge.py"] } } } - macOS:
-
在 JEB 中加载脚本:
- 打开 JEB 反编译器。
- 加载目标 APK 文件。
- 运行脚本:
文件→脚本→运行脚本...→ 选择dJEB_mcp_server.py。 - 服务器将开始在端口 8851 上监听。
-
重启 Claude Desktop 以加载 MCP 服务器配置。
💻 使用示例
基础用法
配置完成后,你可以通过 Claude Desktop 使用自然语言与 JEB 进行交互。服务器提供以下工具:
| 工具 | 描述 |
|------|------|
| decompile_method | 将特定方法反编译为 Java 源代码。 |
| decompile_class | 将整个类反编译为 Java 源代码。 |
| list_classes | 列出所有类,支持可选的过滤和分页。 |
| implements_of_class | 获取类/接口的所有实现。 |
| get_xrefs | 获取方法、字段或字符串的交叉引用。 |
| batch_rename | 一次性重命名多个类、方法和字段。 |
| batch_rename_local_variables | 跨多个方法重命名局部变量。 |
| get_manifest_file | 检索并搜索 AndroidManifest.xml。 |
| get_resource_file | 访问资源文件(布局、字符串等)。 |
| search_resources | 使用正则表达式模式搜索资源文件。 |
高级用法
以下是一些可以与 JEB MCP Server 配合使用的强大提示:
1. 深度链接分析
提示:
逐步分析此 Android 应用程序中的深度链接处理。
我希望你:
1. 找出所有处理带有数据方案的意图过滤器的活动。
2. 对于每个深度链接处理程序,跟踪 URL 解析逻辑。
3. 提取所有可能的端点及其参数。
4. 忽略任何分析或跟踪代码。
5. 创建一个包含所有深度链接端点及其功能的综合映射。
请全面探索所有相关类。
2. 智能类重命名
提示:
我想将混淆类 "La/b/c;" 及其方法重命名为有意义的名称。
请:
1. 反编译该类并分析其用途。
2. 找出所有引用或被该类引用的类。
3. 通过查看以下内容来检查更广泛的上下文:
- 父类和接口。
- 调用其方法的类。
- 在其中实例化的类。
4. 仅根据以下内容对有把握的元素进行重命名:
- 方法功能。
- 使用的字符串常量。
- Android 框架模式。
- 常见设计模式。
5. 提供重命名映射并给出解释。
6. 执行批量重命名操作。
要保守行事 - 只重命名你确定的元素。
3. API 端点提取
提示:
提取此应用程序使用的所有 REST API 端点。
请:
1. 找出所有 HTTP 客户端的使用情况(Retrofit、OkHttp、HttpURLConnection 等)。
2. 定位 API 接口定义或基本 URL 常量。
3. 对于每个端点,提取:
- HTTP 方法(GET、POST 等)。
- 完整的 URL 路径。
- 请求参数。
- 响应处理。
4. 按功能/模块对端点进行分组。
5. 创建带有示例的 API 文档。
专注于实际的 API 调用,忽略日志记录或分析。
4. 广播接收器分析
提示:
分析此应用程序中的所有广播接收器。
对于每个接收器:
1. 确定它监听的意图。
2. 解释它执行的操作。
3. 检查它是否导出以及安全影响。
4. 找出应用程序中发送广播的位置。
5. 绘制完整的广播通信流程映射。
记录导出接收器的任何安全问题。
5. 交叉引用跟踪
跟随执行流程:
“从 MainActivity 的 onCreate 方法开始,跟踪所有与用户登录相关的方法调用,并绘制包含所有涉及类的完整身份验证流程。”
🤝 贡献指南
欢迎贡献代码!请随时提交问题或拉取请求。
开发说明
代码库包括:
- Jython 代码(
dJEB_mcp_server.py):在 JEB 的 Jython 环境中运行。 - Python 3 代码(
jeb_mcp_bridge.py):标准的 Python 标准输入输出桥接。
贡献时,请保持与 JEB 的 Jython 2.7 环境兼容。
📄 许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
🙏 致谢
🛠️ 支持
如果遇到问题、有疑问或有功能请求,请在 GitHub 上创建一个问题。
注意:这是一个非官方工具,与 PNF Software 或 Anthropic 没有关联或得到其认可。
扫码联系在线客服