APK Editor MCP Server
APK Editor MCP
一个强大的 Android APK 逆向工程 MCP (Model Context Protocol) 服务器,支持 APK 反编译、修改、重打包,以及快速 DEX 内存编辑。
特性
- 快速 DEX 编辑 - 内存操作,无需解包,秒级打开大型 APK
- Smali 转 Java - 内置 jadx-core,一键反编译
- 智能搜索 - 搜索类名、字符串、方法调用
- 实时修改 - 直接修改 smali 代码并保存
- 批量操作 - 批量反编译整个包
安装
前置要求
- Python 3.10+
- Java 17+
- APKEditor.jar
安装步骤
# 克隆仓库
git clone https://github.com/your-repo/apk-editor-mcp.git
cd apk-editor-mcp
# 安装依赖
pip install -e .
# 配置 Windsurf/Cursor MCP
MCP 配置
在 ~/.codeium/windsurf/mcp_config.json 中添加:
{
"mcpServers": {
"apk-editor": {
"command": "python",
"args": ["K:/path/to/APK-Editor-MCP-Server/mcp-server/run_server.py"]
}
}
}
工具列表
快速 DEX 编辑器 (推荐)
| 工具 | 说明 |
|------|------|
| fast_dex_open | 打开 APK 加载 DEX 到内存(秒开) |
| fast_dex_list_classes | 列出所有类 |
| fast_dex_search_class | 搜索类名(支持正则) |
| fast_dex_get_class | 获取类的 smali 代码 |
| fast_dex_summary | 获取类摘要(方法列表、代码长度) |
| fast_dex_get_paged | 分页获取 smali(避免超 token) |
| fast_dex_modify_class | 修改类的 smali 代码 |
| fast_dex_save | 保存修改到 APK |
| fast_dex_to_java | smali 转 Java 代码 |
| fast_dex_deobfuscate | 反混淆并转 Java |
| fast_dex_decompile_package | 批量反编译包下所有类 |
| fast_dex_close | 关闭编辑器 |
APK 操作
| 工具 | 说明 |
|------|------|
| apk_decode | 反编译 APK 到目录 |
| apk_build | 从目录构建 APK |
| apk_info | 获取 APK 信息 |
| apk_sign | 签名 APK(默认debug.keystore) |
| apk_verify | 验证 APK 签名 |
| fast_manifest_read | 快速读取 AndroidManifest.xml |
| fast_manifest_modify | 快速修改 AndroidManifest.xml |
| fast_manifest_patch | 快速修补 Manifest(正则替换) |
| apk_merge | 合并分割 APK (XAPK/APKS) |
| apk_protect | 保护/混淆 APK 资源 |
| apk_refactor | 反资源混淆 |
文件操作
| 工具 | 说明 |
|------|------|
| file_list | 列出目录内容 |
| file_read | 读取文件 |
| file_write | 写入文件 |
| file_copy | 复制文件 |
| file_move | 移动文件 |
| file_delete | 删除文件 |
Smali 操作
| 工具 | 说明 |
|------|------|
| smali_parse | 解析 smali 文件结构 |
| smali_get_method | 提取指定方法 |
| smali_replace_method | 替换方法实现 |
| smali_insert_code | 在方法中插入代码 |
| smali_gen_log | 生成 Log.d 调用代码 |
| smali_gen_return | 生成 return 语句代码 |
ADB 工具
| 工具 | 说明 |
|------|------|
| adb_list_devices | 列出所有连接的设备 |
| adb_install | 安装 APK 到设备 |
| adb_uninstall | 卸载应用 |
| adb_logcat | 获取设备日志 |
| adb_screenshot | 截取设备屏幕 |
| adb_device_info | 获取设备详细信息 |
| adb_list_packages | 列出已安装的应用 |
| adb_clear_data | 清除应用数据 |
资源编辑工具
| 工具 | 说明 |
|------|------|
| res_read_strings | 读取 strings.xml |
| res_modify_string | 修改单个字符串 |
| res_batch_modify_strings | 批量修改字符串 |
| res_read_colors | 读取 colors.xml |
| res_modify_color | 修改颜色值 |
| res_search | 搜索资源内容 |
| res_list_files | 列出资源文件 |
| res_read_xml | 读取任意 XML 资源 |
| res_modify_xml | 修改任意 XML 资源 |
| res_add_string | 添加新字符串 |
| res_delete_string | 删除字符串 |
搜索工具
| 工具 | 说明 |
|------|------|
| search_text | 搜索文本内容 |
| search_string | 搜索 smali 字符串常量 |
| search_method | 搜索方法调用 |
| find_class | 查找类文件路径 |
| list_classes | 列出所有 smali 类 |
使用示例
快速破解 VIP
# 1. 打开 APK
fast_dex_open("app.apk")
# 2. 搜索 VIP 相关类
fast_dex_search_class("VipInfo")
# 3. 查看类结构
fast_dex_summary("Lcom/example/VipInfo;")
# 4. 获取并查看代码
fast_dex_to_java("Lcom/example/VipInfo;")
# 5. 修改 isVip 方法返回 true
fast_dex_modify_class("Lcom/example/VipInfo;", new_smali_code)
# 6. 保存
fast_dex_save("app_cracked.apk")
搜索字符串
# 搜索登录相关
fast_dex_search_string("login")
fast_dex_search_string("password")
批量反编译
# 反编译整个包
fast_dex_decompile_package("com.example.app.*")
完整破解流程(含ADB测试)
# 1. 打开APK
fast_dex_open("app.apk")
# 2. 修改VIP验证
fast_dex_modify_class("Lcom/example/VipInfo;", new_smali_code)
# 3. 保存并签名
fast_dex_save("app_cracked.apk")
apk_sign(apk_path="app_cracked.apk")
# 4. 安装到设备测试
adb_list_devices() # 查看连接的设备
adb_install(apk_path="app_cracked_signed.apk", replace=True)
# 5. 查看运行日志
adb_logcat(filter_tag="VipInfo", lines=50)
# 6. 清除数据重新测试
adb_clear_data(package_name="com.example.app")
项目结构
APK-Editor-MCP-Server/
├── mcp-server/ # Python MCP 服务器
│ ├── apk_editor_mcp/
│ │ ├── server.py # MCP 服务器主文件
│ │ ├── fast_dex.py # 快速 DEX 编辑器
│ │ ├── apk_editor.py # APK 操作工具
│ │ ├── file_utils.py # 文件操作
│ │ ├── smali_utils.py# Smali 操作
│ │ └── search_utils.py # 搜索工具
│ ├── run_server.py # 启动脚本
│ └── requirements.txt
├── java-core/ # Kotlin/Java DEX 编辑核心
│ ├── src/main/kotlin/
│ │ └── com/apkeditor/dex/
│ │ ├── DexEditor.kt # DEX 编辑器核心
│ │ └── Main.kt # 命令行入口
│ ├── build.gradle.kts
│ └── build/libs/
│ └── dex-editor.jar # 编译产物
├── libs/
│ ├── APKEditor.jar # APK 编辑核心
│ ├── dex-editor.jar # DEX 编辑器(内置 jadx-core)
│ └── apksigner.jar # APK 签名工具
└── README.md
技术栈
- Python - MCP 服务器
- Kotlin - DEX 编辑器核心
- dexlib2/smali - DEX 操作库
- jadx-core - Java 反编译
- APKEditor - APK 打包工具
License
MIT License
贡献
欢迎提交 Issue 和 Pull Request!