Android Root化总结

0x00 背景

之前在公司做了一下三星S6 Edge的root化,第一次做root化,加上该机器比较新,没有一键root,绕了很多远路,整理一下自己的理解。

最近自己买了一个二手Nexus5,也拿来root了一下,相对简单一些。

0x01 名词解释

(Custom) ROM:ROM原本是手机里的非易失性存储,因为手机的操作系统是装在ROM里,所以现在几乎都是指代手机的操作系统/刷机包。Custom ROM就是特指第三方刷机包,但是Custom会经常被省略,直接用ROM来表示第三方刷机包。  

(Custom) Recovery:リカバリとはシステムの初期化やOSの書き換えなどを行うためのもので、標準状態のAndroidでも元々搭載されています。TWRPは標準リカバリに手を加えたもので、メーカー以外の非純正ROM(カスタムROM)を書き込んだり、システム(ROM)全体のバックアップをしたりすることができます。第三方发布的Recovery程序,主要有CWM和TWRP两种,CWM已经不更新了,现在都用TWRP。Custom Recovery其实就是类似一个引导程序,大小为二三十MB,并不是一个完整的操作系统,与ROM要区分开。

(Stock) Recovery:指官方的Recovery,仅提供了一些有限的功能,一般不提供刷第三方的ROM的功能,也没有从sd卡安装软件的功能。所以如果要刷第三方ROM或者要安装SuperSU软件,则需要先安装Custom Recovery。

Root化:取得Root权限。

Flashing(刷机):刷机就是只往ROM上烧录新的ROM(第一个ROM指硬件,第二个ROM指代刷机包/OS)。刷机并不一定是为了Root化,有可能只是不满意当前的系统。

SuperSU:SuperSU就是一个能执行su、sudo命令等的软件,因为android系统并不自带su功能,我们得将这个软件拷贝到安卓上才算完整的root化。而拷贝这个软件到一台为越狱的android上要么需要android的漏洞,要么需要先刷个Custom Recovery。

0x02 Root Nexus5

  1. 在windows里安装adb,如果装过Android Studio的话adb会被装在 C:\Androidsdk\platform-tools\ 目录下,把这个目录添加到系统PATH里,然后重启机器就可以在windows的cmd或者power shell里直接使用adb命令了。

  2. 把手机用USB连接上电脑,然后打开开发者模式:打开Settings > About Phone,然后猛点Build Number,直到手机提示你开发者模式已经打开。注意之后还要点进Developer options,把USB debugging打开,否则连接不上电脑。如果仍然连接不上电脑有可能是没装Android USB driver,在Android Studio的SDK Manager里装上驱动即可。

  3. 下载对应机器的CWM Recovery(我下载的是Nexus 5的Touch Recovery);下载最新的SuperSU

  4. 把SuperSU.zip拷贝到Nexus 5的根目录下。

  5. 将手机关机,然后同时按下电源键和音量下键,进入FastBoot模式。

  6. 刷入Recovery:在windows上打开power shell,键入命令

    fastboot flash recovery recovery-clockwork-touch-6.0.4.5-hammerhead.img

    如果显示FAILED (remote: not supported in locked device)的话,则先运行命令

    fastboot oem unlock

    将手机解锁后再运行第一个命令。

  7. 使用音量键将手机调成Recovery Mode,然后按电源键进入Recovery Mode。选择install zip > choose zip from SD card。如果提示cannot mount /sdcard的话则返回Recover Mode的最上级菜单,选择mounts and storage > format /data and /data/media (/sdcard),把sdcard格式化。如果做了格式化,则之前拷贝到根目录下的SuperSU.zip也被删掉了,此时在windows上使用以下命令将SuperSU.zip重新拷贝到sdcard里:

    adb push /path/to/local/SuperSU.zip /data/media/

    然后的再执行intall zip from SD card即可。

  8. 安装完后会显示'Install from SD card complete',此时退回最上级菜单,选择reboot system now > Yes - Fix root (/system/xbin/su)即可重启。如果顺利重启则root完成,如果一直卡在重启界面,有可能还是cannot mount XXX之类的问题,返回最上级菜单,选择wipe data/factory restwipe the cache partition将各分区格式化,然后再重启即可。

  9. 最后可以在google play里下载root checker检查是否root成功。

0x03 Root 三星S6 Edge

方法一 (这个方法其实我并没有使用,有待考证)

  1. 在PC上下载Odin这个软件
  2. 使用Odin往手机里烧录TWRP的Recovery包
  3. 把带有Root权限的ROM拷到手机SD卡里,使用TWRP的install from zip功能将Custom ROM烧录到ROM里。

方法二 (我使用的方法)

直接使用CF-Auto-Root进行Root。

  1. odin3をダウンロードして
  2. https://autoroot.chainfire.eu/ から機種に対応してる自動rootリカバリーをダウンロード、今回(Galaxy S6 edge SCV31)の場合smg9200をダウンロードした。
  3. 管理者権限でodin3を立ち上げて
  4. 携帯をUSBでPCに繋いで
  5. APのところにリカバリーファイルを選ぶ
  6. 携帯の電源を切って
  7. volume-、HOME、電源この三つのボタンを同時に押して、
  8. 青い画面が出たらvolume+ボタンを押して、download(fastboot?)モードに入る
  9. odin3のstartボタンを押して待ってばいい
  10. 再起動の途中とまったけど、強制的に再起動すればなんと問題なし
  11. 再起動終わったらplay storeからroot checkerをインストールして、rootが成功したかどうかを確認。

这个方法的好处就是只要刷Custom Recovery就行了,不需要刷Custom ROM,要知道Custom Recovery只有几十MB,而一个ROM得有1个GB左右。

方法三

跟root Nexus一样,在刷完TWRP的Recovery包之后,从SD卡里安装SuperSU这个Root化软件即可。这个方法也不需要刷Custom ROM。我还没尝试过,以后有机会去试试。

0x04 Root Pixel3 With Magisk

  1. 在设置里允许解锁bootloader
  2. 重启bootloader
    adb reboot bootloader
  3. 解锁bootloader
    fastboot flashing unlock
    并在手机上点击确认
  4. 刷入TWRP的recovery
    fastboot boot twrp-3.3.0-0-blueline.img
    这里使用fastboot flash recovery twrp-3.3.0-0-blueline.img 会显示失败 FAILED (remote: Not allowed to flash (recovery)),不清楚为什么会这样,所以用上面一个命令就好了。
  5. 在TWRP界面里点击Advanced -> ADB Sideload,然后在手机上用
    adb sideload Magisk-v20.1.zip
    来安装magisk。注意安装完需要重启时选择Do not Install。否则有可能进入bootloop。

如果进入bootloop,这里有几个可以尝试的方法(首先要TWRP的Advanced -> Fix recovery bootloop解除bootloop。):

  1. 安装完Magisk选择Do not Install (Magisk Manager)。
  2. 在谷歌官网上随便找一个pixel3的image下下来,flash_all一下。
  3. 在Android Studio的Platform tools里把fastboot更新到最新。

0x05 Root Pixel 4 With Magisk

Pixel 4只能安装Android 10, 而TWRP 不支持 Android 10,那么如何安装Magisk呢?可以参考这篇文章:https://scratchpad.jp/google-pixel4-8/