Android - Bootloader? root原理?Recovery? SuperSU?Magisk?Xposed?ROM包?这都啥玩意?

   日期:2024-12-26    作者:syhyyx 移动:http://mip.riyuangf.com/mobile/quote/56496.html

整理了一些我了解 Android root 过程中看过的文章。
抽出了一些我觉得必要的部分写在这里,相信看完至少能对谈及的几个系统or框架有个宏观的了解。

Android - Bootloader? root原理?Recovery? SuperSU?Magisk?Xposed?ROM包?这都啥玩意?

解锁Bootloader

限制我们获取root权限的第一步是Bootloader锁。

手机开机时,最先运行的小程序就叫做bootloader(PC的BIOS+引导,我们用它来进行开机自检和初始化手机硬件,它会指引手机找到系统分区并启动操作系统,相当于电脑上的BIOS.

通过bootloader,我们可以启动正常的操作系统,也可以启动recovery系统(什么是recovery系统?下面讲

对bootloader解锁,意味着我们可以运行第三方的操作系统和recovery。

Bootloader的解锁方式有两种,官方解锁和强制解锁。

  • 很多手机厂商提供了官方解锁的方式,可以去手机官网发邮件或者通过论坛申请解锁boatloader
  • 但有些手机不支持官方解锁,我们有一些别的民间方法强制解锁,具体方法可以自行搜索

参考

  • 学会Root,让你的安卓更快更强(上
  • 学会Root,让你的安卓更快更强(下

熟悉 的童鞋都知道,我们只需要打上 的命令,就可以拥有管理员权限。

su是运行环境变量PATH下面的一个可执行文件,当任意软件运行su时,软件的权限就会被提升到Root权限。

未Root的安卓系统是没有su这个文件的所以Root一个手机,就是将su文件放入到系统运行环境变量PATH下面。 之后软件运行su程序,就可以提升到Root权限。

通常在PATH下的目录有:





一般把文件放到下

我们先来看一段古老的代码

 

(su即supersu,超级用户的缩写 r代表该文件可读,w代表可写,x代表可执行,-就代表没有该权限

这段代码的作用是获取root

可是若要修改system分区 就必须先获得ROOT权限 然而这段代码就是用来获取ROOT权限的 这样就进入了死循环。

聪明的开发者们想到了许多种方法

目前常见的方式有以下两种

  • 一键Root工具
  • 刷入第三方Recovery,再刷入SuperSU.zip/再刷入已经含有Root权限的ROM包

我们刚刚说过,Root一个手机,其实就是把su文件放入安卓系统文件夹/system/xbin

首先要解决的问题是安卓系统文件夹对于普通用户来说,只能读不能写。作为一个普通用户,我们是怎么将一个su文件放入系统文件夹呢。

方法就是,利用系统漏洞,将某一个进程提权到Root权限,并利用它将su文件放入到系统文件夹

一键Root就是使用的这种方法

  1. 首先利用系统漏洞获取某个进程的Root 权限
  2. 使/system/xbin/目录可写,并拷贝su到/system/xbin/
  3. 拷贝并安装Root权限管理器

下面说说一键Root的好处和坏处

  • 好处:简单,易懂好,操作
  • 坏处:很多机型无法Root,即使是同一个机型,效果也不稳定,有时候可以Root成功,有时候无法Root成功。甚至有时候软件显示成功,其实并没有成功。Root失败之后,还有可能导致死机,无法开机,变砖块等随机问题。

而且一键Root利用了手机的系统漏洞对进程提权放入su文件。随着安卓系统的发展,这些漏洞被逐渐修复,早期寻找系统漏洞的方式在大多数机器上无法被用。
这就是为什么刷机党们很少采用一键Root

今天,最常用的方法就是卡刷,安全高效,进入recovery执行代码。

我们先来复习一下

Root就是赋予手机管理员权限
本质就是将su程序放入手机系统文件夹下面
而难点在于系统文件夹没有管理员权限,可读不可写,我们无法轻而易举地把su文件放在里面
这时候,我们可以利用第三方的Recovery将su程序放入系统文件夹

什么是Recovery

一个安卓系统有以下不同的分区

  • 分区包含系统主体文件
  • 分区里放的是recovery.img 镜像文件
  • 分区包含APP的安装包APK文件和相应的数据
  • 分区包含缓存文件放在cache分区

Recovery像是一个独立的微型系统,可以不依赖于安卓操作系统主体单独运行。Recovery的中文名是恢复,顾名思义,当手机系统文件被损坏从而不能正常启动时,我们可以进入recovery小系统对主体系统进行修复。

手机正常启动时,我们进入的是普通的操作系统。但是通过手机厂商预设的组合键(通常是电源+音量加,我们可以进入recovery 系统。

进入recovery 系统之后,我们可以对安卓主体系统进行自由管理
但手机本身是自带厂商的官方recovery的,这个recovery功能较少,一般可以清除缓存,擦除所有数据,刷入官方指定的系统
如果我们有第三方的recovery ,就可以实现更多功能,例如调整分区大小,进行文件管理,还有刷入SuperSU.zip以及第三方的ROM 包。

目前最最好用的第三方Recovery叫做, 它是由国外android爱好者开发的一款工具 ,可以从以下网址下载
https://twrp.me/

但如果每个应用都拥有root权限,那手机还有什么安全可言

因此,出现了软件授权管理工具 SuperSU和Magisk 。

什么是SuperSU

SuperSU由国外大神开发,是全球用户都在用的授权管理软件

分为和两个版本。

  • ZIP为用户提供了Root的安卓设备的解决方案,市面上全部机型的Root权限获取与管理
  • APK主要功能是对已获得Root权限的设备进行进行权限管理。

到SuperSU 的官网,我们就可以看到apk文件和zip文件

SuperSU 的变味

参考

  • 还在用SuperSU权限管理器root手机?supersu v2.80或藏杀机
  • SuperSU殿堂级大神退役

由于SuperSU被收购和新兴框架的出现(Magisk提供的新的root解决方案,现在网上关于SuperSU的讨论基本停在了2017年末。

实在想试下,这篇文章值得参考: 如何用SuperSU和TWRP来root安卓手机

Magisk vs SuperSU

参考

  • Magisk vs SuperSU

在Android世界中,Magisk是新手,SuperSU是老手。这两种流行的工具可用于某些相同的事物,但是它们的工作方式截然不同。

  • 首先,让我们谈谈SuperSU如何获得root权限。SuperSU更改系统文件并将新文件添加到linux的系统分区。

    在Google加强安全性之前,这种方法一直有效,直到Android Marshmallow出现。修改系统分区会向尝试检测根目录的应用发送红色标记。Google SafetyNet是一个用于监视系统的API,如果检测到篡改,它将阻止某些应用程序运行。您不能将Google Pay或Netflix与SuperSU一起使用。修改系统后,您也不会获得任何 OTA(Over The Air Updates, 无线下载 )更新 。

  • Magisk被称为“systemless” root ,因为它不涉及任何这些系统文件。

    它修改启动分区,并保留了系统文件。这种修改只是虚拟地覆盖在原始文件上。当某些东西请求系统文件时,修改后的版本将被发送到magisk指定的位置。但是由于所有系统文件都是完整的,因此可以欺骗SafetyNet认为一切正常。应用仍然可以在有被root的手机上运行。

模组化
Magisk的一个功能是SuperSU不包含的。Magisk Manager应用程序允许用户对root权限进行管理,同时他还是一个模块库。“模块”是一些可以被安装的rom,可以做很多很cool的事情。

比如Active Edge自定义,表情符号替换,RAM管理修复,Camera2API启动器等等。

SuperSU没有内置模块,但是拥有root用户可以让您使用Xposed等其他框架来安装mod。

开源和闭源
两者之间的另一个大区别是开源与开源。SuperSU是封闭源,而Magisk是开放源。开源的伟大之处在于任何人都可以查看Magisk源代码。而SuperSU于几年前出售给一家名为CCMT的公司后就闭源了。有些人不喜欢使用陌生公司的封闭源软件不难理解。

毕竟Android是建立在开放源代码模型上的,这使很多人更喜欢Magisk的方法。(尽管大多数人不会去看他开源出来的代码。。

Magisk原理

参考

  • 每个 Android 玩家都不可错过的神器(一:Magisk 初识与安装

Magisk原理和下面要讲的Xposed很像。二者的工作机制都是「拦截」。

  • Xposed 通过劫持 Android 系统的 zygote 进程来加载自定义功能,这就像是半路截杀,在应用运行之前就已经将我们需要的自定义内容强加在了系统进程当中。

  • Magisk 则另辟蹊径,通过挂载一个与系统文件相隔离的文件系统来加载自定义内容,为系统分区打开了一个通往平行世界的入口,所有改动在那个世界(Magisk 分区)里发生,在必要的时候却又可以被认为是(从系统分区的角度而言)没有发生过。

它的魔力不止于 root

很多人对 Magisk 的初步认识可能是 root ——在 SuperSU 销声匿迹之后,它自然而然就成为了当前 Android 社区用来获取 root 权限的主流方式。

不过 Magisk 特殊的运作机制还赋予了它相较于 Android 平台其他定制工具而言独一无二的特质——。这种 systemless 特质让 Magisk 拥有了获取 root 权限之外的诸多优势

  • 一方面,得益于独特的挂载机制,使用 Magisk 时我们可以有针对性地隐藏 root,甚至暂时隐藏 Magisk 本身。

  • 另一方面,挂载系统的存在,也让 Magisk 拥有了多样的模块化生态系统。

既然用了「开外挂」的实现方式,那不妨就多挂载一些额外的东西,字体、音效、驱动……甚至 Xposed 本身。Magisk 提供了一个独立于系统分区以外的、可以随时隐形的「沙盒」,那自然不能将其才华禁锢于 root 这一件事上。在 Magisk 的模块仓库里,我们可以找到各式各样的模块(modules)来满足自己的定制化需求,借助这些模块,我们在 root 之后能做的事情其实也还有很多。

在这里的讨论语境下,Magisk 如何给人们留下「框架」这一认知误区的原因就浮出水面了。只是功能方面好不逊色的 Magisk,稳定性和上手门槛对大部分用户来说都更加友好。

如何安装 Magisk

作为一套复杂的文件系统,Magisk 的安装步骤却是十分简单。

视频:https://www.bilibili.com/video/BV14i4y1t7mS?from=search&seid=1656913929162768577

在电脑上配置好 adb 环境 并解开 Bootloader 锁后(自行搜索,如果你的设备有来自 TWRP 的官方支持,只需在打开 USB 调试后将手机与电脑相连,然后打开电脑端的命令行窗口

  1. 执行 进入 界面
  2. 执行 进入临时
  3. 在 中刷入你下载的 安装包

此时进入系统,你会发现你已经成功安装了 Magisk(如果显示没有安装则为获取失败,请检查操作过程重新尝试,但这还不够,我们还得进入 Magisk Manager,选择安装(install)——install——Direct Install(直接安装)才能将临时 root 转换为永久 root。

三星、华为等特殊机型的 Magisk 安装方法参见 Magisk 官方帮助文档。

卸载 Magisk 最为彻底的方式就是在 Magisk Manager 中点击「卸载」、「完全卸载」,应用会自动下载刷完 uninstall.zip 卸载包、自动卸载它自己、自动重启。如果你无法进入系统,在 TWRP 中手动刷入 uninstall.zip 卸载包即可。

至于哪些模块值得刷,就是完全看个人需求了。

Xposed原理

Xposed与root关系并不大

我们常常能看到自动抢红包插件 破解应用

这些软件的运行都需要Xposed框架

先上概念

原理:劫持Zygote进程及其创建的虚拟机,拿自己的app_process覆盖掉Android原生提供的文件,app_process在启动过程中会额外加载XposedBridge.jar这一个包,从而改变APP的运行结果。

(看不懂没关系 下面详解

Zygote进程:追溯到开机的一瞬间 【Zygote进程】在内部会先启动【Dalvik虚拟机】,加载一些必要的系统资源和系统。在系统启动脚本system/core/rootdir/init.rc文件中,我们可以看到启动【Zygote进程】的脚本命令

import /init.${ro.zygote}.rc

app_process:app的启动程序。 【zygote fork()】调用一个 【app_process】作为app的载体(细胞核叫一个蛋白质作为营养物质的载体,物质在载体上才能被运输,app也是一样,有载体才能顺利运行,xposed会把系统自带的【app_process】文件替换成【xposed app_process】

再来看一遍概念:劫持Zygote进程及其创建的虚拟机,拿自己的app_process覆盖掉Android原生提供的文件,app_process在启动过程中会额外加载XposedBridge.jar这一个包,从而改变APP的运行结果。

Xposed劫持了Zygote进程。原本是zygote调用【app_process】来运行程序,现在有了xposed后,zygote调用【被xposed替换后的app_process】来运行程序,使得程序在开启时,额外加载一个jar(可理解为游戏Mod,从而改变APP的运行结果。

什么是ROM包?

华为,小米,OPPO等都是安卓手机,但它们的系统又各不相同。
华为手机的系统叫做EMUI,小米手机的系统叫做MIUI, OPPO的操作系统叫做ColorOS。
但是,这些系统本质上都是基于安卓系统的,他们对安卓系统进行优化和定制化,加入自己特有的APP和服务。
比如我们看到很多华为手机出厂就自带华为APP,这些就是 定制化之后的安卓系统 , 这些安卓系统就叫做ROM包

ROM包(ROM image)只读内存bai镜像
ROM(Read-Only Memory)就是和RAM(Random Access Memory)一对的那个ROM

所谓的刷ROM或者刷机,指的就是重装手机操作系统。刷机的步骤主要分为以下三部

  1. 解锁bootloader
  2. 刷入第三方recovery
  3. 刷入SuperSU.zip 或者ROM包

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号