虽然只是周二,但对于关系像素爱好者来说,这已经是很棒的一周了。一天之内,我们看到了即将推出的谷歌旗舰手机的第一张照片。我们已经正式确认了来自谷歌的神秘的10月4日事件日期。
除了关于Pixel手机定价模式的消息,从现在到10月4日,Pixel的炒作似乎如火如荼。我们甚至用我们自己的专利XDA调整引擎来宣传Pixel-ville,本周末我们的文章讨论了无缝更新背后潜在的定制开发可能性。然而,在那篇文章中,我们并没有完全对你诚实,因为我们发现的每一条信息都没有描绘出一幅美丽的画面。因为在寻找Pixel手机分区的线索时,我们发现了一个让人不舒服的事实:根方法(在目前的实现中)目前似乎不可行。
如果你正在读这篇文章,你很可能对生根有一个很好的看法。毕竟因为根访问,我们可以在整个系统中屏蔽广告和安装自定义主题,或者因为在Xposed框架中提供了很多自定义功能,所以不需要使用自定义ROM。但是对于普通用户来说,root访问绝对没有意义。这个词本身会给不热心的人留下空白。对于运营商和原始设备制造商来说,根访问是一个令人头疼的问题,这使得这些公司无法将您的手机锁定在您的应用和服务生态系统中。我们一直在争论,访问根目录和引导加载程序应该是一个知识渊博的消费者的权利,我们似乎赢得了胜利,因为出现了可以解锁引导加载程序的手机(如OnePlus 3、Axon 7、Honor 8)。当然还有每一台Nexus设备。但在幕后,有一个不同的故事:获得root访问权对消费者来说是一场必败之战。
谷歌负责修复漏洞,让用户应用程序获得root访问权限,增强安卓的整体安全性。在安卓棉花糖推出之前,有许多不同的一键root漏洞利用,不需要引导加载程序来解锁或篡改引导映像。你可能听说过一个流行的一键式方法,Kingroot。King实际上是各种棉花糖之前的根漏洞的组合——这个应用程序只是循环遍历并测试你的设备容易受到哪些漏洞的攻击。除了启动应用程序这一显而易见的事实之外,没有任何提示,没有用户输入请求,也没有任何迹象表明您的设备正在被使用。
这个意思会在你的脑海里尖叫“不安全”。当然,由于这些攻击,很容易出于恶意目的重用它们。事实上,他们已经做到了。这就是谷歌试图重新采用棉花糖来实现安卓安全的原因。你会注意到,有了安卓棉花糖,只需打开用户应用即可访问的一键root方法基本消失了。由于引入了设备映射器验证(dm-verity),它在引导时检查/系统分区的完整性。
修改/system的任何永久根漏洞都会导致dm-verity失败,手机无法启动。Dm-verity通过构建/system分区的加密哈希树来工作。每个4k存储块都有一个对应的SHA256哈希,还有一个顶级“根”哈希,带有OEM用来验证哈希树完整性的特殊密钥。即使修改/system分区的单个块(例如,如果根漏洞试图授予自己对su的访问权限),也会破坏加密的哈希,并导致您的手机说/system分区“已损坏”。设备是否还能接入,取决于厂商对dm-verity的具体实现,但要严格执行“重启”模式,这取决于默认的dm-verity配置,当检测到损坏的区块时,会重启手机。对了,值得注意的是,从安卓牛轧糖开始,这种严格的强制模式现在是必须的。
使用/system用root漏洞修改,我们的棉花糖和牛轧糖上有多少用户有root权限?在XDA开发者管理和著名的氰根Mod设备维护者的最后一篇文章中,Pulser_G2概述了开发者为了实现棉花糖设备的根访问而需要做的改变。我不会引用Pulser_G2的布局,而是他关于Android棉花糖的根本挑战的优秀文章:
如果你今天想成为安卓棉花糖(6.0)的超级用户,你需要使用修改后的引导映像。尽管它是否会无限期地保持下去还有待观察,但在一段时间内似乎是这样的-SELinux的改变使得在不修改引导映像的情况下获得根访问变得更加困难。因为修改引导映像需要解锁引导加载程序,这可能会终止连接到引导加载程序的设备上的根目录(以及Xposed和其他根目录功能),最终用户无法解锁这些设备。Dm-verity也在出现,似乎已经在新设备上强制启用。即使您想在不解锁引导加载程序的情况下获得root访问权限,也很难修改/system。
Pulser_G2在这里说的本质上是我们必须找到一种不修改/system就能获得根访问的方法。这是
ldquo;无系统根源所在。为了使root用户访问能够在我们的设备上工作,超级用户可执行文件和 su 守护程序需要在引导时启动。在棉花糖之前,这是通过修改/ system使其包含 在启动时实现root访问所需的init脚本来实现的,但是由于dm-verity使得不再可能修改/ system。为了绕开这一障碍,Chainfire开发了一种方法,该方法涉及修改虚拟磁盘 以实现以下目的:修补SELinux
启动 苏 在启动守护进程
禁用dm-verity(如果适用)
禁用强制加密(如果适用)
这就是SuperSU在Lollipop之后的大多数设备上(以及在KitKat之后的三星手机上)工作的方式。最初发布无系统根目录时,您可能会得到一种印象,即该方法将与我们已经习惯的传统根目录共存。如果您到目前为止一直在读这篇文章而不会迷路,那么您可能已经意识到,实际上,无系统 root是当前的默认root方法。