MAC下JADX+MCP+OpenCode自动APK逆向分析

概述

本文档介绍如何在 macOS 上配置 JADX 反编译工具与 OpenCode 的 MCP 连接,实现 APK 分析。

架构说明

┌─────────────┐     ┌──────────────────┐     ┌──────────────────┐
│  OpenCode   │ ──► │ jadx-mcp-server  │ ──► │  JADX Plugin     │
│  (MCP Client)   │     (Python 服务器)  │     │  (localhost:8650)│
│              │     │ (:8651)          │     │                  │
└─────────────┘     └──────────────────┘     └──────────────────┘

注意:JADX 插件本身不是 MCP 服务器,需要通过 jadx-mcp-server (Python) 作为中间层转换。


一、安装 JADX 及插件

1.1 安装 JADX

# 使用 Homebrew 安装
brew install jadx

1.2 安装 JADX AI MCP 插件

jadx plugins --install "github:zinja-coder:jadx-ai-mcp"

1.3 验证插件安装

jadx plugins list


二、安装 jadx-mcp-server (Python 中间层)

2.1 安装 uv (Python 包管理器)

curl -LsSf https://astral.sh/uv/install.sh | sh

安装完成后需要加载环境变量:

source $HOME/.local/bin/env

建议将以下内容添加到 ~/.zshrc

# uv
export PATH="$HOME/.local/bin:$PATH"

2.2 下载 jadx-mcp-server

# 创建工作目录
mkdir -p ~/jadx-mcp-server
cd ~/jadx-mcp-server

# 下载最新版本 (替换为最新版本号)
curl -L https://github.com/zinja-coder/jadx-ai-mcp/releases/download/v6.3.0/jadx-mcp-server-6.3.0.zip -o jadx-mcp-server.zip

# 解压
unzip jadx-mcp-server.zip


三、配置 OpenCode MCP

3.1 编辑 OpenCode 配置文件

配置文件位置:~/.config/opencode/opencode.json

添加 MCP 配置:

{
  "mcp": {
    "jadx-ai": {
      "type": "remote",
      "url": "http://localhost:8651/mcp",
      "enabled": true
    }
  }
}

3.2 验证配置

opencode mcp list
opencode mcp debug jadx-ai


四、启动顺序 (每次使用时)

步骤 1: 启动 JADX-GUI 并加载 APK

jadx-gui

在 JADX 界面中:

  1. File → Open 选择要分析的 APK 文件
  2. 等待加载完成
  3. 插件会自动启动 HTTP 服务器 (默认端口 8650)

步骤 2: 启动 jadx-mcp-server

# 进入工作目录
cd ~/jadx-mcp-server/jadx-mcp-server

# 启动 MCP 服务器 (后台运行)
export PATH="$HOME/.local/bin:$PATH"
nohup uv run jadx_mcp_server.py --http > /tmp/jadx-mcp.log 2>&1 &

# 验证启动成功
curl -s http://127.0.0.1:8651/mcp

步骤 3: 重启 OpenCode

完全退出 OpenCode 应用后重新启动。

步骤 4: 验证连接

opencode mcp list
# 应该显示: ●  ✓ jadx-ai connected


五、使用 JADX MCP 工具

在 OpenCode 中可以直接使用以下工具:

# 获取所有类
jadx-ai_get_all_classes(count=20)

# 获取 AndroidManifest
jadx-ai_get_android_manifest()

# 搜索类
jadx-ai_search_classes_by_keyword(search_term="activity")

# 获取类源代码
jadx-ai_get_class_source(class_name="com.huawei.LauncherActivity")

# 获取方法列表
jadx-ai_get_methods_of_class(class_name="com.huawei.LauncherActivity")

# 查找类的引用
jadx-ai_get_xrefs_to_class(class_name="com.huawei.LauncherActivity")

# 查找方法引用
jadx-ai_get_xrefs_to_method(class_name="com.huawei.LauncherActivity", method_name="onCreate")

# 获取资源文件
jadx-ai_get_resource_file(resource_name="values/strings.xml")


六、常见问题

Q1: opencode mcp list 显示 404

  • 确保 jadx-mcp-server 已启动
  • 确保 URL 是 http://localhost:8651/mcp (带 /mcp 后缀)

Q2: MCP 连接成功但无工具可用

  • 确保 JADX-GUI 已加载 APK 文件
  • 插件需要先加载文件才能提供分析功能

Q3: JADX 插件端口修改

  • 默认端口: 8650
  • MCP Server 连接端口: 8651
  • 如需修改,使用参数: uv run jadx_mcp_server.py --http --jadx-port 8652

七、相关资源

  • JADX AI MCP 插件: https://github.com/zinja-coder/jadx-ai-mcp
  • JADX MCP Server: https://github.com/zinja-coder/jadx-mcp-server
  • 文档: https://jadx-ai-mcp.readthedocs.io/
点赞