# APK MCP

APK MCP 是 MT 提供的本机 MCP 服务,可使用 AI 聊天工具、Agent 等 MCP 客户端连接。

连接后,AI 工具可以分析本机 APK 的应用信息、资源、布局、字符串和 Dex/Smali 代码,也支持按需修改相关内容,并重新打包、签名生成新的 APK。

你可以把它理解为把 MT 的部分 APK 分析与修改能力开放给 AI:AI 负责理解你的需求、调用工具和整理结果,MT 负责在本机读取 APK、执行修改、重新打包与签名。实际使用时仍建议只处理你有权分析或修改的 APK,并对 AI 给出的结论和修改结果进行确认。

# 功能入口

在 MT 主界面打开侧拉栏,进入工具分组,点击 APK MCP

alt

进入后可以启动或停止 MCP 服务、复制连接地址、打开设置、查看历史工作区,也可以点击右上角的帮助查看使用介绍。一般情况下,如果 AI 客户端和 MT 在同一台手机上,使用本地地址即可;如果 AI 客户端在另一台设备上,则使用局域网地址,并确保两台设备位于同一个局域网中。

# 快速开始

# 1. 启动服务

打开 APK MCP 页面,点击启动。服务启动后,复制页面中显示的 MCP 地址,通常本地地址类似:

http://127.0.0.1:8787/mcp

如果你的 AI 客户端运行在电脑或另一台手机上,请复制局域网地址,并确认网络可以访问当前手机。

# 2. 在 AI 客户端配置 MCP

在支持 MCP 的 AI 客户端中添加一个新的 MCP 服务:

  • 地址填写刚刚复制的 MCP 地址
  • 传输类型选择 Streamable HTTP

保存后,客户端会连接 MT 并读取可用工具。有些客户端还需要在聊天页面中手动启用该 MCP 服务,启用后 AI 才能调用 MT 的 APK 工具。

# 3. 让 AI 打开 APK 进行分析或修改

把 APK 提供给 AI 后,就可以直接描述目标。第一次使用建议先让 AI 做一次简单分析,例如:

请简单分析下当前 APK 文件,告诉我包名、应用名、入口 Activity、权限和主要 Dex 概况

确认 AI 找到了正确的 APK 后,也可以继续执行修改类任务,例如:

请把当前 APK 文件的应用名改成测试版并重新打包

AI 会根据你的描述调用 MT 的工具打开 APK、读取内容、执行修改,并在需要时生成新的 APK 文件。修改范围越具体,AI 越容易给出可核对、可回退的操作过程。

# 如何把 APK 提供给 AI

APK MCP 支持多种方式让 AI 找到要处理的 APK。推荐优先使用“当前 APK 文件”,因为它不需要记路径,也不受 MCP 操作目录限制。

# 1. 使用当前 APK 文件

在 MT 文件列表中点击某个 APK 文件,停留在 APK 信息对话框中,不要关闭它。然后回到 AI 客户端,对 AI 说“当前 APK 文件”即可。

alt

例如:

请简单分析下当前 APK 文件

这种方式适合临时检查一个 APK,也适合先让 AI 看整体信息,再继续追问资源、布局、字符串或 Smali 代码。

# 2. 使用已安装应用

在 MT 的已安装应用界面点击一个 APP,停留在应用信息对话框中。之后同样可以让 AI 处理“当前 APK 文件”。

例如:

请分析下当前 APK 文件,重点看它的包名、签名信息和入口组件

这种方式适合从已安装应用开始分析,不需要你先手动找到对应的安装包文件。

# 3. 使用 MCP 操作目录中的 APK

把 APK 文件放到 APK MCP 设置里的MCP 操作目录中,然后在聊天时告诉 AI 具体文件名、应用名或包名。AI 可以先列出目录中的 APK,再根据这些信息匹配目标。

例如:

请简单分析下 test.apk 文件
请简单分析下 MTestAPP

如果操作目录下 APK 较多,建议优先给出明确文件名;如果你只记得应用名或包名,也可以告诉 AI,让它先列出可用 APK 再匹配目标。

# MCP 操作目录

MCP 操作目录是 APK MCP 的文件交换目录。AI 列出可打开 APK 时,除了“当前 APK 文件”,还会递归列出这个目录里的 APK,并读取可用的应用名、包名、版本号等信息;通过路径打开 APK 时,使用的是相对于这个目录的路径。

AI 重新打包生成的新 APK 也会保存到 MCP 操作目录中。

alt

例如操作目录是 /storage/emulated/0/MT2/mcp,目录下有 test.apk,那么可以直接对 AI 说:

请打开 test.apk,并分析它的 Manifest 和主要字符串

如果 APK 放在子目录中,可以使用 demo/test.apk 这类相对路径。建议只把愿意交给 AI 分析或修改的 APK 放入该目录,避免列表中混入太多无关文件。

修改操作目录只影响之后的 APK 列表、相对路径打开和打包输出位置。

# 工作原理

AI 首次打开一个 APK 时,MT 会创建一个工作区,用于存放该 APK 的相关数据。后续读取 Manifest、资源、布局、字符串或 Dex/Smali 代码时,AI 都会基于这个工作区继续操作。

工作区的数据是只读的,不会被 AI 修改。因此重复打开同一个 APK 文件时,MT 可以复用已有工作区,减少重复解析和准备数据的时间,提升加载效率。

当你让 AI 修改 APK 时,AI 会在工作区的基础上创建一个编辑会话。编辑会话会单独记录它对 APK 做了哪些修改,不会污染工作区里的只读数据。

一个工作区可以同时支持多个编辑会话,它们之间的数据相互隔离。你可以让 AI 基于同一个 APK 尝试不同修改方案,而不必担心某个编辑会话影响其它会话的数据。

你可以在设置中修改保留最近历史工作区数量。当工作区数量超出限制时,MT 会自动删除最近没有被访问的工作区;删除工作区只会清理 MCP 生成的数据,不会删除原始 APK 文件,也不会删除已经打包生成的 APK 文件。

# 可用 MCP 工具

下面这些工具由 AI 根据任务自动调用,通常不需要手动选择。

# 1. 找到并打开 APK

工具 作用
mt_apk_list_available_apks 列出 AI 可以打开的 APK 目标,包括 MCP 操作目录中的 APK,以及可用时的“当前 APK 文件”。
mt_apk_open 打开一个 APK,创建或复用只读工作区,并返回应用信息、Manifest 摘要、资源和 Dex 概况等基础信息。需要一次性检查时,AI 也可以打开临时工作区。

# 2. 阅读与检索内容

工具 作用
mt_apk_list 分页列出已打开 APK 的结构,例如 ZIP 条目、Dex 类、资源表条目。
mt_apk_outline_class 查看某个 Dex 类的字段和方法轮廓,适合在读取完整 Smali 前先了解类结构。
mt_apk_read_text 读取已知目标的文本内容,例如文本 ZIP 条目、解码后的 AXML、Dex 类或方法的 Smali。
mt_apk_read_zip_bytes 读取 ZIP 条目的原始字节,通常用于查看非文本文件,或验证编辑会话中的 AXML、ZIP 条目字节。
mt_apk_read_resource 读取 resources.arsc 中的资源值,并返回可用于修改的 valueXml
mt_apk_search 在 APK 中搜索 ZIP 路径、AXML 文本、资源名/资源值、Dex 名称、Dex 字符串或 Smali 内容。
mt_apk_xref_dex 查找 Dex 类、字段或方法的引用位置,适合追踪方法调用、字段访问或类引用。
mt_apk_xref_resource 查找某个资源 ID 在 Dex、AXML 或资源表中的引用位置。
mt_apk_continue 继续读取分页结果。列表、搜索、读取大文本或引用结果过长时,AI 会用它翻到下一页。

# 3. 修改并重新打包

工具 作用
mt_apk_edit_open 基于只读工作区创建一个编辑会话。后续修改都会记录在该编辑会话中。
mt_apk_edit_text 修改文本类目标,例如 Smali、AXML 或普通文本 ZIP 条目,也可用于创建缺失目标或删除 ZIP 条目。
mt_apk_edit_resource 修改资源表中的资源值,例如字符串、颜色、布尔值、整数、引用等支持的 valueXml
mt_apk_edit_check 检查编辑会话状态,也可以在不生成 APK 的情况下执行部分构建前检查。
mt_apk_build 将编辑会话重新打包并签名,生成新的 APK 文件。签名密钥来自 APK MCP 设置。

# 4. 清理临时工作区

工具 作用
mt_apk_close 清理用于检查的临时工作区,删除对应工作区和编辑会话状态;不会删除原始 APK 或已生成的新 APK,普通历史工作区不能用它关闭。

普通历史工作区后续可能会被复用,因此不支持让 AI 主动清理。MT 会根据设置中的保留最近历史工作区数量自动清理,也可以由用户在 MT 中手动清理。

这些工具的返回结果中通常会包含下一步建议,AI 会根据这些建议继续读取、搜索、修改或构建。比如打开 APK 后,AI 可能继续读取 Manifest、列出 Dex 类、搜索字符串;修改资源后,AI 可能先检查编辑会话,再重新打包生成 APK。

# 不支持的功能

下面这些能力当前暂不支持,遇到相关需求时需要换用其它工具或手动处理。

# 1. so 文件分析与修改

如果 APK 中的关键逻辑位于 native 层,AI 可以看到 APK 中存在相关 so 文件,但不能通过 APK MCP 进一步反编译、分析或修改其中的 native 代码。

# 2. 反编译为 Java 代码

AI 完全可以直接读懂 Smali 代码,而反编译出来的 Java 代码可能出现重名歧义、语法错误、代码逻辑错误等问题,反而更容易让 AI 基于错误代码得出错误结论。直接基于 Smali 分析和修改,通常会比先反编译成 Java 更稳定。

# 3. 为 resources.arsc 添加新的语言包或词条

APK MCP 暂时只能编辑已有词条的内容。如果有这类需求,可以先使用 ARSC 编辑器手动添加或调整资源,再交给 AI 继续进行下一步操作。

# 使用演示:RikkaHub + DeepSeek

下面演示在同一台手机上使用 RikkaHub 连接 MT 的 APK MCP 服务,并让 DeepSeek 分析和修改一个 APK。

# 1. 准备 RikkaHub 和 DeepSeek

先安装 RikkaHub,并准备一个 DeepSeek API 密钥。RikkaHub 的提供商配置可参考其官方快速开始 (opens new window)文档,MCP 连接可参考其官方 MCP (opens new window) 文档。

在 RikkaHub 中进入设置 > 提供商,添加或打开 DeepSeek 提供商,填写 API 密钥,并选择一个可用模型。模型列表以 RikkaHub 和 DeepSeek 当前提供的选项为准。

alt

# 2. 启动 MT 的 APK MCP 服务

回到 MT,进入侧拉栏 > 工具 > APK MCP,点击启动

如果 RikkaHub 和 MT 在同一台手机上,复制本地地址;如果 RikkaHub 在另一台设备上,复制局域网地址

# 3. 在 RikkaHub 中添加 MCP 服务

在 RikkaHub 的 MCP 设置页面中新建连接:

  • 名称填写 MT_APK_MCP
  • 连接地址填写 MT 中复制的 MCP 地址
  • 传输类型选择 Streamable HTTP

alt

保存后确认连接成功。回到聊天页面时,如果 RikkaHub 需要手动启用 MCP 服务器,请在聊天工具或 MCP 服务器列表中启用 MT_APK_MCP

alt

# 4. 准备演示 APK

你可以下载本手册逆向实战章节里的演示 APK:MTestApp.apk (opens new window)

推荐直接在 MT 文件列表中点击 MTestApp.apk,停留在 APK 信息对话框中。这样聊天时只要说“当前 APK 文件”,不需要关心它所在的具体路径。

如果你更想通过文件名打开,也可以把 MTestApp.apk 放入 APK MCP 的操作目录,然后在聊天时明确说出文件名。

# 5. 让 AI 分析 APK

新建聊天后,可以这样提问:

请分析当前 APK 文件,先总结这个 APK 的包名、应用名、入口 Activity、权限、主要资源和 Dex 概况。
然后搜索登录、密码校验、更新提示相关的字符串和 Smali 线索,并说明你的分析过程。

AI 会调用 MT 的工具打开当前 APK,并按需要读取 Manifest、资源、布局、字符串和 Dex/Smali 代码。你可以继续追问:

alt

请重点分析启动页是怎么跳转到主界面的。
请查找密码校验相关代码,并说明可能的判断条件。
请找出更新提示相关的字符串和方法调用位置。

# 6. 让 AI 修改并重新打包

当你确认分析方向后,可以让 AI 执行更具体的修改任务。例如:

请把当前 APK 文件的应用名改成 MTestApp Beta,并重新打包、签名生成新的 APK。

也可以先让 AI 给出计划,再确认是否修改:

请先说明要修改哪些资源或代码,等我确认后再执行。

完成后,AI 会根据 MT 返回的结果告诉你生成的新 APK 位置。安装测试前,建议先确认修改内容、签名方式和目标 APK 是否正确;如果 APK 有加固、动态加载、复杂混淆或额外签名校验,AI 的分析和修改结果仍需要结合 MT 的实际反编译结果进行核对。