# KSU-Frida Manager v2.0.0 — Powered by rustFrida&Trace > 整合 [rustFrida](../rustFrida-master/) 引擎的 KSU/Magisk 模块,提供完整的 Android ARM64 动态插桩管理方案。 > 解决 frida-server 开机卡 logo 问题,单一二进制,手机端按需管理。 --- ## 目录 - [核心改进](#核心改进) - [架构设计](#架构设计) - [安装](#安装) - [命令参考](#命令参考) - [注入模式](#注入模式) - [隐写模式](#隐写模式) - [JS API](#js-api) - [HTTP RPC](#http-rpc) - [分析模式](#分析模式) - [示例脚本](#示例脚本) - [构建](#构建) - [故障排查](#故障排查) - [踩坑记录 & 已知问题](#踩坑记录--已知问题) --- ## 核心改进 | 维度 | 原版 KFM v1.0 (frida-server) | 整合版 v2.0 (rustFrida) | |------|------|------| | 二进制 | frida-server + frida-inject (两个) | **rustfrida 单文件** (内嵌 loader + agent) | | 体积 | ~40MB (frida-server) | **~3.9MB** (自包含) | | 通信 | 每次 `su -c "kfm xxx"` | **HTTP RPC 直连** (低延迟) | | 注入模式 | attach only | **attach + spawn + watch-so** | | 反检测 | 无 | **NORMAL / WXSHADOW / RECOMP** 三级隐写 | | JS 引擎 | 依赖 Frida 版本 | **内置 QuickJS** (无版本依赖) | | Java Hook | Frida API | **Frida 兼容 API** + ART 底层扩展 | | Spawn 机制 | 无 | **zymbiote** (Zygote 劫持) | | SO 监控 | 无 | **eBPF ldmonitor** (内核级 dlopen 追踪) | --- ## 架构设计 ``` ┌──────────────────────────────────────────────────────────────┐ │ 用户层 │ │ │ │ 终端: su -c 'kfm start/inject/spawn' │ │ App: HTTP → 127.0.0.1:28042/rpc/0/myFunc (直连 RPC) │ │ PC: adb forward tcp:28042 tcp:28042 → curl/frida │ └───────────────────────────┬──────────────────────────────────┘ │ ┌───────────────────────────▼──────────────────────────────────┐ │ 控制层: /system/bin/kfm → scripts/kfm-*.sh │ │ │ │ kfm-start.sh 延迟启动 + 冲突检测 + 写 PID │ │ kfm-inject.sh 查找 PID → rustfrida --pid │ │ kfm-spawn.sh rustfrida --spawn (zymbiote) │ │ kfm-analyze-*.sh 模块禁用/恢复 + 重启 │ │ kfm-rpc.sh wget → rustfrida HTTP RPC │ └───────────────────────────┬──────────────────────────────────┘ │ ┌───────────────────────────▼──────────────────────────────────┐ │ 引擎层: /system/bin/rustfrida (3.9MB, ARM64 ELF) │ │ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ 内嵌组件 (include_bytes! 编译时打包) │ │ │ │ ├── bootstrapper.bin (10KB ARM64 shellcode) │ │ │ │ ├── rustfrida-loader.bin (2.5KB loader shellcode) │ │ │ │ └── libagent.so (QuickJS + hook engine + crash handler)│ │ │ └──────────────────────────────────────────────────────┘ │ │ │ │ 功能模块: │ │ ├── ptrace 注入 (attach to PID) │ │ ├── zymbiote (zygote hijack for spawn) │ │ ├── HTTP RPC server (多 session, JSON API) │ │ ├── REPL (交互式 JS, Tab 补全) │ │ ├── SELinux policy patching │ │ └── stealth hooks (NORMAL / WXSHADOW / RECOMP) │ └──────────────────────────────────────────────────────────────┘ ``` ### 为什么不卡 logo? ``` 铁律: service.sh / post-fs-data.sh 绝不启动 rustfrida 开机流程: init.rc → zygote → system_server → boot_completed ↓ service.sh 只做: 清理残留 PID + pkill 僵尸进程 ↓ 用户手动: kfm start (检查 uptime>30s + 延迟 3s) ↓ rustfrida 在安全时间点启动, 不与 zygisk 竞争 ``` --- ## 安装 ### 前置条件 - 已 root 的 ARM64 设备 (KernelSU / KSU-Next / Magisk) - Android 9+ ### 安装步骤 ```bash # 推送模块到手机 adb push ksu-frida-manager-v2.0.0.zip /sdcard/Download/ # 方式1: KSU-Next Manager → 模块 → 从存储安装 # 方式2: Magisk Manager → 模块 → 从存储安装 # 重启 adb reboot # 验证 adb shell "su -c 'kfm version'" # → {"module":"v2.0.0","rustfrida":"0.16.10"} adb shell "su -c 'kfm status'" # → {"server":{"running":false,...},"module_version":"v2.0.0",...} ``` --- ## 命令参考 ### 生命周期 ```bash kfm start # 启动 rustfrida (RPC port 28042, localhost) kfm start --rpc-port 9191 # 自定义 RPC 端口 kfm stop # 停止 rustfrida, 清理进程 kfm restart # 重启 kfm status # JSON 状态 (进程/端口/模式/版本) ``` ### 注入 ```bash kfm inject