Magisk和LSPosed
Magisk是Android 系统级 Root 工具,LSPosed是Magisk的一个模块。
Magisk
核心特点是 系统分区无修改,因此也被称为“系统less Root”。
- 传统 Root(如 SuperSU):
- 直接修改
/system分区文件(如替换su二进制) - 容易触发系统完整性校验(如 SafetyNet)
- 直接修改
- Magisk:
- 在启动阶段通过 ramdisk 补丁* 注入一个
magiskd守护进程 - 使用 OverlayFS 挂载机制,在
/system之上叠加一层虚拟文件系统 - 实际系统分区保持原样,所有修改都在内存中完成
- 在启动阶段通过 ramdisk 补丁* 注入一个
Magisk 模块示例
- MagiskHide:隐藏 root 状态(已被 Zygisk 取代)
- Systemless Hosts:修改 hosts 文件屏蔽广告
- ViPER4Android:音效增强
- LSPosed:Xposed 框架的 Magisk 模块版(用于应用 Hook)
与frida关系,
1 | Magisk(提供 root)→ 运行 Frida-server(需要 root)→ 动态调试 App |
LSPosed
LSPosed 可以理解为:现代版 Xposed 框架,跑在 Magisk(Zygisk)里的“应用/系统行为修改器”。
原版XPosed很老了,到现在只有一些社区维护,用新版本比较好。
不修改 APK、不修改系统分区,在运行时 Hook Java 方法,改变 App 和系统行为。和frida的区别如下:
- Frida:运行时动态注入,适合临时调试、逆向分析
- Xposed/LSPosed:常驻框架,重启生效,适合做“持久化修改”(去广告、假数据、反检测)
| 工具 | 干的事 |
|---|---|
| Magisk | 提供 root + 系统层挂载能力 |
| LSPosed | 在 root 基础上,做“应用内方法级 Hook” |
1 | Magisk(root 底座) |
这里对运行原理进行一个说明:
Zygote 是 Android 系统启动时创建的第一个 Java 进程,所有 App 进程都是由它“分裂”出来的。
1 | 系统开机 |
Zygisk(Magisk 的注入机制)
Zygisk 是 Magisk 的一个功能模块,作用是在 Zygote 启动时“偷偷注入”代码。
1 | Zygote 启动 |