A

Apktool-MCP 服务器

@zinja-coder/apktool-mcp-server
1 Stars 139 次浏览 zinja-coder 更新于 2026-08-23

一个集成了Apktool的MCP服务器,通过模型上下文协议使用Claude和其他大语言模型为Android应用程序提供实时反向工程支持。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

apktool-mcp-server (Zin 的反向工程 MCP 套件的一部分)

GitHub contributors apktool-mcp-server
GitHub all releases
GitHub release (latest by SemVer)
Latest release

License

apktool-mcp-server-banner.png 图片由 AI 工具生成。


🤖 apktool-mcp-server 是什么?

apktool-mcp-serverApk Tool 的一个 MCP 服务器,它直接与 模型上下文协议 (MCP) 集成,提供 实时反向工程支持,如 Claude 等大型语言模型

想象一下:“反编译 → 上下文感知代码审查 → AI 建议” —— 全部实时完成。

观看演示!

观看视频

其他用于 Android 反向工程的 MCP 服务器

当前可用的 MCP 工具

以下是可用的 MCP 工具:

  • build_apk() — 从解码的 APKTool 项目构建 APK。
  • list_workspace_projects() — 列出工作空间中的所有 APKTool 项目目录。
  • get_manifest() — 从解码的 APK 项目中获取 AndroidManifest.xml 的内容。
  • get_apktool_yml() — 从解码的 APK 项目中获取 apktool.yml 信息。
  • list_smali_directories() — 列出项目中的所有 smali 目录。
  • list_smali_files() — 列出特定 smali 目录中的 smali 文件,可选地按包前缀过滤。
  • get_smali_file() — 通过类名获取特定 smali 文件的内容。
  • modify_smali_file() — 修改特定 smali 文件的内容。
  • list_resources() — 列出项目中的资源,可选地按资源类型过滤。
  • get_resource_file() — 获取特定资源文件的内容。
  • modify_resource_file() — 修改特定资源文件的内容。
  • search_in_file() — 在具有指定扩展名的文件中搜索模式。
  • check_apktool_version() — 检查已安装的 APKTool 版本。
  • sign_apk() — 签名 APK 文件。
  • install_apk() — 使用 ADB 在连接的设备上安装 APK。// 将迁移到即将推出的 ADB MCP Server
  • extract_dex() — 从原始 APK 中提取 DEX 文件(如果项目中可用)。
  • list_packages() — 使用 ADB 列出连接的 Android 设备上已安装的包。// 将迁移到即将推出的 ADB MCP Server
  • analyze_permissions() — 分析 AndroidManifest.xml 中声明的权限。
  • clean_project() — 清理项目目录以准备重新构建。
  • create_project() — 创建一个新的空 APKTool 项目结构。
  • delete_project() — 删除 APKTool 项目目录。
  • compare_smali_files() — 比较两个 smali 文件并显示差异。
  • get_available_devices() — 获取通过 ADB 连接的可用 Android 设备列表。// 将迁移到即将推出的 ADB MCP Server
  • decode_apk() — 使用 APKTool 解码 APK 文件,提取资源和 smali 代码。

🗒️ 示例提示

🔍 基本代码理解

  • “列出 dvac 项目的所有 smali 目录。”

  • “显示 dvac 项目中 com.vulnerable.component 包前缀下的所有 smali 文件。”

  • “获取 com.vulnerable.component.MainActivity 类的 smali 代码。”

  • “比较 MainActivity.smali 与其旧版本并显示差异。”

  • “在 dvac 项目的 smali 文件中搜索 startActivity 的使用。”

🛡️ 漏洞检测

  • “分析 dvac 的 AndroidManifest.xml 中声明的权限,并标记危险的权限。”

  • “在项目中的所有 .xml 和 .smali 文件中搜索硬编码的 URL 或 IP。”

  • “查找 smali 文件中所有对 PendingIntent.getActivity 的使用。”

  • “检查 dvac 的 AndroidManifest.xml 中导出的活动或接收器。”

  • “列出所有访问 android.permission.SEND_SMS 或 READ_CONTACTS 的 smali 文件。”

🛠️ 反向工程辅助工具

  • “解码此 APK: dvac.apk 并创建一个名为 dvac 的项目。”

  • “创建一个名为 test-harness 的新 APKTool 项目。”

  • “在重建之前清理 dvac 项目。”

  • “从 dvac 项目中提取 DEX 文件以进行外部分析。”

  • “修改 MainActivity.smali,在 onCreate() 开始处插入一条日志语句。”

📦 静态分析

  • “从 dvac 项目中获取完整的 AndroidManifest.xml。”

  • “显示 dvac 项目的 apktool.yml 内容。”

  • “列出所有类型为 layout 的资源文件。”

  • “在所有资源和 smali 文件中搜索单词 password。”

  • “检查使用了哪些权限,并与典型的过度授权风险进行比较。”

🤖 AI 代码修改

  • “修改 MainActivity.smali 中的 onCreate() 方法,添加一条 Toast 消息。”

  • “将 strings.xml 中的所有 http:// 链接替换为 https://。”

  • “在 AndroidManifest.xml 中为所有活动添加 android:exported=false 属性。”

  • “修补 LoginManager.smali 中的 validateLogin 方法,使其始终返回 true。”

  • “向 MainActivity.smali 中的每个方法添加日志语句。”

📄 文档与元数据

  • “列出工作区中的所有已解码 APKTool 项目。”

  • “显示 apktool.yml 配置,以便审查版本、原始 APK 元数据和压缩设置。”

  • “获取通过 ADB 连接的所有可用 Android 设备。(将迁移到 ADB MCP 服务器。)”

  • “从其 apktool.yml 获取关于 dvac 项目的元数据。”

  • “检查当前安装在服务器上的 APKTool 版本。”


🛠️ 开始使用

1. 从发布版下载: https://github.com/zinja-coder/apktool-mcp-server/releases

# 0. Download the apktool-mcp-server-<version>.zip
https://github.com/zinja-coder/apktool-mcp-server/releases

# 1. 
unzip apktool-mcp-server-<version>.zip

├apktool-mcp-server/
  ├── apktool_mcp_server.py
  ├── requirements.txt
  ├── README.md
  ├── LICENSE
```bash

# 2. Navigate to apktool-mcp-server directory
cd apktool-mcp-server

# 3. This project uses uv - https://github.com/astral-sh/uv instead of pip for dependency management.
    ## a. Install uv (if you dont have it yet)
curl -LsSf https://astral.sh/uv/install.sh | sh
    ## b. OPTIONAL, if for any reasons, you get dependecy errors in apktool-mcp-server, Set up the environment
uv venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
    ## c. OPTIONAL Install dependencies
uv pip install httpx fastmcp

# The setup for apktool-mcp-server is done.

🤖 2. Claude Desktop 设置

确保 Claude Desktop 正在运行并启用了 MCP。

例如,我在 Kali Linux 上使用了以下配置:https://github.com/aaddrick/claude-desktop-debian

配置并将 MCP 服务器添加到 LLM 文件中:

nano ~/.config/Claude/claude_desktop_config.json

并在其中添加以下内容:

{
    "mcpServers": {
        "apktool-mcp-server": {
            "command": "/<path>/<to>/uv", 
            "args": [
                "--directory",
                "</PATH/TO/>apktool-mcp-server/",
                "run",
                "apktool_mcp_server.py"
            ]
        }
    }
}

然后,导航代码并通过内置集成使用实时代码审查提示进行交互。

报告错误、问题、功能建议、性能问题、一般问题、文档问题。

  • 请使用相应的模板打开一个问题。

  • 已在 Claude Desktop 客户端上测试,对其他 AI 的支持将很快进行测试!

🙏 致谢

该项目是 Apktool 的 MCP 服务器,Apktool 是由 @iBotPeaches 创建和维护的一款出色的开源 Android 反向工程工具。所有核心 APK 解码和资源处理逻辑都归功于他们。我仅扩展了它以支持我的带有 AI 功能的 MCP 服务器。

📎 原始 README (Apktool)

Apktool 的原始 README.md 包含在此存储库中以供参考和致谢。

还要特别感谢 @aaddrick 为基于 Debian 的 Linux 开发了 Claude 桌面版。

并在最后,感谢@anthropics 开发了 Model Context Protocol 以及 @FastMCP 团队。

📄 许可证

apktool-mcp-server 及所有相关项目继承了 Apache 2.0 许可证。

⚖️ 法律警告

免责声明

工具 apktool-mcp-server 及此项目下的所有相关工具仅限于教育、研究和道德安全评估目的。它们按“原样”提供,不附带任何明示或暗示的保证。用户需独自负责确保其使用这些工具的行为符合所有适用的法律、法规和道德准则。

通过使用 apktool-mcp-server,您同意仅在您被授权测试的环境中使用这些工具,例如您自己拥有的应用程序或您明确获得许可分析的应用程序。未经许可的逆向工程、侵犯知识产权或恶意活动等滥用行为是严格禁止的。

apktool-mcp-server 的开发者不对因使用或误用这些工具而造成的任何损害、数据丢失、法律责任或其他后果承担责任。用户对其行为及其使用所造成的影响承担全部责任。

请负责任地使用。尊重知识产权。遵循道德黑客实践。


怀着对逆向工程和人工智能社区的热爱而构建。

相关 MCP 服务