android 手机获取root权限(刷入magisk面具方式)

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    文章目录

    预备环节

    基础参考内容

    视频教程 ★ \bigstar

    基础知识准备

    • 将前面列出的参考都看一遍
    • 最好把文章结尾的基础知识以看看
      • 特别是@晨钟(极客湾)的视频,相对全面,可以看他个两三遍(一遍估计不太好消化),当然如果不搞游戏什么的进阶后面的部分可以略过

    推荐具有的技能(optional)

    • 遇到问题时,会使用搜索引擎/论坛寻求帮助查找问题
      • 会google更好,会使用搜索语法就更好
      • 能完整版酷安搜贴也不错(或xda)
      • 会点英文更好

    工具/材料准备

    硬件和软件

    magisk app注意事项/刷入面具

    • 下载完后,及时安装上magisk app,即,在刷入之前就安装好
      • 这个步骤主要是针对修补文件是来自其他人提供的情况下
      • 如果是自己修补的,那么一般不会有问题(自己修补,magisk app是肯定是已经安装好了才有的修补(不用第二台手机参与的情况下)
    • 我试过如果在刷入后,才安装magisk app可能会使得root无法被magisk app接管
      • 但如果,你是线刷入修补文件而后才安装magisk app,那么请重启一下,看看magisk app能否接管root(但不一定有效,这时候考虑再刷以便面具)
      • 重启对于twrp刷入magisk的方式有效(试验过)

    关于刷进入magisk面具方式

    玩机root注意事项

    • 玩机有风险

      • 硬件损坏风险
      • 数据/信息泄漏风险
    • 建议用旧手机(备用机)试着操作一遍,总体简单

    • android7之后的都可以(root过程差不多),提高主设备刷写的成功率(当然,如果只是体验一下,主设备就不用root了)

    工作窗口预览(optional)

    在这里插入图片描述

    GUI工具箱辅助操作

    交互式脚本进行root

    核心步骤(正式)

    操作声明

    • 主要内容为:获取boot.img并修补为magisk_patched文件
    • 为了使文章主体部分简洁,将一些细节放置到了文末(按自己需要,查看目录跳转)

    设置工作路径(语境约定!⛔推荐小白使用)

    • 默认路径(我们也叫默认工作目录):如果你对命令行工具的使用比较陌生,那么推荐你选定一个工作路径,我们可以将其称之为默认路径,之后的所有的操作到集中到该目录下!

    • 将前面提到的命令行工具下载下来(下载后建议拖到桌面,并解压该压缩包,得到一个platform-tools文件夹)

    • 如果你不设置环境变量(文章末尾会提供),那么采用下面的方案中的一种即可

    方式1:在platform-tools文件夹下打开cmd

    • 在这里插入图片描述

    • 这种方式和简单(推荐)

      • 首先打开解压后的platform-tools.zip文件夹
      • 在资源管理器的地址栏中输入cmd
      • 弹出一个命令行窗口(最小化,备用)
    • 此时的默认工作目录就是这个被打开的文件夹

      • 后续的操作需要把修补的文件也放入到这个目录中!
      • 下面的方式2也还行,选择一种即可

    方式2:基于桌面下的文件夹设置默认路径(目录/文件夹)

    • 我们最熟悉,最明显的路径就是桌面了

      • 这有利于我们可视化操作文件!
    • 打开cmd

      • 打开开始菜单搜索cmd

      • 在这里插入图片描述

      • 或者键盘同时按下windows徽标联合字母键r启动窗口

        • 在这里插入图片描述

        • 输入cmd 回车即可打开cmd窗口

          • 一般来说,会是一个黑黑的窗口
    • 命令行跳转到桌面做准备:

      • cd %userprofile%/desktop/
        • 复制上述命令行,并粘贴到cmd窗口中
    • 正式设定默认工作目录

      • 工作目录就设定在platform-tools文件夹下

        • 将这个文件夹放在桌面上,将下面的命令行粘贴到cmd窗口回车执行
      • cd %userprofile%/desktop/platform-tools

    获取boot.img(可选的步骤)

    • 未修补的初始boot.img的获取方式多种

      • 可以自己下载rom然后(转化)提取

      • 在这里插入图片描述

      • 也可以直接到网上找找别人提取好的boot.img文件(譬如酷安论坛中找找帖子)

      • 可选操作:把boot.img文件拖入到默认工作目录platform-tools

    获取magisk_patched文件

    注意事项

    • 将之前获取的boot.img进行修补,即可得到magisk_patched文件

    • 获取boot.img可以是别人分享的(酷安找帖子),也可以是自己提取

    • 但是,修补boot.img建议自己修补,即,使用自己安装的magisk app自行修补

      • 这样可以保证magisk app(客户端)和修补出来的magisk_patched文件具有一致性和兼容性,不容易出现异常
      • 异常情况包括但不限于
        • 无法开机
        • 开机了,但是magisk app无法管理root权限
    • 上述方式是推荐的方式,不过你还是可以试试用别人修补过的magisk_patched文件

      • 但不建议,会增加风险(本人失败过(❁´◡`❁),幸好找到了一份未修补的boot.img,成功重刷恢复过来)

    传输boot.img到手机(optional)

    • 如果只是用手机就下载/提取到了boot.img那么这一步骤就可以跳过

    • 如果是通过电脑获取的boot.img文件,那么将boot.img 通过任意一种你喜欢或你会的方式传输到手机

      • 可以用qq/微信发送
      • 也可以用adb push方式传输
        • 可选操作:(将文件拖入到默认工作目录platform-tools中,以便于使用adb 传输
    • 下载软件工具和修补过的.img文件都已经放置到合适的位置了,下面准备刷写

    修补过程的操作细节(包括不同android版本)

    早期版本的android修补boot.img

    注意,对于较早版本的android(譬如下面的情况是我的android7老设备(已经有了AB分区的概念了)
    (第二幕中,会使用android12设备root的实践报告)


    修补前肯能遇到的选项:

    • 保留AVbobo2.0
    • 保持强制加密(默认勾选)
    • 修补boot镜像中的vbmeta
    • (一般我们保持默认即可)
    • image-20220727002112541
    • 点击下一步
    • 选择boot.img文件
    • 选择完毕会回到面具,点击开始修补(let's go)
    • 在这里插入图片描述

    较高版本的android修补boot.img

    • 对于android12设备,应该没有这么多选项(反而简洁),也是直接默认,在方式(method)选择boot.img文件直接进行修补

    • 简而言之,如果有选项这一栏,实际保持默认即可

      • (建议保持加密,否则系统可能无法引导,
      • 不过救砖不难,只需要刷入未修补的boot.img即可恢复)
    • 选择下一步,选择我们前面准备好的boot.img,文件进行修补(选择完文件后点击开始)

    • 输出过程和低版本android类似,等待all done!提示

    修补操作小结

    • 利用已经安装的magisk 手机端app进行修补boot.img文件
      • 这将得到一个修补过的boot.img(实际名字类似于magisk_patched-some-id-token.img)
      • 例如我的这次操作:得到修补后的文件magisk_patched-25200_LFBPs.img

    将修补好的magisk_patched文件传输到电脑(required!)

    修补后的文件放置在哪里/如何传输文件

    • 首先注意,手机端,magisk app修补出来的文件会被magisk app放置到手机的/sdcard/Download/目录下

      • 对应到模拟路径也就是,/storage/emulated/0/Download/magisk_patchedxxxx.img
      • 具体以magisk app修补完给出的提示为准(见上一目的截图:output file is written to...)
    • adb方式传输文件

      • PS D:\usersByCxxu\DownloadsAll> adb pull /storage/emulated/0/Download/magisk_patched-25200_VBQAh.img
        /storage/emulated/0/Download/magisk_patched-25200..., 0 skipped. 20.6 MB/s (29777192 bytes in 1.379s)
        
    • 也可以使用qq/微信传输文件(友好方式)

    • 或者其他方式

      • 感觉windows资源管理器不太靠谱

    文件传输到那个文件夹

    • 有多种方式传输文件到pc端,电脑路径可以是你熟悉的任何路径(譬如桌面)
      • 可选操作:将修补好的magisk_patched文件拖入到先前约定的默认工作目录platform-tools文件夹中

    fastboot刷入修补好的magisk_patched文件

    • 前面说到,adb是个好用的工具,但对于本教程并不是必须的
    • fastboot是本教程必须的

    进入fastboot(bootloader)模式

    • 按住电源键+音量键下(不同机型可能有不同组合键)
      • 在开机状态下可能可以直接进入到fastboot
      • 如果这不生效,可以关机后再按住上述组合键
    • 或者在开机状态下,允许计算机usb调试手机,使用命令行工具adb执行adb reboot bootloader
    • 某些recovery提供了重启到bootloader模式,也可以从recovery处重启进入

    验证fastboot是否联通(可用)

    • 至此,电脑可以通过fastboot对手机执行相关操作
      • 使用命令fastboot devices进行查询设备连通性
      • 如果成功,会返回一串设备号和编码

    刷入命令格式

    • 本教程唯一一条必要命令(其他命令的是可以别其他方式替代)

    • fastboot flash boot .\magisk_patched-25xxx.img

      • 注意,上述命令在以下环境条件才可以
        • 上述命令的magisk_patchedxxx文件名字要修改为自己修补好的文件名
        • cmd进入到默认工作目录platform-tools文件夹中再执行
          • 这是为了简化命令行(fastboot.exe和magisk_patchedxxx.img文件都在同一个目录下)
    • 可选方式:用绝对路径也可以,这样就可以在任何目录下执行相应命令

      • 例如:C:\Users\userName\Desktop\platform-tools\fastboot.exe --help

        • C:\Users\userName\Desktop\platform-tools\fastboot.exe flash boot C:\Users\userName\Desktop\platform-tools\magisk_patched-25200_VBQAh.img
        • 这样就无视任何环境,但是命令行变得很长
      • PS C:\Users\cxxu> C:\Users\cxxu\Desktop\platform-tools\fastboot.exe --help
        
        usage: fastboot [OPTION...] COMMAND...
        
        flashing:
         update ZIP                 Flash all partitions from an update.zip package.
         flashall                   Flash all partitions from $ANDROID_PRODUCT_OUT.
                                    On A/B devices, flashed slot is set as active.
        
      • 总之,如果没有相应配置,甚至没有默认工作目录的语句,可以考虑用绝对路径来帮助系统找到命令行工具fastbootmagisk_patched文件路径(但是建议用默认路径比较方便)

    开始刷写&结果

    • 调整好路径后,开始刷写
    PS D:\usersByCxxu\DownloadsAll> fastboot flash boot .\magisk_patched-25200_VBQAh.img
    Sending 'boot' (29079 KB)                          OKAY [  0.936s]
    Writing 'boot'                                     OKAY [  0.818s]
    Finished. Total time: 2.015s
    

    上面的命令做了什么&原理(optional)

    • 查看帮助文档

      • PS D:\usersByCxxu\DownloadsAll> fastboot -h
        usage: fastboot [OPTION...] COMMAND...
        
        flashing:
         update ZIP                 Flash all partitions from an update.zip package.
         flashall                   Flash all partitions from $ANDROID_PRODUCT_OUT.
                                    On A/B devices, flashed slot is set as active.
                                    Secondary images may be flashed to inactive slot.
         flash PARTITION [FILENAME] Flash given partition, using the image from
                                    $ANDROID_PRODUCT_OUT if no filename is given.
        
        basics:
         devices [-l]               List devices in bootloader (-l: with device paths).
         getvar NAME                Display given bootloader variable.
         reboot [bootloader]        Reboot device.
        
        
      • 可以看到, flash PARTITION [FILENAME] .(Flash given partition, using the image from $ANDROID_PRODUCT_OUT if no filename is given)

      • 而我们的命令fastboot flash boot magisk_patchedxx.img就是让fastboot这个程序执行子命令flash,flash 会把指定的文件刷入到指定分区partition(这里也就是boot分区);从而实现对boot分区的修改

    重启手机查看效果

    • 打开magisk app

    • image-20220727114346605

    • 顺利的话,则成功获取

    android12注意事项:刷入magisk获取&管理root权限

    • 注意较高版本的android7+之后引入的a/b分区,如果上述刷入无效
      • fastboot flash boot magisk_patch-xxx.img不生效(或异常)
      • 那么尝试显式指定boot为boot_a&boot_b分别执行并刷写之
      • 然后使用fastboot reboot重启手机

    image-20220727105229883

    预期结果

    • 如果上述步骤都顺利的话,并且能够重启成功,那么magisk app应该能够获取到root权限并进行管理

    root 之后的玩机部分

    更多参考内容

    线刷&卡刷(第三方recovery)

    • 关于卡刷第三方包(经常使用流行的twrp来操作)
    • twrp虽然不是本主题(root)的重点,但是可以参考一下思路和操作
    • TeamWin - TWRP
    • 例如redmi 4x的教程

    android推荐工具(optional)(文件管理客户端)

    驱动/命令行工具:adb&fastboot的使用和注意事项

    RSA秘钥指纹

    • 驱动现在一般不是问题,win10/11自带对android的驱动

    • 但是注意,除了驱动问题可能导致命令行工具链接不上手机

      • 特别是,如果没有经过下面的授权,在关机状态下的fastboot模式可能无法使用fastboot指令!
    • 还可能是因为手机端没有同意电脑对设备的控制(RSA秘钥指纹)

      • image-20220810082950377
    • 所以说,建议在开机状态下,确保命令行工具可以访问手机

      • adb devices -l
      • 将上述命令行复制到cmd窗口(cmd处于默认工作目录platform-tools下),既可以检查连通性

    adb链接

    大小写问题&斜杠问题(optional)

    • 由于linux(android)都是区分大小写的,windows虽然不区分,但是本教程要求区分

      • 特别是使用adb&fastboot相关命令的时候是区分大小写的,传输文件的时候末尾斜杠不要多(访问目录则是可加可不加)
      • 总之就是,传输文件的时候,文件名末尾没有斜杠/
      • 指定目录参数的时候,推荐加上斜杠/
    • 尤其是,手机上的目录是,/sdcard/Download

      • 斜杠方向
      • Download而不是小写download(x)
      • 是不带s的单数Download
        在这里插入图片描述
    • 尽管如此,选择一个短的路径会有利于找到文件

      • 譬如,push 文件到android 设备目录设置为/sdcard/,而不必放到/sdcard/Download/这一子目录下
      • 只要确保你可以方便的找到该文件即可

    adb 文件传输示例

    绝对路径传输文件实例

    • 这里我将一个压缩包传输到手机上
      • 这里要注意,第二个路径参数的斜杠是linux规范的/,如果写成\会导致意外的结果(文件传输到意料之外的地方,找不到了)
    • 对于目录,即为可以不加斜杠,但是推荐加上,这样一目了然
    PS C:\Users\cxxu\Downloads> adb push C:\Users\cxxu\downloads\Compressed\MK90.0-santoni-210620-HISTORY.zip /sdcard/Download
    C:\Users\cxxu\downloads\Compressed\MK90.0-santoni-21062...shed, 0 skipped. 25.2 MB/s (695991497 bytes in 26.315s)
    PS C:\Users\cxxu\Downloads>
    

    相对路径传输示例

    • PS C:\Users\cxxu\Downloads\Compressed> adb push  .\lineage-18.1-20220720-UNOFFICIAL-0xCAFEBABE-Mi8937.zip /sdcard/Download/
      .\lineage-18.1-20220720-UNOFFICIAL-0xCAFEBAB...pped. 23.7 MB/s (783898135 bytes in 31.594s)
      PS C:\Users\cxxu\Downloads\Compressed>
      

    利用adb shell 检查android 设备文件

    • 可选操作:检查android指定目录下是否存在某文件(下面是已经root的才有权限)

      • santoni:/ # cd sdcard/
        santoni:/sdcard # ls
        Alarms   MIUI     Music         Ringtones baidu                did    sogou
        Android  MT2      Notifications TWRP      browser              jeejen wlan_logs
        DCIM     MiMarket Pictures      Xiaomi    com.miui.voiceassist miad
        Download Movies   Podcasts      backups   dctp                 mipush
        santoni:/sdcard # cd Download/
        santoni:/sdcard/Download # ls
        3b515ef2c77d9f04e58c1d75a3add549-0-o_1g8cle2dk1mia12ds1vjs13eost32c-uid-408649.apk
        DevCheck_4.37.apk
        GitHub\ -\ yc9559_uperf_\ Userspace\ performance\ controller\ for\ android.mhtml
        MK90.0-santoni-210620-HISTORY.zip
        app-releas.zip
        app-release.apk
        app-release_mini.apk
        boot.img
        boots.zip
        magisk_patched-25200_VBQAh.img
        miui_HM4X_V11.0.1.0.NAMCNXM_7e7448fe6d_7.1.zip
        uperf-dev-22.07.24.zip
        

    配置命令行工具相关环境变量或命令行工具别名(optional)

    环境变量方式

    别名方式

    • 如果你熟悉powershell,可以对上述两个命令行工具配置别名,同样是方便的,由于是可选的内容我就不展开了,另外查阅资料,或者查看powershell帮助手册
      • man Set-Alias
      • 如果喜欢,你还可以固化别名配置

    什么都不配置

    • 都不想配置,那就得老老实实的将工作目录锁定在工具箱目录下

      • 在这里插入图片描述
    • 还有一种方式,就是每次执行命令,都将命令行工具的绝对路径打出来,很不方便

    关于fastboot工具和adb工具的使用场景和帮助名令

    • adb可以在开机的状态下使用

      • 在一些不需要root权限但又高于普通android用户权限的时候,adb用得多
      • 本教程中,adb是可选的(例如,可以做到以下事情
        • 检查设备是否成功链接(驱动是否正常):adb devices -l
          • 注意devices的拼写
        • adb reboot bootloader使得开机的(并且已经允许计算机调试的android直接重启到bootloader(fastboot模式))
          • 这可以省去关机后按音量减&电源键的物理方式进入fastboot模式,更加高效
        • 使用adb push可以用来向anroid设备传输文件
        • 另一方面,adb pull可以从android 设备将文件拉取到电脑上
        • 以上都是可选,可以用你喜欢的传输方式进行传输文件
    • 获取帮助 adb --help

      • PS D:\usersByCxxu\DownloadsAll> adb --help
        Android Debug Bridge version 1.0.41
        Version 33.0.2-8557947
        Installed as D:\exes\platform-tools\adb.exe
        
        global options:
         -a                       listen on all network interfaces, not just localhost
         -d                       use USB device (error if multiple devices connected)
         -e                       use TCP/IP device (error if multiple TCP/IP devices available)
         -s SERIAL                use device with given serial (overrides $ANDROID_SERIAL)
         -t ID                    use device with given transport id
         -H                       name of adb server host [default=localhost]
         -P                       port of adb server [default=5037]
         -L SOCKET                listen on given socket for adb server [default=tcp:localhost:5037]
         很长,省略篇幅
        
    • fastboot是线刷的主角命令

      • 用来对处于fastboot模式下的android设备进行操作
    • fastboot帮助手册fastboot --help

      • PS D:\usersByCxxu\DownloadsAll> fastboot --help
        usage: fastboot [OPTION...] COMMAND...
        
        flashing:
         update ZIP                 Flash all partitions from an update.zip package.
         flashall                   Flash all partitions from $ANDROID_PRODUCT_OUT.
                                    On A/B devices, flashed slot is set as active.
                                    Secondary images may be flashed to inactive slot.
         flash PARTITION [FILENAME] Flash given partition, using the image from
                                    $ANDROID_PRODUCT_OUT if no filename is given.
        
        basics:
         devices [-l]               List devices in bootloader (-l: with device paths).
         getvar NAME                Display given bootloader variable.
         reboot [bootloader]        Reboot device.
         
         省略篇幅
        
        

    基础知识补习

    玩机论坛/网站

    fastboot命令

    bootloader(fastboot)下的常用操作

    常用的fastboot子命令Commands

    Some of the most commonly used fastboot commands include:

    • flash – rewrites a partition with a binary image stored on the host computer.

    • flashing unlock/oem unlock – unlocks an OEM locked bootloader for flashing custom/unsigned ROMs. The is a device specific unlock key.

    • flashing lock/oem lock – an opposite action.

    • erase – erases a specific partition.

    • reboot – reboots the device into either the main operating system, the system recovery partition or back into its boot loader.

    • devices – displays a list of all devices (with the serial number) connected to the host computer.

    • format – formats a specific partition; the file system of the partition must be recognized by the device.

    • oem device-info – checks the bootloader state.

      • 例如,对于未解锁的设备,有如下提示

        • 这种情况下,许多fastboot的指令无法顺利执行.
      • fastboot oem device-info
        (bootloader) Verity mode: true
        (bootloader) Device unlocked: false
        (bootloader) Device critical unlocked: false
        (bootloader) Charger screen enabled: false
        OKAY [  0.015s]
        Finished. Total time: 0.015s
        
    • getvar all – displays all information about device (IMEI, bootloader version, battery state etc.).

    android 分区

    附(资源)

    小米/redmi 刷机包获取(optional)

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
    标签: android