⚡ 基于 apktool 构建的完全自动化的 MCP 服务器,用于通过像 Claude 这样的大语言模型分析 Android APK 文件——发现漏洞、解析清单文件并轻松进行逆向工程。
</div> <div align="center"> <img alt="banner" height="480px" width="620px" src="https://github.com/user-attachments/assets/eb9037f2-d1c7-45e0-8871-ca8aaade0dd0"> </div>图像由 AI 工具生成。
apktool-mcp-server 是一个与 Apk Tool 集成的 MCP 服务器,它直接与 Model Context Protocol (MCP) 集成,提供实时的大语言模型支持,如 Claude。
想象一下:“反编译 → 意识到上下文的代码审查 → AI 推荐”——所有这些都在实时进行。
观看演示!
https://github.com/user-attachments/assets/d50251b8-6b1c-4341-b18e-ae54eb24a847
https://github.com/user-attachments/assets/c783a604-a636-4e70-9fa8-37e3d219b20b
以下 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 中导出的活动或接收器。”
“列出所有访问 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 内容。”
“列出所有类型为布局的资源文件。”
“在所有资源和 smali 文件中搜索单词 password。”
“检查哪些权限被使用,并将其与典型的过度授权风险进行比较。”
“修改 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 版本。”
# 0. 下载并安装 apktool
https://apktool.org/docs/install
# 1. 测试 apktool 是否已正确配置在环境变量中
$ apktool -version
# 2. 下载 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. 导航到 apktool-mcp-server 目录
cd apktool-mcp-server
# 5. 此项目使用 uv - https://github.com/astral-sh/uv 而不是 pip 来管理依赖项。
## a. 安装 uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
## b. 可选,如果在 apktool-mcp-server 中遇到依赖错误,请设置环境
uv venv
source .venv/bin/activate # 或 .venv\Scripts\activate 在 Windows 上
## c. 可选 安装依赖项
uv pip install httpx fastmcp
# apktool-mcp-server 的设置已完成。
⚡ 轻量级、快速、基于 CLI 的 MCP 客户端,用于 STDIO MCP 服务器,填补了本地 LLM 运行 Ollama 和 MCP 服务器之间的空白。
立即查看:https://github.com/zinja-coder/zin-mcp-client
演示:即将推出...
确保 Claude Desktop 正在运行且启用了 MCP。
例如,我在 Kali Linux 上使用了以下内容:https://github.com/aaddrick/claude-desktop-debian
配置并将 MCP 服务器添加到 LLM 文件中:
nano ~/.config/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json~/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 为克隆此存储库的实际绝对路径然后,通过内置集成导航代码并通过实时代码审查提示进行交互。
如果您想在 Cherry Studio 中配置 MCP 工具,可以参考以下配置。
--directory
path/to/apktool-mcp-server
run
apktool_mcp_server.py
path/to/apktool-mcp-server 为克隆此存储库的实际绝对路径请使用相应的模板打开一个 issue。
已在 Claude Desktop 客户端上测试,对其他 AI 的支持将很快进行测试!
该项目是一个为 Apktool 提供的 MCP 服务器,这是一个由 @iBotPeaches 创建和维护的出色开源 Android 逆向工程工具。所有核心 APK 解码和资源处理逻辑都属于他们。我只是扩展了它,以支持具有 AI 功能的 MCP 服务器。
Apktool 的原始 README.md 已在此仓库中包含以供参考和致谢。
还要感谢 @aaddrick 为基于 Debian 的 Linux 开发了 Claude desktop。
最后,感谢 @anthropics 开发了 Model Context Protocol 和 @FastMCP 团队。
以及所有开源项目维护者和贡献者,他们提供了库和依赖项,使此类项目成为可能。
apktool-mcp-server 及其相关项目继承了 Apache 2.0 许可证。
免责声明
工具 apktool-mcp-server 及其项目下的所有相关工具严格用于教育、研究和道德安全评估目的。它们“按原样”提供,没有任何明示或暗示的保证。用户应确保其使用这些工具的行为符合所有适用的法律、法规和道德准则。
通过使用 apktool-mcp-server,您同意仅在您有权测试的环境中使用它们,例如您拥有或明确获得许可分析的应用程序。任何未经授权的逆向工程、侵犯知识产权或恶意行为都是严格禁止的。
apktool-mcp-server 的开发者不对因使用或误用这些工具而产生的任何损害、数据丢失、法律后果或其他后果负责。用户对其行为及其使用造成的影响承担全部责任。
负责任地使用。尊重知识产权。遵循道德黑客实践。
为逆向工程和 AI 社区打造,充满爱心。