漏洞
编辑
不同手机厂商、系统和版本可能存在的漏洞和后门不同,因此不同手机的root原理、方法、难度都可能不同。Root需将su可执行文件复制到Android系统的/system分区下(例如:/system/xbin/su)并用chmod命令为其设置可执行权限和setuid(英语:setuid)权限。
曾经被广泛利用的系统漏洞之一是zergRush,该漏洞适用于Android 2.2-2.3.6[10],因而适用于很多Android系统手机。zergRush的漏洞利用程序必须在adb shell下运行[11],而adb shell只能将手机用USB数据线与PC连接之后才能開啟,因此常用的root工具都是PC程式。其他漏洞还有Gingerbreak[12]、psneuter[13]等。
一些“一键root”工具(例如KingRoot)可以直接利用漏洞获取root,无需连接电脑,程式通常簡易操作,不需親自執行,但通常只对部分系统或机型适用。
为了讓用户可以控制root权限的使用,防止手机上的任意应用程序直接获得root权限,用户通常还會將root管理程序复制(安装)到/system/app,用以管理su程序的使用。常用的root管理器是SuperSU,它可以在Android 6.0以前的绝大部分平台上使用。由于Android应用程序在获得root权限后可以完全控制手机,一般推荐用户对于应用程序的权限请求仔细甄别。
随着Android版本更新,这些漏洞已被修复。
Magisk
编辑
主条目:Magisk
Magisk是当前Android社区用来获取root权限的主流方式,其作为一套用于定制Android的开源工具,支持高于Android 6.0的设备。与传统的root方式不同的是,Magisk是systemless的,不会实际写入文件到/system分区。Magisk使用magic mount,将su文件和模块中的部分文件”映射”到/system分区上。
对于已解锁Bootloader的设备来说,主流的Magisk安装方式有两种,一为使用adb工具包中的fastboot命令刷入修补版boot启动镜像,二为刷入第三方recovery,通过第三方recovery安装Magisk,然此方法目前已被作者標記為棄用。
KernelSU
编辑
主条目:KernelSU
KernelSU是一个内核级的root方案。KernelSU仅会把su文件挂载到已授权的app的进程,su文件对未授权的app不可见,所以这种方案的隐藏效果较好。KernelSU支持Magisk模块。
KernelSU的GKI模式和LKM模式仅支持GKI2.0的内核,对于非GKI的内核,需要下载内核源代码、将KernelSU集成到源代码树中并自己编译内核,低于4.14版本的内核需要手动移植KernelSU。
APatch
编辑
APatch是一个基于内核的root方案,由KernelPatch驱动,APatch支持KPM(内核模块)和APM(系统模块,类似Magisk模块),它的UI和APM模块的源代码来源于KernelSU。
其他方式
编辑
MIUI开发版自带root。