APatch 中文文档 下载 App

KPM 是什么 — 内核空间模块 vs APM 用户空间模块

两个层次的模块

APatch 有两套模块系统,分别运行在不同层次:

模块类型运行位置设计目标典型用途
APM(AndroidPatch Module)用户空间 / systemless 叠加修改系统分区文件、添加脚本换字体、改 build.prop、注入 init.d 脚本
KPM(KernelPatch Module)内核空间(Ring 0)内核级 inline-hook、syscall-table-hook隐藏 root、hook 文件访问、系统调用拦截

APM 是"表面"的修改——叠加文件、追加属性、跑脚本,本质上是给 Android 系统层加东西。

KPM 是"深层"的修改——代码直接运行在内核里,可以 hook 任何内核函数、拦截任何系统调用,APM 能做到的事它也能做到,但反过来不行。

KPM 和传统 LKM 的关系

KPM 的设计灵感来自 LKM(Loadable Kernel Module)——Linux 内核的可加载内核模块机制:

但 KPM 比 LKM 更灵活:

KPM 能做什么

文档明确提到的能力:

这些能力足够做很多"超能力"级别的事:

从 APM 升级到 KPM

如果你的需求 APM 做不到(比如需要 hook 一个只有内核才知道的函数),就需要用 KPM。但 KPM 的开发门槛显著更高:

三种安装方式

KPM 有三种安装方式,详见专门章节: