Root权限是移动设备使用者所能获得的最高权限。从技术角度看,它意味着用户可以修改系统文件、控制账户、增加或删除硬件等。对于普通用户而言,主要用处是卸载无法通过常规方式卸载的软件,如部分手机厂商在出厂时预装的不可卸载应用。Root后,这些应用均可被卸载,相当于用户获得了自由增减软件的权限。
Root的历史可以追溯到Linux/Unix系统,其源于系统管理员权限的英文Root。在移动设备发展的初期,各个系统如塞班、Windows Phone、iOS、安卓等各有不同。然而,市场选择了安卓和iOS,成为主流手机操作系统。由于遵循了POSIX标准协议和开源协议,安卓和iOS都应保留了Linux/Unix的相应功能,其中安卓基于Linux构建,iOS则使用Darwin内核。理论上,所有用户都可以使用Root账户控制设备。然而,实际中,安卓和iOS并未开放Root权限,尤其是iOS的Root权限控制极其严格,因此称为“越狱”。本文主要探讨安卓系统的Root操作。
安卓系统的Root方式多种多样。根据系统版本的不同,获取Root权限的主流方式也不同。安卓手机获取Root权限主要有三种方式:利用系统漏洞、OEM官方解锁、使用特定的工厂模式。通过漏洞方式获取Root,是开发者早期的探索;工厂模式则是通过特殊ROM刷写入手机获取Root;官方解锁则是OEM厂商提供的“通道”,通过解锁Bootloader锁获取刷写ROM以获取Root。
早期安卓系统在安全性方面存在疏忽,使得许多Linux系统中的安全问题也能在安卓中复现。最早有记录并可追溯的漏洞是Znix利用CVE-2009-2692进行的安卓版本提权程序。通过蓝牙协议触发sendpage漏洞,进行权限提升攻击。随着Google的不断修复与引入SElinux,安卓系统的安全问题在安卓4.4版本后逐渐稳定,Root操作进入新的探索阶段。
在安卓4.4版本后,Google修复了Linux中的可提权漏洞,不再预装su程序,并引入SElinux限制利用漏洞进行提权。此时,开发者开始尝试将自定义的su程序写入安卓的/system分区,让需要Root权限的程序通过这个su程序执行。这需要提前解锁手机。许多大神编写了不同的su程序,如chainsDD的su与chainfire的supersu。此外,还需要一个分发Root权限的管理工具,如koush的superuser,使整个系统得以完善。
然而,Google在后续版本中对/system分区进行完整性校验,使修改变得不可行。在2024年10月,chainfire宣布不再维护supersu。随后,一个名叫topjohnwu的开发者基于supersu原理,通过overlay方法避开了对原有system分区的修改,推出了Magisk。Magisk不仅获取Root权限,还集成了Root权限管理器,是目前最稳定的Root方式。
小白如何获得安卓手机的Root权限?本文将通过TWRP方式指导大家使用Magisk。在获取Root前,需要解除BootLoader锁。步骤包括准备ADB、Fastboot命令工具、Magisk以及对应的TWRP.img镜像(根据不同厂商选择合适的TWRP镜像)。使用ADB命令将Magisk放入sdcard,进入bootloader界面,输入fastboot命令进入TWRP界面,选择Install并选择Magisk.zip。在安装Magisk的界面,将滑动条从左滑到顶端,安装成功后重启手机,将Magisk.zip改回magisk.apk并使用命令安装Magisk管理器。随后打开Magisk,可发现其已正常工作。
如何检测设备的Root状态?对于安全从业者和需要风控的企业,需要检测手机是否Root。方法包括检查Magisk App的包名、使用专业安全产品。专业安全产品如顶象设备指纹和业务安全感知防御平台,能够实时识别Root风险,精准识别模拟器、Root、越狱等风险行为,并有效防控各类人脸识别系统风险。同时,文章提到Hook技术的攻防对抗,指出Root并非Hook操作的必要条件,开发者有能力修改art源码、劫持Zygote时,可以完成Rootless HOOK操作,Root的目的在于简化Hook模块管理,使开发者更专注于模块开发。