Chainfire还计划发布一个基于ZIP的自动修补工具

2020-08-26 09:44:27 来源: INeng财经

到目前为止,如果要在Android 5.0上扎根,则需要将修改后的内核刷新到设备上,以解决一些SELinux限制。XDA高级公认开发人员Chainfire最近发布了以前必需的CF-Auto-Root软件包,该软件包进行了必要的内核ramdisk修改,以从AOSP的install-recovery.sh脚本中删除SELinux限制。然而,今天早上,Chainfire在许多人的脸上露出了笑容,因为他在Twitter上宣布不再需要这样做。

直到今天,Chainfire还计划发布一个基于ZIP的自动修补工具,以从TWRP恢复中自动修补内核映像,直到他遇到合适的方法来消除此需求为止。

这一发现意味着Android 5.0用户不再需要运行经过修改的内核即可通过SuperSU(或其他根解决方案)获得根访问权限。尽管在具有可解锁引导加载程序的Nexus设备上这不是一个大问题,但对于许多没有可用解锁功能的引导加载程序锁定设备的用户,还是需要修改ramdisk(是的,确实存在)。他们的祈祷的答案现在在这里,我们可以对所需的变化进行独家解释。至少到目前为止(直到/除非Google对此进行了修补),才有可能获得root用户访问权限,然后在现有的Android 5.0设备上安装和使用SuperSU,而无需进行任何内核ramdisk调整。原因是SuperSU需要以root用户身份运行服务,以允许在受SELinux保护的设备上不受限制地进行root用户访问。

以前,SuperSU将利用预安装的AOSP flash_recovery服务(在OTSP安装后用于AOSP中更新恢复)来启动SuperSU守护程序(该守护程序实际上为请求它的应用程序提供根特权)。随着Lollipop的发布,此服务已被添加到受限制的SELinux上下文中,这意味着它不再具有对系统的纯净访问权限。先前的内核修改试图从此脚本中删除SELinux限制。

Chainfire最新的SuperSU beta版通过使用核心的“ Zygote”服务(负责启动所有Java服务,从而启动了设备上安装的所有应用程序)解决了这一问题。由于Zygote是Android L上唯一可用的服务之一,它是在不受限制的“初始” SELinux上下文中作为根启动的,因此这使其成为SuperSU操作中的主要目标。引导后,Zygote服务将其SELinux“ init”上下文转换为最终的(受限制的)“ Zygote”上下文。Chainfire已经成功地修改了Zygote文件,以便在不受限制的“初始”上下文中以root用户身份运行代码,从而无需对内核进行修改即可将SuperSU带回到AndroidL。

这不是Chainfire首次寻求Zygote解决这些问题。较早的2.23 beta版使用Zygote作为一种手段来规避其他SELinux问题(这些问题导致根应用在Android L上中断)。这允许某些(但不是全部)无法运行的应用程序正常工作-其余的则需要开发人员进行一些更新。不幸的是,当查阅5.0 AOSP代码时,发现Google已经破坏了这种接管Zygote服务的方法。鉴于他先前所有接管Zygote的尝试均以失败告终,这是向前迈出的令人鼓舞的一步。

Chainfire急切地指出,SuperSU长期以来能够在运行的系统上修改SELinux策略(并警告OEM可以轻松地禁用SELinux策略,并真正防止有意义和简单的root访问),以及如何进行任何修改鉴于服务是在各种不同的上下文中针对不同的任务运行的,因此必须谨慎做出Zygote,这增加了许多(令人讨厌的)细微故障的可能性。这款新的SuperSU beta 2.27版是发烧友和其他技术人员可以使用的版本,以找出有什么问题。手指交叉-没有意外的显示阻止程序错误,这是可行的方法。

请注意-即使该Beta版成功了,并且Zygote是获得root用户访问权限的首选途径,展望未来,整个过程仅一步之遥就不会被Google破坏,这将使修补后的内核ramdisks成为root用户的未来。在Android上进行访问(因此排除了引导加载程序锁定的设备的根目录)。确实,作为一个单挑的人,由于过去几个月中SELinux进行了相当大的更改,因此新过程甚至可能无法在完全最新的AOSP构建中运行,但零售设备中并未包括这些更改,但是无疑会在将来的版本中发布。迟早,似乎修改过的内核ramdisk对于root来说是必要的,但是在我们必须朝这个方向前进之前,这个新的beta可能会缩短执行时间。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。