关于 apktool-mcp-server (Part of Zin's Reverse Engineering MCP Suite)
apktool-mcp-server 是基于 apktool 构建的 MCP 服务,供 Claude 等 LLM 分析 Android APK,包括解析清单、查看与修改 smali 代码和资源文件。它面向安全研究人员和逆向工程人员,属于 Zin 逆向工程 MCP 套件的一部分。
主要功能
- 01APK 反编译与项目构建
- 02解析 AndroidManifest.xml 与 apktool.yml
- 03列出、读取与修改 smali 文件
- 04查看与修改资源文件
- 05在项目文件中搜索模式
适用场景
- 01检查 APK 清单中的导出组件和危险权限
- 02在 smali 代码中搜索敏感 API 的调用位置
- 03修改 smali 代码后重新构建 APK 用于测试
MCP 相关
apktool-mcp-server 是一个 MCP 服务,向 MCP 客户端暴露 decode_apk、get_manifest、modify_smali_file 等工具,使 LLM 可以直接操作解码后的 APK 项目。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
apktool-mcp-server(Zin 逆向工程 MCP 套件的一部分)
⚡ 基于 apktool 构建的全自动 MCP 服务,可使用 Claude 等大模型分析 Android APK——发现漏洞、解析清单并轻松进行逆向工程。
图片由 AI 工具生成。
🤖 什么是 apktool-mcp-server?
apktool-mcp-server 是一个用于 Apk Tool 的 MCP 服务,可直接集成 Model Context Protocol(MCP),为 Claude 等大模型提供实时逆向工程支持。
可以这样理解:“反编译 → 上下文感知代码审查 → AI 建议”——全部实时完成。
观看演示!
https://github.com/user-attachments/assets/d50251b8-6b1c-4341-b18e-ae54eb24a847
- 解决 CTF 挑战
https://github.com/user-attachments/assets/c783a604-a636-4e70-9fa8-37e3d219b20b
Zin MCP 套件中的其他项目
当前 MCP 工具
可用的 MCP 工具如下:
build_apk()— 根据已解码的 APKTool 项目构建 APK。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()— 在具有指定扩展名的文件中搜索匹配内容。clean_project()— 清理项目目录,为重新构建做准备。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 中是否有导出的 activity 或 receiver。”
-
“列出所有访问 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 中为所有 activities 添加 android:exported=false 属性。”
-
“修补 LoginManager.smali 中的 validateLogin 方法,使其始终返回 true。”
-
“在 MainActivity.smali 的每个方法中添加日志语句。”
📄 文档和元数据
-
“列出工作区中所有已解码的 APKTool 项目。”
-
“显示 apktool.yml 配置,以查看版本、原始 APK 元数据和压缩设置。”
-
“获取通过 ADB 连接的所有可用 Android 设备。(将迁移至 ADB MCP Server。)”
-
“从 apktool.yml 获取 dvac 项目的元数据。”
-
“检查服务器上当前安装的 APKTool 版本。”
🛠️ 开始使用
1. 从 Releases 下载:https://github.com/zinja-coder/apktool-mcp-server/releases
# 0. Download and install apktool
https://apktool.org/docs/install
# 1. Test whether apktool has been correctly configured in the environment variables
$ apktool -version
# 2. Download the apktool-mcp-server-<version>.zip
https://github.com/zinja-coder/apktool-mcp-server/releases
# 3.
unzip apktool-mcp-server-<version>.zip
├apktool-mcp-server/
├── apktool_mcp_server.py
├── requirements.txt
├── README.md
├── LICENSE
# 4. Navigate to apktool-mcp-server directory
cd apktool-mcp-server
# 5. 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. 使用 Ollama 和 Zin MCP Client 运行本地大模型 — 推荐
⚡ 轻量、快速、简洁、基于命令行的 MCP 客户端,适用于 STDIO MCP 服务,可弥合本地 Ollama 大模型与 MCP 服务之间的差距,提供连接桥梁。
立即查看:https://github.com/zinja-coder/zin-mcp-client
演示:即将推出……
🤖 3. Claude Desktop 设置
确保 Claude Desktop 正在运行且已启用 MCP。
例如,我在 Kali Linux 上使用了以下工具:https://github.com/aaddrick/claude-desktop-debian
配置并将 MCP 服务添加到 LLM 文件中:
nano ~/.config/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/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"
]
}
}
}
替换:
- 将
path/to/uv替换为uv可执行文件的实际路径 - 将
path/to/apktool-mcp-server替换为克隆此仓库的绝对路径
然后,导航到代码,并通过内置集成使用实时代码审查提示词进行交互。
4. Cherry Studio 设置
如果要在 Cherry Studio 中配置 MCP 工具,可参考以下配置。
- 类型:stdio
- command:uv
- 参数:
--directory
path/to/apktool-mcp-server
run
apktool_mcp_server.py
- 将
path/to/apktool-mcp-server替换为克隆此仓库的绝对路径
报告 Bug、问题、功能建议、性能问题、一般疑问或文档问题。
-
请使用相应模板提交 issue。
-
已在 Claude Desktop 客户端上测试,近期将测试对其他 AI 的支持!
🙏 致谢
本项目是一个用于 Apktool 的 MCP 服务。Apktool 是一款出色的开源 Android 逆向工程工具,由 @iBotPeaches 创建并维护。所有 APK 解码和资源处理的核心逻辑均归其所有。我只是在此基础上扩展了 AI 功能,以支持我的 MCP 服务。
此仓库中包含 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 的开发者概不负责。用户须对自身行为及其使用造成的任何影响承担全部责任。
请负责任地使用。尊重知识产权。遵循符合伦理的黑客实践。
🙌 参与贡献或提供支持
参与贡献
- 觉得有用?点个 ⭐️
- 有想法?创建一个 issue 或提交 PR
- 基于此项目构建了新内容?给我发私信或提及我——我会把它添加到 README 中!
已通过审计并获得评估徽章
感谢 Mseep.net 执行审计并提供评估徽章。
为逆向工程和 AI 社区倾情打造 ❤️。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
