使用Linux系统的人都知道,在Linux上有一个程序叫/usr/bin/su,用户可以通过su命令来切换身份,安卓的基础是Linux,在安卓版本1.0-4.4中,安卓默认安装了su程序,使用者可以通过使用su进行获取Root,只需要su程序的权限为Access: (4755/-rwsr-xr-x) Uid: ( 0/ Root) Gid: ( 0/ Root)。
第二阶段:混乱中的探索,supersu与superuser
Google在安卓4.4版本,基本上将Linux中可提权的漏洞修复并限制利用漏洞进行提权的方式。安卓4.4及以上,Anroid也不预装su程序,并且加入SElinux,就算拥有4755权限的su也无法达到完美Root。开发者们就尝试将改造后的su写入到安卓的/system下,让需要Root权限的程序通过/system下的su程序进行执行。
而向/system下写入su需要提前解锁(unlock)安卓手机,该方式比利用漏洞提权稳定性更高。许多大神都开始编写不同的su程序,其中比较有名的就是chainsDD的su与chainfire的suspersu,而单有获取Root权限的方式仍然不够,还需要一个分发Root权限的管理工具,koush的superuser恰好补齐了这一缺点,让这一体系得以完善。
不过好景不长,该方法引起了Google的关注,Google在后续发布的版本中对/system等分区进行完整性校验,使得修改system分区变得不可行,在2018年10月,chainfire宣布不再维护supersu。而另一位开发者则以巧妙的方式,让Root又变为可能。
第三阶段:从混乱中受到启发,走向归一的Magisk
一个名叫topjohnwu的开发者,从supersu中受到启发,他仍然使用supersu的原理获得Root权限,但是他并不对/system等分区做额外的修改,他通过尝试发现,虽然/system等分区无法修改,但是可以在/system分区下进行添加挂载点,于是他用了一种overlay的方法,让用户刷写特殊的boot.img,修改启动时的挂载操作,做出了一个overlay版本的system,所有的操作都在这个system上进行,这样就避开了对原有system的修改,完成原有supersu的功能,而这款软件就是现在大部分人熟知的Magisk。Magisk不仅完成了获取Root,并且集成了Root权限的管理器。
随着topjohnwu加入谷歌,magisk的代码需要google安全团队进行审计,magisk某种程度上拥有了官方背书,是目前最稳定的Root方式。
小白该如何Root安卓的手机本文将使用TWRP方式教大家如何使用Magisk获得Root权限。在获取Root前,需要解除Bootloader锁,请读者自行联系OEM厂商解除Bootloader锁。
顶象特别提醒:Root有一定的风险,或造成手机无法使用,请谨慎操作,本文不对任何后果承担相应责任。
1、准备adb fastboot命令工具、magisk以及对应的twrp.img(不同厂商需要的twrp镜像不同,请读者自行查询所需的twrp镜像)
2、使用adb命令将Magisk放入到sdcard中,命令如下:
3、进入bootloader界面,输入对应的fastboot命令,进入twrp界面。
4、选择Install,然后选择Magisk.zip。