apktool-mcp-server 是一个建立在 Apktool 之上的 MCP(Model Context Protocol)服务器,属于作者 Zin 的 Android 逆向工程 MCP 套件(同套件还包含 JADX-MCP-Server)。它的定位是把 Apktool 的解包能力与 Claude 等大语言模型连接起来,实现“反编译 → 上下文感知的代码审查 → AI 建议”的实时流程,可用于分析 Android APK、发现潜在漏洞、解析清单文件以及进行逆向工程辅助工作。
主要能力 该服务器暴露了一组 MCP 工具,涵盖解码、查看、修改与构建等环节:
- 解码与构建:decode_apk() 使用 APKTool 解码 APK,提取资源与 smali 代码;build_apk() 从已解码的 APKTool 项目重新构建 APK;clean_project() 清理项目目录以便重建。
- 清单与配置:get_manifest() 获取已解码项目的 AndroidManifest.xml 内容;get_apktool_yml() 获取 apktool.yml 信息。
- smali 操作:list_smali_directories() 列出项目中的 smali 目录;list_smali_files() 列出指定 smali 目录中的文件,可按包前缀过滤;get_smali_file() 按类名获取指定 smali 文件内容;modify_smali_file() 修改指定 smali 文件内容。
- 资源操作:list_resources() 列出项目资源,可按资源类型过滤;get_resource_file() 获取指定资源文件内容;modify_resource_file() 修改指定资源文件内容。
- 搜索:search_in_file() 在指定扩展名的文件中搜索模式。
使用方式 官方给出的上手步骤包括:
- 从 Releases 页面下载:https://github.com/zinja-coder/apktool-mcp-server/releases
- 推荐使用本地 LLM(Ollama)配合 Zin MCP Client 运行;该客户端定位为轻量、快速、简单的 CLI 型 MCP 客户端,用于 STDIO MCP 服务器,在 Ollama 本地模型与 MCP 服务器之间提供桥接,地址为 https://github.com/zinja-coder/zin-mcp-client
- Claude Desktop 配置:确保 Claude Desktop 在启用 MCP 的情况下运行,在配置文件中添加 MCP 服务器。Windows 路径为 %APPDATA%\Claude\claude_desktop_config.json,macOS 路径为 ~/Library/Application Support/Claude/claude_desktop_config.json,并写入相应内容,其中需要将 path/to/uv 替换为实际 uv 可执行文件路径,path/to/apktool-mcp-server 替换为克隆该仓库的绝对路径。
- Cherry Studio 配置:如需在 Cherry Studio 中配置该 MCP 工具,可参考官方给出的相应配置说明。
适用场景与示例提示词 官方 README 提供了若干示例提示词场景,可用于指导使用:
- 基础代码理解:列出某个项目(如 dvac)的所有 smali 目录;显示指定包前缀下的全部 smali 文件;获取某个类的 smali 代码;比较 MainActivity.smali 与上一版本的差异;搜索 smali 文件中 startActivity 的使用。
- 漏洞检测:分析 AndroidManifest.xml 中声明的权限并标记危险权限;搜索硬编码 URL 或 IP;查找 PendingIntent.getActivity 的使用;检查导出的活动或接收器;列出访问 SEND_SMS 或 READ_CONTACTS 权限的 smali 文件。
- 逆向工程辅助:解码指定 APK 并创建项目;创建新的 APKTool 项目;重建前清理项目;提取 DEX 文件供外部分析;修改 MainActivity.smali 在 onCreate() 开头插入日志。
- 静态分析:获取完整 AndroidManifest.xml;查看 apktool.yml 内容;列出布局类资源文件;在所有资源与 smali 文件中搜索 password;对照常见的过度授权风险检查所用权限。
- AI 代码修改:修改 onCreate() 方法添加 toast;将 strings.xml 中的 http:// 全部替换为 https://;为所有 activity 添加 android:exported=false;给 LoginManager.smali 中 validateLogin 方法打补丁使其始终返回 true;为 MainActivity.smali 中每个方法添加日志语句。
- 文档与元数据:列出工作区中所有已解码的 APKTool 项目;查看 apktool.yml 配置以核对版本、原始 APK 元数据与压缩设置;获取通过 ADB 连接的所有 Android 设备(该功能计划迁移至 ADB MCP Server);从 apktool.yml 获取项目元数据;检查服务器上当前安装的 APKTool 版本。
兼容与依赖 该项目在 Claude Desktop 客户端上测试通过,对其他 AI 的支持官方表示稍后测试。核心的 APK 解码与资源处理逻辑来自开源 Android 逆向工程工具 Apktool(作者 @iBotPeaches),apktool-mcp-server 在其基础上扩展了 AI 能力。项目致谢了 Claude desktop for Debian based Linux 的作者 @aaddrick、Model Context Protocol 与 FastMCP 团队。项目采用 Apache 2.0 许可。
限制与法律提示 该项目明确声明:所有相关工具仅用于教育、研究和合乎道德的 security assessment 目的,按“原样”提供,不附带任何明示或暗示的保证。使用者须自行确保使用行为符合所有适用法律、法规和道德准则,仅在获得授权的环境中使用,例如自己拥有的应用或已获得明确分析许可的应用。禁止将其用于未经授权的逆向工程、侵犯知识产权或恶意活动。开发者不对因使用或误用这些工具造成的任何损害、数据丢失、法律后果或其他后果承担责任。