为什么我不看好 KernelSU

为什么我不看好 KernelSU

说起KernelSU,也不算是什么新鲜玩意,早在2018年就有开发者提出这个想法(kernel-assisted-superuser)。

先简单介绍一下KernelSU:通过修改Android内核的源码,实现在操作系统中允许程序调用su来获取root权限(传统的root方式是直接提供一个su可执行文件,放在/system/bin)。

由于现在很多新设备都用上了号称任何Android设备都通刷的GKI(通用内核镜像),所以KernelSU也搭上了这趟顺风车:只要你的设备支持GKI,那你只需要刷个新的内核,就能获取root权限,是不是很方便?

KernelSU听起来很不错,但为什么我不看好它呢?

1. 老用户与🐶不得使用

虽然GKI已经可以用在一些比较新的设备上了,但是距离普及还需要很长一段时间。在此期间,那些坚持使用老旧设备的钉子户怎么办?厂商不开源内核源码怎么办?普通用户不会编译内核怎么办?支持KernelSU的第三方内核不兼容某某rom怎么办(普通用户绝对会把锅甩给第三方内核,内核维护者表示压力山大)?

2. 号称效果更好的root隐藏效果?

KernelSU官网宣称“只有得到了root授权的app才可以访问su,其他app无法感知su”,看起来很高大上,其实,Magisk的“遵守排除列表”可以实现同样的效果,不需要借助任何Zygisk模块或Xposed模块,区别就是一个属于白名单策略,一个属于黑名单策略。

而且,现阶段某些app检测设备环境可不仅仅是检测root这么简单了,比如美(chou)名远(zhao)扬(zhu)的momo,它会检测挂载参数、检测Bootloader锁状态、检测被模块修改过的系统文件、检测当前运行的是否是原厂系统、检测是否存在可疑的文件和app。

/images/e39_p1.jpg

试问,KernelSU在不借助任何外力的情况下如何应对?

有隐藏就会有检测,就好比有矛就会有盾,现阶段某些app难以检测KernelSU,只是因为整个业界还没有做好准备。

3. 安全是最重要的

能力越大,责任也就越大。KernelSU在内核层面工作,安全问题也不能忽视。根据KernelSU官方的介绍:

/images/e39_p2.jpg

我们可以在内核层面对任意进程上加硬断点;我们可以在任何人不知情的情况下访问任意进程的物理内存;我们可以拦截内核空间中的任何系统调用;等等。

很显然,这很危险,这不是拥有root权限后该做的事。

4. “KernelSU的目标不是取代Magisk”

对呀,有Magisk了我有什么理由抛弃Magisk来选择你呢?Magisk劫持了init能做的事已经有很多了。

总结

kernel属于很接近硬件底层的东西,kernel已经很累了,请善待它。

当然,KernelSU也并非没有任何亮眼之处,比如KernelSU可以从内核层面修改SELinux规则(Magisk则是通过magiskpolicy在运行时修补),而且根据官方介绍,KernelSU还能为用户提供内核接口(也有可能是我的误解,因为KernelSU为用户提供的内核态su也可以算是接口(笑))。

等KernelSU推出稳定版之后,我们再来看看它的表现吧!