0%

各大手机厂商设备root调研

前言

近些年随着Android设备的发展,发现设备是越来越难以Root了,究其原因还是厂商在方便安全这两个矛盾点上,倾向于安全。毕竟哪个厂商都不愿意因为安全的事故被曝光而失去用户。这篇文章详细调研了相关的厂商以及它们的设备root难易程度,也涉及一些root的原理等。

什么是root?

玩过linux的都知道,root是linux中权限最高的用户,本质上其实就是userid和groupid为0的用户。而在Android中(Android底层也是linux),也是一样的。获取了Android设备的root权限,即意味着获取了最高的权限,可以对设备为所欲为了。

如何root?

在linux中,一般如果希望能够获取管理员的权限来执行某条指令,一般会在命令前面加上sudo,然而Android系统里没有sudo命令,甚至都没有su命令,所以想要切换到root的话,可以参考这种思路:将su可执行文件复制到Android系统的/system分区下(例如:/system/xbin/su)并用chmod命令为其设置可执行权限和setuid权限。这样就可以用这个su切换到root,就获得root权限了。

当然也可以利用设备已知的各种漏洞和后门等来提升权限,不过随着国内厂商对ROM的升级,内核的漏洞逐渐被补上,所以通过这种方法越来越难以获得root权限了。既然从漏洞来获取root权限越来越难,那么很多人就把目光放在了第三方ROM包上面,很多第三方ROM包都自带了root权限,直接刷入这些包就能获得root权限。手机厂商也没有视而不见,在OTA升级时使用Recovery对包签名进行验证来防止用户刷入修改过的包。不过还可以通过fastboot(fastboot比recovery更加底层,即引导模式)来进行线刷。现在很多厂商都锁了bootloader,如果真有需要,需要去申请解锁才可以。

详细的root漏洞可以见这里。目前市面上很多一键root软件,基本原理其实就是上面的这些,大部分都是:

  • 利用内核的漏洞暂时提权,获取到root权限
  • 使/system/bin/目录可写,并拷贝su/system/bin/
  • 将授权管理的标准Android软件包(Superuser.apk)复制到手机并安装,该apk和su就可以相互配合获得root权限了。

设备占有率调查

根据网上数据,国内各家厂商的设备占有率如下:

image-20201117153904274

前五的占比如下:

品牌 占比 root情况
华为 22.89% 需要官网填写信息申请解锁bootloader
小米 14.84% 开发版ROM自带root
荣耀 13.18% 需要官网填写信息申请解锁bootloader
vivo 11.71% 刷第三方ROM
oppo 10.42% 刷第三方ROM
总计 73.04%

显然从总体上来说,除了华为系的设备需要去官网填写信息并且解锁bootloader以外,其他的设备都是比较容易root的。并且华为的申请也不难,只要设备确实是本人的,也很容易申请下来,之后就可以root了。

基本上现在(2020年)的设备,想要Root还是很简单的。

一般Root流程

不得不承认,随着技术的飞速发展,之前的Superuser.apk + su的组合已经成为了过去式,目前主流的应该都是应用的一个叫Magisk的“框架”来进行的。

还记得前言里面写的吗?安全与方便就像鱼和熊掌一样,但是Magisk可以说在一定程度上解决了这个问题。本质上,Magisk就是挂载了一个自己定义的分区,然后所有的改动都在这个分区里面进行,完全不影响系统分区。这样,如果应用需要获取设备的信息,那么可以选择让它去你想要它获取设备信息的分区中获取;这样OEM厂商进行完整性检查也完全没有任何问题。

从上面的叙述中可以看出,Magisk几乎不会对原有的系统有任何的影响,也就是几乎没有侵入性,不会对系统文件进行直接修改,这也是它深受人们喜欢的原因。