通过 MCP 将 Android 内核驱动能力提供给 AI 或其他 MCP 客户端。项目由 Python MCP 服务、Android TCP daemon 和内核 ioctl hook 驱动组成。
驱动非本人编译,本项目中包含的所有驱动均不做推广,可以自行修改源码以支持更多的驱动,允许仓库合并。
|
v
驱动非本人编译,本项目中包含的所有驱动均不做推广,可以自行修改源码以支持更多的驱动,允许仓库合并。
|
v
驱动非本人编译,本项目中包含的所有驱动均不做推广,可以自行修改源码以支持更多的驱动,允许仓库合并。
|
v
驱动非本人编译,本项目中包含的所有驱动均不做推广,可以自行修改源码以支持更多的驱动,允许仓库合并。
MCP Client
|
v
Python MCP Server
|
| TCP / ADB Forward
v
Android hook_daemon
|
| ioctl(OP_CMD_*)
v
内核 hook 驱动
daemon 使用 ioctl 命令号与驱动通信,不打开专用设备节点,默认通过 fd=0 触发内核 hook。具体 ABI 见 daemon/driver_abi.h 和 驱动对接头/hook对接..h。
这些工具会调用驱动 ioctl:
| MCP 工具 | 驱动命令 | 功能 |
|---|---|---|
read_memory |
601 | 读取目标进程内存 |
write_memory |
602 | 写入目标进程内存 |
get_module_base |
603 | 通过驱动获取模块基址 |
hide_process |
605 | 隐藏 daemon 进程 |
unhook |
606 | 卸载驱动 hook |
recover_process |
607 | 恢复隐藏进程 |
gyro_control |
608 | 设置陀螺仪参数 |
dump_memory |
601 | 读取内存并在 Python 侧格式化 |
ping / drvinfo |
601 | 驱动连接诊断 |
内存读写工具需要显式传入正数 pid。例如:
read_memory(addr="0x7a12340000", size=16, pid=12345)
write_memory(addr="0x7a12340000", value="deadbeef", data_type="hex", pid=12345)
工具名带 w_ 前缀,表示不直接调用驱动:
| MCP 工具 | 实现方式 |
|---|---|
w_get_pid |
Android pidof |
w_set_pid |
设置 daemon 内部目标 PID |
w_read_maps |
读取 /proc/<pid>/maps |
w_read_file |
由 daemon 读取 Android 文件并返回文本 |
w_list_regions |
解析 maps 并列出可读区域 |
w_scan_memory |
用户态遍历区域,实际读取仍使用驱动 |
w_follow_pointers |
用户态组织指针链,实际读取使用驱动 |
w_get_kernel_version |
执行 uname -r |
驱动头文件虽然保留了 OP_CMD_GETPID = 604,但没有公开参数结构,参考实现也没有调用该 ioctl。因此 PID 查询明确标记为 w_get_pid,不会伪造驱动调用。
需要 Android NDK:
cd daemon
NDK=/path/to/android-ndk ./build.sh arm64支持:
arm64:默认目标arm32:armeabi-v7a
adb push daemon/hook_daemon /data/local/tmp/
adb shell "su -c 'chmod 755 /data/local/tmp/hook_daemon'"
adb shell "su -c '/data/local/tmp/hook_daemon 7777 &'"
adb forward tcp:7777 tcp:7777daemon 默认只监听 Android 回环地址,建议通过 ADB forward 访问,不直接暴露到局域网。
cd mcp_server
pip install -r requirements.txtmcp_config.json 示例:
{
"mcpServers": {
"hook-mcp": {
"command": "python",
"args": ["/absolute/path/hook-mcp/mcp_server/server.py"],
"env": {
"HOOK_DAEMON_HOST": "127.0.0.1",
"HOOK_DAEMON_PORT": "7777"
}
}
}
}请求和响应均为单行文本:
请求: COMMAND|arg1|arg2|...\n
成功: OK|result\n
失败: ERR|message\n
驱动命令包括 READ、WRITE、MODBASE、HIDEPROC、RECOVERPROC、UNHOOK 和 GYRO。用户态辅助命令包括 GETPID、SETPID、READMAPS、READFILE、REGIONS、SCAN、PTRCHAIN 和 KERNELV。
- daemon 和驱动操作需要 Android root 权限。
write_memory、hide_process、unhook和gyro_control可能修改目标进程或系统状态,请确认目标 PID 和参数。unhook执行后,后续驱动操作可能失效。- 项目中包含的驱动文件不代表驱动兼容所有 Android 内核版本,实际 ioctl 行为需要在目标设备验证。
- 请仅在拥有授权的设备和进程上使用。
见 LICENSE。