
一次 Hook 要经历进程创建、代码注入、模块加载、方法解析和回调执行。每一步都有自己的成功条件。模块已加载只说明其中一扇门打开了。本文用一个小实验展开:让自有测试 App 显示的收入变成测试。读完你会知道 Magisk、Zygisk、Vector、LSPlant 各自负责什么,普通 App 为什么能做自 Hook,以及升级后应该从哪里查起。1 Magisk、Zygisk和模块,分别管什么Magisk 提供 Root、模块系统和启动阶段的修改能力。它的 Systemless 机制通过挂载、文件覆盖等方式提供修改,通常保留系统分区中的原文件。安装过程仍可能修补启动相关镜像,具体位置取决于设备。Magisk 管理 App 是配置入口。手机上出现它的图标,不能单独证明 Root 已经部署成功。截图中的主页分别展示 Magisk 本体、管理 App 和 Zygisk 状态,这几个项目需要分开理解。Zygisk 是 Magisk 内置的进程注入功能,自 v24.0 引入。依赖它的模块可以在应用进程特化前后运行代码。它为代码进入进程提供入口,方法 Hook 引擎与具体功能模块在这个入口之上工作。相关定义见 Magisk 开发指南。Vector 和 LSPosed 位于同一框架层。它们管理模块、作用域与回调,向开发者提供 Xposed 相关接口。LSPlant 是框架内部使用的 ART 方法 Hook 引擎。模块这个名称覆盖了多种交付方式。判断依赖关系,需要看代码由谁加载、在哪里执行。类型例子安装与运行方式通用 Magisk 模块