MCP 可用工具清单——JS Hook 暴露给 AI 的能力全景
工具分类
JS Hook 的 MCP 工具大致可以分成五类:
应用/系统类
| 工具 | 说明 |
|---|
list_apps | 列出手机上所有已安装应用 |
get_app_info | 获取指定应用的详细信息(版本、包名、权限) |
start_app | 启动指定应用 |
stop_app | 强制停止指定应用 |
get_running_apps | 列出当前正在运行的应用进程 |
类/方法查找类
| 工具 | 说明 |
|---|
search_class | 在目标应用里按关键词搜索类名 |
list_classes | 列出目标应用已加载的所有类 |
list_methods | 列出指定类的所有方法 |
search_method | 按关键词搜索方法 |
内存操作类
| 工具 | 说明 |
|---|
read_memory | 读取指定地址的内存 |
write_memory | 写入内存 |
search_pattern | 内存扫描(字节模式) |
get_module_base | 获取 SO 库基址(普通模式或内核模式) |
内核驱动类
| 工具 | 说明 |
|---|
kernel_status | 查看内核驱动状态 |
kernel_load | 尝试加载内核驱动 |
kernel_read | 内核模式下读内存 |
kernel_write | 内核模式下写内存 |
脚本/配置类
| 工具 | 说明 |
|---|
list_scripts | 列出 JsHook 已安装的脚本 |
add_script | 添加新脚本 |
toggle_hook | 开关指定应用的 Hook 服务 |
get_runtime_info | 获取 JsHook 运行时信息(版本、内核模式状态等) |
示例对话
找一个类并生成 Hook 代码
你: 帮我在 com.example.app 里搜索和金币相关的类
Copilot: [调用 search_class("com.example.app", "gold")] → 找到 GoldManager
你: 列出 GoldManager 的所有方法
Copilot: [调用 list_methods("GoldManager")] → 找到 setGold(int) 方法
你: 帮我写一个脚本,每次 setGold 被调用时打印参数值
Copilot: [生成完整 Frida 脚本]
内核模式下读内存
你: 内核模式下帮我读 libil2cpp.so 基址偏移 0x1A2B3C4 处的 float 值
Copilot:
1. [调用 get_module_base("libil2cpp.so")] → 基址 0x7ef...
2. [调用 kernel_read_float("0x" + base + 0x1A2B3C4)] → 值 88.5
开关 Hook 服务
你: 帮我给 com.game.app 开启 Hook 服务,启用金币脚本
Copilot:
1. [调用 toggle_hook("com.game.app", true)] → Hook 已开
2. [调用 list_scripts] → 找到 gold-mod.js
3. [调用 start_app("com.game.app")] → 应用已启动
注意事项
MCP 不自动重启目标应用
通过 MCP 开关 Hook 服务后,你仍然需要重启目标应用让注入生效。MCP 不会帮你自动重启——AI 生成的操作链可能忘了这一步。
内核模式下 Java 相关工具不可用
如果目标应用开了内核驱动模式,search_class / list_classes / list_methods 等依赖目标进程上下文的工具可能返回空或错误。此时用 runtime.isKernel 确认状态后切到 kernel 类工具。
只在开发环境用
MCP 服务暴露了 JsHook 的全部操作能力。只在本地 USB 连接或受信任的 Wi-Fi 下使用,不要把 28050 端口暴露到公网或不可信的网络里。