Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Gda

БесплатноНе проверен

安卓逆向工具gda-mcp-server 减少jadxmcp那样的内存压力

GitHubEmbed

Описание

安卓逆向工具gda-mcp-server 减少jadxmcp那样的内存压力

README

通过 MCP 调用 GDACLI Server 模式gda.exe -sv),在 Cursor / Claude 等客户端里做 Android APK 静态分析。

不依赖 GDA GUI,不需要 32 位 Python。

Cursor / Claude
    │  MCP (stdio)
    ▼
gda_mcp_server.py          ← FastMCP
    │  TCP 文本协议
    ▼
gda.exe -sv <apk> <port>   ← 默认端口 18888

环境要求

说明
OS Windows(GDA 仅支持 Windows)
Python 3.10+(推荐 64 位,如 D:\py312\python.exe
依赖 fastmcp>=3.0.2(见 requirements.txt
GDA 本机已安装 GDA.exe(例如 D:\mytools\GDA4.12\GDA.exe

安装依赖:

pip install -r requirements.txt

Cursor 配置

编辑 %USERPROFILE%\.cursor\mcp.json,增加(路径按本机修改):

{
  "mcpServers": {
    "gda-mcp": {
      "command": "D:\\py312\\python.exe",
      "args": [
        "C:\\Users\\ZW\\Desktop\\新建文件夹\\gda-mcp-server\\gda_mcp_server.py"
      ],
      "env": {
        "PYTHONIOENCODING": "utf-8",
        "PYTHONUTF8": "1",
        "GDA_EXE": "D:\\mytools\\GDA4.12\\GDA.exe",
        "GDA_PORT": "18888"
      },
      "timeout": 1800,
      "disabled": false
    }
  }
}
环境变量 含义 默认
GDA_EXE GDA.exe 绝对路径 D:\mytools\GDA4.12\GDA.exe
GDA_PORT -sv 监听端口 18888(避开常见代理占用的 8888)
GDA_HOST 连接地址 127.0.0.1
GDA_PAGE_SIZE 分页默认行数 200
GDA_MAX_PAGE_SIZE 单页最大行数 2000

配置后在 Cursor Settings → MCP 中启用 gda-mcp,必要时刷新 / 重启。


基本用法

在 Cursor 对话里用自然语言即可,例如:

使用 gda-mcp 分析 C:\path\to\xxx.apk
使用 gadmcp 分析 C:\Users\ZW\Desktop\新建文件夹\RshMod_6.69-RshMod.apk
帮我用 GDA MCP 看一下这个 APK 的登录和授权逻辑:D:\samples\app.apk

Agent 会自动调用 gda_start_server 并继续 binfo / attsf / find 等工具,无需手写命令。

分析前必须先启动(或挂接)GDA server(工具层流程):

1. gda_start_server(apk_file="C:\\path\\to\\app.apk")
2. gda_binfo() / gda_attsf() / gda_malscan() / gda_find(...) / gda_dec(...)
3. gda_stop_server()

若本机已有 gda.exe -sv 在跑:

gda_attach(host="127.0.0.1", port=18888)

推荐分析顺序

  1. 侦察gda_binfogda_permissiongda_axmlgda_packergda_cert
  2. 攻击面gda_attsfgda_malscangda_sensinfgda_uri / gda_api
  3. 深挖gda_findgda_listmgda_dec / gda_dasmgda_xref

jadx-mcp 搭配:GDA 找可疑点,jadx 精读 Java / 资源 / 重命名。


工具一览

会话

工具 说明
gda_start_server 启动 gda.exe -sv <apk> <port>
gda_attach 连接已在运行的 -sv
gda_stop_server 停止本 MCP 拉起的进程
gda_status 查看运行状态 / APK / 端口

侦察

工具 说明
gda_binfo 包名、哈希、MainActivity、DEX 统计
gda_pname 包名
gda_permission 权限
gda_axml AndroidManifest
gda_cert 证书
gda_packer 加壳检测
gda_header 第 n 个 DEX 头
gda_appstr 方法引用的字符串(可分页)
gda_interface 接口类
gda_help GDA shell 帮助

安全 / 攻击面

工具 说明
gda_attsf 导出组件 / 攻击面
gda_malscan 恶意行为扫描(可分页)
gda_sensinf 敏感信息(可分页)
gda_uri URL / 路径(可分页)
gda_api 敏感 API(可分页)
gda_native Native 方法

代码

工具 说明
gda_listm 列类方法(可分页)
gda_dec 反编译类/方法(可分页),推荐 class@xxxxxx
gda_dasm 反汇编方法,如 method@0045F0
gda_sclass / gda_pclass 子类 / 父类(class index 十六进制)
gda_find 搜索 class/method/field/string/api/all(可分页)
gda_xref 交叉引用(可分页)
gda_raw 发送原始 GDA 命令(可分页)
gda_set_output set -o 输出到文件

分页(大输出)

下列工具支持 按行 offset / count(默认每页 200 行,单页最多 2000):

gda_malscan · gda_api · gda_find · gda_appstr · gda_sensinf · gda_uri · gda_dec · gda_listm · gda_xref · gda_raw

返回示例:

{
  "ok": true,
  "cmd": "malscan",
  "total_lines": 5000,
  "offset": 0,
  "count": 200,
  "truncated": true,
  "next_offset": 200,
  "text": "..."
}

翻页时对同一命令会缓存全文,避免重复跑 GDA。start / stop / attach 会清空缓存。

gda_malscan()
gda_malscan(offset=200, count=200)
gda_find(search_type="string", name="http", offset=0, count=100)

gda_find / gda_xref 参数

find search_type

class · class_with_package · method · method_with_package · field · api_method · string · all

xref xref_type

class · method · field · string · resource · all

dec 提示:优先用 find 得到的 class@xxxxxx / method@xxxxxx,比 Lcom/...; 更稳。


命令行启动(可选)

Cursor 一般用 stdio,无需手动传参。若要单独跑:

# 默认 stdio(给 MCP 客户端用)
python gda_mcp_server.py

# 指定 GDA 路径
python gda_mcp_server.py --gda-exe "D:\mytools\GDA4.12\GDA.exe"

# HTTP 传输(少用)
python gda_mcp_server.py --http --host 127.0.0.1 --port 8765

注意:--portMCP HTTP 端口,不是 GDA -svGDA_PORT

本地自检(不启 GDA):

python smoke_check.py

目录结构

gda-mcp-server/
  gda_mcp_server.py   # FastMCP 入口与工具注册
  src/
    gda_sv.py         # -sv 进程管理、TCP 客户端、分页、命令映射
    extras.py         # 扩展辅助(主 Activity / Manifest 组件 / 包树 / APK 资源等);当前未挂到 MCP 工具
    __init__.py
  requirements.txt
  smoke_check.py
  README.md           # 本说明

能力边界(与 jadx-mcp)

GDA-MCP 更强 jadx-MCP 更强
malscan / attsf / packer / cert / sensinf GUI 选中类、可读 Java 精读
无头启停 APK 资源文件、重命名写回
原生恶意/攻击面扫描 调试器、包树与字段 API

不做:GDA GUI 联动、进程内 Python 脚本 bridge(需 32 位 Python)。


常见问题

1. GDA -sv is not running
先调用 gda_start_server(apk_file=...)

2. 端口被占用
GDA_PORT(不要用 8888,若本机 Reqable 等已占用)。

3. 启动失败 / 找不到 GDA
检查 GDA_EXE 是否指向真实的 GDA.exe

4. 大结果把上下文撑爆
用分页:先看 truncated / next_offset,再翻页。

5. find -C . 一类「列全部类」
不可靠且可能拖死 -sv;请用具体包名或关键词搜索。

6. 改了工具但 Cursor 仍是旧列表
在 MCP 面板刷新或重启 Cursor。

from github.com/autozw/gda-mcp-server

Установка Gda

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/autozw/gda-mcp-server

FAQ

Gda MCP бесплатный?

Да, Gda MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Gda?

Нет, Gda работает без API-ключей и переменных окружения.

Gda — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Gda в Claude Desktop, Claude Code или Cursor?

Открой Gda на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Gda with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development