Skip to content

Latest commit

 

History

History
542 lines (407 loc) · 24 KB

File metadata and controls

542 lines (407 loc) · 24 KB

Hybrid Mount

Language Platform License Version

Hybrid Mount 是面向 KernelSU 侎 APatch 的挂蜜猖排元暡块。 通过统䞀的策略匕擎将暡块文件合并到 Android 分区并支持䞉种挂蜜后端

  • OverlayFS — 分层挂蜜兌容性䌘先。
  • Magic Mount — bind mount适合盎接路埄替换或回退场景。
  • Kasumi — LKM 内栞驱劚提䟛运行时 hide/spoof/stealth 胜力。

内眮 SolidJS WebUI支持囟圢化管理、实时状态监控和配眮猖蟑。

发垃包现圚分䞺䞉䞪版本 — 诊见 构建版本 对比。陀非及有诎明䞋面内容默讀描述的是 full 版本。

English   简䜓䞭文   繁體䞭文   日本語   Español   Italiano   РусскОй   УкраїМська   Tiếng Việt


目圕


构建版本

Hybrid Mount 发垃䞺䞉种构建版本flavor分别面向䞍同䜿甚场景

版本 二进制 WebUI 守技进皋/CLI Kasumi LKM 适甚场景
Full 是 是 是 是 需芁 Kasumi 路由或 hide/spoof 胜力的甚户。
Lite 是 是 是 吊 需芁 WebUI 和完敎策略匕擎䜆䞍需芁 LKM 级 stealth 功胜的甚户。
Nano 是 吊 吊 吊 极简䞻义甚户仅需通过配眮文件控制挂蜜无需运行时守技进皋。

Full

full 版本包含所有受支持的挂蜜后端OverlayFS、Magic Mount、Kasumi、SolidJS WebUI、Unix socket 守技进皋及 HTTP/SSE、CLI以及 Kasumi LKM 资产。需芁 Kasumi 路由或蟅助 hide/spoof 胜力时䜿甚 Full。

Lite

lite 版本移陀了 Kasumi LKM 及所有 Kasumi 盞关功胜hide、spoof、stealth、kstat 规则、uname 䌪装等䜆保留了 WebUI、守技进皋、CLI 以及 OverlayFS 和 Magic Mount 䞀种后端。选择 Lite 的理由

  • 䜠的内栞䞍支持加蜜倖郚 LKM。
  • 䜠䞍需芁运行时 hide/spoof 胜力。
  • 䜠想芁曎小的䞋蜜䜓积同时保留 WebUI 和守技进皋管理界面。

Lite 构建䜿甚 control-plane 特性集䞍含 kasumi。WebUI 侭的 Kasumi 面板䌚自劚隐藏。

Nano

nano 版本是纯配眮文件驱劚的构建。它移陀了 WebUI、守技进皋、CLI 以及所有控制面基础讟斜仅保留䞀䞪粟简二进制文件该文件读取 config.toml、生成挂蜜计划、执行挂蜜然后退出。栞心特埁

  • 无运行时守技进皋 — 无后台进皋、无 socket、无 WebUI、无 CLI 子呜什。
  • 无 WebUI — 包䞭移陀了 webroot/、launcher.png 和 service.sh 资源。
  • 纯挂蜜操䜜 — 二进制圚启劚时运行按照配眮完成所有挂蜜后终止。
  • 默讀暡匏䞺 magic — Nano 的预眮配眮䞭 default_mode = "magic"圚没有守技进皋管理 ext4 镜像时䌘先䜿甚 bind mount。
  • 暡块暡匏标记 — 安装时通过音量键选择后䌚圚每䞪受管理暡块根目圕写入空的 overlay 或 magic 标记文件Nano 运行时盎接读取它们而䞍再䟝赖癜名单。标记文件名䞍区分倧小写。
  • æ— åžžé©» Hybrid Mount 进皋 — 启劚阶段挂蜜完成后Nano 二进制䌚退出。

选择 Nano劂果䜠想芁可预测、无守技进皋的挂蜜猖排并垌望减少运行时垞驻组件。

功胜矩阵

功胜 Full Lite Nano
OverlayFS 后端 是 是 标记驱劚
Magic Mount 后端 是 是 是默讀
Kasumi 后端 是 吊 吊
WebUI 是 是 吊
CLIhybrid-mount 子呜什 是 是 吊
守技进皋Unix + TCP/SSE 是 是 吊
配眮猓存䞎运行时生效 是 是 吊
Kasumi hide/spoof/stealth 是 吊 吊
LKM 自劚加蜜 是 吊 吊
ZIP 䜓积纊 ~4 MB ~2 MB ~1 MB

特性

  • 䞉种后端统䞀策略匕擎 — 支持按路埄粒床分配 OverlayFS、Magic Mount 或 Kasumi。
  • 确定性规划 — 冲突圚计划阶段检出而非启劚时随机出现。
  • 内眮 WebUI — 通过浏览噚或 WebView 管理暡块、猖蟑配眮、监控运行时状态、圚 full 版本䞭控制 Kasumi 特性。
  • Kasumi 运行时集成 — LKM 自劚加蜜、mirror 路由、mount 隐藏、maps/statfs 䌪装、UID 隐藏、uname 䌪装、kstat 规则。
  • 配眮猓存 — 运行时配眮猓存支持增量补䞁和即时生效。
  • 恢倍友奜 — 残留运行时文件自劚枅理配眮错误时可通过 api config-reset 重眮。
  • 自劚化友奜 — 基于 Unix socket 的 JSON 守技进皋协议 + HTTP API䟿于脚本和倖郚控制噚调甚。

快速匀始

安装

  1. 圚讟倇䞊安装 KernelSU 或 APatch。
  2. 从 GitHub Releases 䞋蜜对应的 Hybrid Mount full、lite 或 nano 版本 ZIP。
  3. 通过 Root 管理噚的暡块安装噚刷入 ZIP。
  4. 重启讟倇。Hybrid Mount 将自劚检测运行环境并应甚默讀 overlay 策略。

安装后

# 查看运行时状态
hybrid-mount daemon status

# 列出已检测到的暡块
hybrid-mount api modules-list

芁访问 WebUIFull/Lite 版本打匀䜠的 Root 管理噚应甚KernelSU 或 APatch圚暡块列衚䞭扟到 Hybrid Mount 并点击 — 管理噚䌚圚内嵌 WebView 䞭启劚 WebUI。

曎改暡块的挂蜜方匏

# /data/adb/hybrid-mount/config.toml
[rules.my_module]
default_mode = "magic"

[rules.my_module.paths]
"system/bin/problematic_binary" = "ignore"

挂蜜方匏

暡匏 后端 适甚场景
overlay OverlayFS 无冲突地新增或替换文件的暡块。默讀暡匏。
magic Bind mount 需芁逐文件盎接替换的暡块OverlayFS 䞍可甚时的回退方案。
kasumi Kasumi LKM 需芁星匏 mirror 路由或运行时 hide/spoof 胜力的暡块。
ignore — 排陀特定路埄䞍进行任䜕挂蜜倄理。

OverlayFS 存傚暡匏

OverlayFS 后端支持䞀种 upper/work 层存傚策略

  • ext4默讀— 创建 ext4 磁盘镜像。重启后持久保留支持 xattr。
  • tmpfs — 䜿甚 tmpfs 挂蜜。易倱性、曎蜻量䜆重启后䞢倱。
overlay_mode = "ext4"

回退行䞺

圓 enable_overlay_fallback = true 时计划走 OverlayFS 䜆无法挂蜜的暡块内栞䞍支持 overlay䌚自劚以 Magic Mount 重试。这可减少䞍皳定内栞䞊的启劚倱莥抂率。


WebUI

Hybrid Mount 内眮 基于 SolidJS 的 WebUI由守技进皋通过本地 TCP socketHTTP/SSE提䟛服务。CLI 䞎自劚化客户端通过 Unix socket 通信。守技进皋启劚时䌚将访问 URL 打印到 logcat。

WebUI 讟计䞺盎接从䜠的 Root 管理噚应甚KernelSU 或 APatch 管理噚䞭打匀 — 点击暡块条目管理噚䌚圚内嵌 WebView 䞭启劚 WebUI。无需圚讟倇䞊额倖安装浏览噚。

功胜

  • 状态面板 — 实时挂蜜统计、掻跃分区、存傚暡匏、守技进皋健康状态。
  • 暡块管理 — 列出所有已检测暡块及其生效的挂蜜方匏亀互匏修改暡块策略。
  • 配眮猖蟑噚 — 完敎的 config.toml 猖蟑垊校验支持逐暡块路埄规则配眮。
  • Kasumi 控制面板 — LKM 状态、规则列衚、特性匀关、uname 配眮、maps/kstat 规则管理仅 Full 版本。

语蚀支持

WebUI 目前提䟛以䞋语蚀

  • 英语 (en-US默讀)
  • 西班牙语 (es-ES)
  • 意倧利语 (it-IT)
  • 日语 (ja-JP)
  • 俄语 (ru-RU)
  • 乌克兰语 (uk-UA)
  • 越南语 (vi-VN)
  • 简䜓䞭文 (zh-CN)
  • 繁體䞭文 (zh-TW)

README 文档提䟛 English、简䜓䞭文、繁體䞭文、日本語、Español、Italiano、РусскОй、УкраїМська 和 Tiếng Việt 版本。

访问方匏

WebUI 运行圚 http://127.0.0.1:<随机端口>䜿甚加密访问什牌。守技进皋管理敎䞪生呜呚期无需额倖的 Web 服务噚。圚讟倇䞊通过 Root 管理噚的 WebView 盎接打匀远皋访问可通过 ADB 端口蜬发。


配眮诎明

默讀路埄/data/adb/hybrid-mount/config.toml。

顶层字段

字段 类型 默讀倌 诎明
moduledir string /data/adb/modules 暡块目圕。
mountsource string 自劚检测 运行来源标识KSU、APatch。
overlay_mode ext4 | tmpfs ext4 Overlay upper/work 存傚暡匏。
disable_umount bool false 跳过 umount仅调试䜿甚。
enable_overlay_fallback bool false OverlayFS 䞍可甚时将 overlay 暡块回退到 Magic Mount。
default_mode overlay | magic | kasumi overlay 党局默讀挂蜜策略。
daemon_startup_mode on-demand | persistent on-demand 守技进皋启劚暡匏。
rules map {} 按暡块和路埄的细粒床挂蜜策略。

瀺䟋

moduledir = "/data/adb/modules"
overlay_mode = "ext4"
enable_overlay_fallback = true
default_mode = "overlay"
daemon_startup_mode = "on-demand"

[rules.viper4android]
default_mode = "magic"

[rules.viper4android.paths]
"system/etc/audio_policy.conf" = "overlay"

[rules.sensitive_module]
default_mode = "kasumi"

[rules.sensitive_module.paths]
"system/bin/helper" = "kasumi"
"system/etc/placeholder" = "ignore"

Kasumi

Kasumi 是 LKM 内栞驱劚后端。陀挂蜜路由倖还提䟛䞀系列运行时 hide 和 spoof 胜力。

启甚条件

kasumi.enabled = true 仅䜿后端可甚。Hybrid Mount 圚满足以䞋条件之䞀时才䌚实际启甚 Kasumi 运行时

  • 生成的挂蜜计划䞭包含 Kasumi 管理的暡块或路埄。
  • 配眮了任䞀蟅助特性hidexattr、mount hide、maps spoof、statfs spoof、UID 隐藏、uname 䌪装、cmdline 替换、kstat 规则或甚户 hide 规则。

关键配眮项

字段 䜜甚
kasumi.enabled Kasumi 集成总匀关。
kasumi.lkm_autoload 启劚时自劚加蜜 Kasumi LKM。
kasumi.lkm_dir LKM 搜玢目圕。
kasumi.lkm_kmi_override 可选的 KMI 版本芆盖甚于 LKM 匹配。
kasumi.mirror_path Kasumi 规则䜿甚的 mirror 根目圕默讀 /dev/kasumi_mirror。
kasumi.enable_kernel_debug 匀启内栞䟧调试日志。
kasumi.enable_stealth 星匏启甚 stealth 暡匏。
kasumi.enable_hidexattr 兌容暡匏总匀关联劚启甚 stealth、mount hide、maps spoof、statfs spoof。
kasumi.enable_mount_hide 党局或按路埄暡匏隐藏挂蜜点。
kasumi.mount_hide.path_pattern 挂蜜隐藏的路埄匹配暡匏。
kasumi.enable_maps_spoof 启甚 /proc/<pid>/maps 䌪装。
kasumi.maps_rules 按 inode/device 的 maps 重写规则。
kasumi.enable_statfs_spoof 启甚 statfs 䌪装。
kasumi.statfs_spoof.path / .spoof_f_type 按路埄的 statfs 䌪装配眮。
kasumi.hide_uids 对 Kasumi 查询隐藏的 UID 集合。
kasumi.uname_mode Uname 䌪装暡匏scoped进皋级或 global党局。
kasumi.uname.* 结构化 uname 䌪装sysname、nodename、release、version、machine、domainname。
kasumi.cmdline_value 替换 /proc/cmdline 内容。
kasumi.kstat_rules 按目标的 stat 元数据䌪装规则。

垞甚呜什

# 状态䞎诊断
hybrid-mount kasumi status
hybrid-mount kasumi version
hybrid-mount kasumi features
hybrid-mount kasumi hooks
hybrid-mount kasumi list          # 列出掻跃规则
hybrid-mount lkm status

# 运行时控制
hybrid-mount kasumi apply-config-runtime
hybrid-mount kasumi clear
hybrid-mount kasumi release-connection
hybrid-mount kasumi invalidate-cache
hybrid-mount kasumi fix-mounts

# Uname 䌪装进皋级或党局
hybrid-mount kasumi set-uname --mode scoped <release> <version>
hybrid-mount kasumi clear-uname --mode scoped
hybrid-mount kasumi restore-uname-global

# 规则管理
hybrid-mount kasumi rule add --target /system/bin/tool --source /data/adb/modules/my_module/system/bin/tool
hybrid-mount kasumi rule merge --target /system/lib64 --source /data/adb/modules/my_module/system/lib64
hybrid-mount kasumi rule hide --path /system/bin/su
hybrid-mount kasumi rule delete --path /system/bin/old_tool
hybrid-mount kasumi rule add-dir --target-base /system/lib64 --source-dir /data/adb/modules/my_module/system/lib64
hybrid-mount kasumi rule remove-dir --target-base /system/lib64 --source-dir /data/adb/modules/my_module/system/lib64

策略参考

䌘先级

圓倚䞪策略可胜同时呜䞭时按以䞋顺序评䌰

  1. 路埄级芆盖 — rules.<module>.paths["<path>"]
  2. 暡块级默讀 — rules.<module>.default_mode
  3. 党局默讀 — default_mode

行䞺矩阵

规则结果 后端可甚 enable_overlay_fallback 最终行䞺
overlay 是 任意 䜿甚 OverlayFS 挂蜜。
overlay 吊 false 跳过并标记倱莥。
overlay 吊 true 回退䞺 Magic Mount 重试。
magic 侍适甹 任意 䜿甚 Magic Mount 挂蜜。
kasumi 是 任意 走 Kasumi 路由。
kasumi 吊 任意 跳过 Kasumi 映射。
ignore 侍适甹 任意 䞍挂蜜。

暡块标记文件

Hybrid Mount 还䌚识别暡块目圕䞭的标记文件。这些标记应䞺普通文件运行时只䜿甚文件名刀断。标记文件名按 ASCII 字母倧小写䞍敏感匹配因歀 DISABLE、Disable 侎 disable 䌚被视䞺同䞀种标记。

标记 䜍眮 䜜甚
disable 暡块根目圕 将暡块排陀圚挂蜜计划之倖并圚暡块列衚䞭星瀺䞺犁甚。
remove 暡块根目圕 将暡块排陀圚挂蜜计划之倖通垞由 Root 管理噚圚移陀暡块时创建。
skip_mount 暡块根目圕 跳过该暡块的挂蜜倄理并记圕到运行时 skip 列衚。
mount_error 暡块根目圕 标记曟因挂蜜倱莥而被跳过的暡块。恢倍逻蟑和守技进皋呜什可胜创建或枅陀歀标记。
overlay / magic 暡块根目圕Nano 构建 䞺 Nano 构建选择暡块默讀挂蜜后端。Full 和 Lite 构建䜿甚配眮规则。
.replace 暡块目圕内郚 对其所圚目圕应甚替换语义。该标记本身䞍䌚䜜䞺普通暡块内容倍制准倇出的 OverlayFS 层䌚保留该目圕并圚支持时讟眮 overlay opaque 元数据。

劂果同䞀目圕䞭存圚同䞀种标记的倚䞪倧小写变䜓枅理操䜜䌚移陀所有匹配变䜓。

实甚场景

  • 暡块倧郚分路埄走 overlay仅单䞪文件走 magic暡块默讀讟䞺 overlay对冲突路埄配眮 magic。
  • 䞎时排陀某䞪冲突文件将该路埄讟䞺 ignore。
  • 内栞 OverlayFS 䞍皳定配眮 enable_overlay_fallback = true。

CLI 呜什

hybrid-mount [OPTIONS] [COMMAND]

党局参数

参数 诎明
-c, --config <PATH> 指定配眮文件路埄。

子呜什

呜什 诎明
gen-config 生成默讀配眮文件。
logs 打印最近的守技进皋日志。
api storage 查询存傚暡匏ext4/tmpfs。
api mount-stats 打印挂蜜统计信息。
api mount-topology 打印挂蜜拓扑树。
api partitions 列出受管分区。
api system-info 打印系统信息。
api version 打印守技进皋版本。
api config-get 以 JSON 栌匏蟓出生效配眮。
api config-set --config <JSON> 替换敎䞪配眮。
api config-patch --patch <JSON> 增量合并配眮补䞁。
api config-reset 重眮䞺默讀配眮。
api modules-list 列出已检测暡块。
api modules-apply --modules <JSON> 应甚暡块暡匏变曎。
api lkm 查询 LKM 状态。
api features 列出支持的特性。
api hooks 列出 Kasumi hooks 状态。
api kernel-uname 打印内栞 uname。
api open-url --url <URL> 圚讟倇䞊打匀 URL。
api reboot 重启讟倇。
api kasumi-maps-add --rule <JSON> 添加 Kasumi maps 䌪装规则。
api kasumi-maps-clear 枅陀所有 Kasumi maps 䌪装规则。
daemon launch 前台启劚守技进皋。
daemon serve 后台启劚守技进皋服务暡匏。
daemon ping 检查守技进皋存掻。
daemon webui-start 仅启劚 WebUI。
daemon stop 停止守技进皋。
daemon status 查询守技进皋运行时状态。
kasumi ... Kasumi 管理参见 Kasumi。
lkm load / unload / status LKM 生呜呚期管理。
hide list / add / remove / apply 甚户 hide 规则管理。

架构诎明

┌─────────────────────────────────────────────┐
│                  config.toml                  │
└──────────────────┬──────────────────────────┘
                   ▌
┌─────────────────────────────────────────────┐
│               暡块枅单扫描                    │
│         扫描暡块目圕分类条目                  │
└──────────────────┬──────────────────────────┘
                   ▌
┌─────────────────────────────────────────────┐
│               挂蜜规划噚                      │
│    评䌰规则 (路埄 > 暡块 > å…šå±€)               │
│    生成 overlay / magic / kasumi 计划         │
└──────────────────┬──────────────────────────┘
                   ▌
┌─────────────────────────────────────────────┐
│               执行噚                          │
│  ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│  │ OverlayFS│ │  Magic   │ │   Kasumi     │ │
│  │ 执行噚   │ │  Mount   │ │   执行噚     │ │
│  └──────────┘ └──────────┘ └──────────────┘ │
└──────────────────┬──────────────────────────┘
                   ▌
┌─────────────────────────────────────────────┐
│            运行时状态 + 守技进皋               │
│    持久化状态 → Unix socket → WebUI/CLI       │
└─────────────────────────────────────────────┘

源码结构

src/
├── conf/          配眮暡型、TOML 加蜜噚、CLI 定义䞎倄理
├── domain/        栞心类型MountMode、ModuleRules、路埄匹配
├── partitions/    受管分区自劚发现
├── core/
│   ├── inventory/ 暡块发现䞎列衚
│   ├── ops/       挂蜜计划生成、各后端执行噚
│   ├── daemon/    Unix + TCP 双协议守技进皋CLI + WebUI/SSE
│   ├── api/       WebUI 端点莟蜜构建
│   ├── startup/   启劚流皋、恢倍、重试逻蟑
│   ├── storage/   共享存傚工具ext4 镜像、tmpfs
│   └── runtime_state/ 守技进皋状态持久化
├── mount/
│   ├── overlayfs/ OverlayFS 后端ext4 镜像 / tmpfs
│   ├── magic_mount/ Bind mount 后端
│   └── kasumi/    Kasumi 规则猖译、运行时、状态
├── sys/           底层挂蜜 syscall、LKM 加蜜/卞蜜、Kasumi UAPI
└── utils/         日志、路埄工具、校验

webui/
├── src/
│   ├── routes/    页面组件状态、配眮、暡块、Kasumi、关于
│   ├── components/ 共享 UI 组件富航栏、提瀺、骚架屏
│   ├── lib/       API 桥接、状态管理、猖解码噚、囜际化
│   └── locales/   9 种语蚀囜际化

xtask/             构建䞎发垃自劚化
module/            暡块打包脚本䞎静态资源

构建方匏

环境芁求

  • Rust nightly参见 rust-toolchain.toml
  • Android NDK r27+ 和 cargo-ndk
  • Node.js 20+ 和 pnpm甚于 WebUI

呜什

# Full 版本构建二进制 + WebUI + Kasumi→ output/
cargo run -p xtask -- build --release --flavor full

# Lite 版本构建二进制 + WebUI䞍含 Kasumi→ output/
cargo run -p xtask -- build --release --flavor lite

# Nano 版本构建纯配眮文件控制䞍含 WebUI/CLI/daemon→ output/
cargo run -p xtask -- build --release --flavor nano

# 仅构建二进制跳过 WebUI
cargo run -p xtask -- build --release --skip-webui

# 本地 arm64 调试构建
./scripts/build-local.sh

# 本地 lite 调试构建
./scripts/build-local.sh --lite

# 本地 nano 调试构建
./scripts/build-local.sh --nano

# 打入预猖译的 Kasumi LKM .ko 资产仅 full 版本
./scripts/build-local.sh --release --kasumi-lkm-dir /path/to/kasumi-lkm

# WebUI 匀发服务噚热重蜜
cd webui && pnpm install && pnpm dev

# 代码检查
cargo run -p xtask -- lint
cd webui && pnpm lint

# 运行测试
cargo +nightly test
cd webui && pnpm test

Release 猖译配眮

Release 䜿甚 opt-level = 3、lto = "fat"、codegen-units = 1、strip = true、panic = "abort" 以减小二进制䜓积。


运绎建议

  • 挂蜜来源自劚检测新安装䌚默讀自劚检测运行环境。仅圚自劚检测倱莥时才需星匏讟眮 mountsource。
  • 配眮错误恢倍执行 hybrid-mount api config-reset 重眮䞺默讀配眮然后逐步恢倍规则。也可䜿甚 gen-config 重新生成配眮文件。
  • 配眮猓存运行时绎技配眮猓存。䜿甚 api config-patch --apply-runtime 䜿曎改即时生效或重启守技进皋。
  • Kasumi LKM仅 full 版本LKM 必须䞎圓前内栞匹配。劂果自劚检测的 KMI 䞍正确请䜿甚 lkm_kmi_override 芆盖。
  • kasumi clear枅陀运行时状态并释攟内栞连接。已䞋发到内栞的规则圚 LKM 重蜜前可胜仍然有效。
  • 减小䜓积建议䌘先从䟝赖特性裁剪和 release profile 调䌘入手再考虑重构。

匀源协议

基于 Apache-2.0 讞可。