跳转至

Andorid Root

adb 基础

安装配置 adb

国光小课堂

Android调试桥(英语:Android Debug Bridge,简称:ADB),是一种拥有众多功能的、用于调试Android 设备的命令行工具

  • macOS 安装 adb
# brew 安装
➜ brew install --cask android-platform-tools
  • Linux 安装 adb
# 以 Ubuntu 为例
➜ apt install android-tools-adb
  • Windows 安装 adb

  • 首先下载 Android SDK Platform Tools

  • 解压放到自定义的文件夹,国光这里放的文件为:C:\Tools\platform-tools
  • 配置环境变量,将 C:\Tools\platform-tools 添加到 PATH 系统变量里面
  • 打开命令行窗口,测试一下 adb 命令是否正常使用

adb 的基本使用

连接设备

  • USB 连接

首先在开发者选项中,启用 USB 调试,这样默认就开启了 adb 连接, 使用如下命令可以查询设备的连接情况:

➜ adb devices # (1)
List of devices attached
783a39c7    device
  1. 查询已连接设备的列表

  • WiFi 连接

首先在开发者选项中,启用无线调试,这样主要手机和电脑在同一个局域网下,无需数据线也依然可以进行 adb 远程调试:

➜ adb connect 192.168.2.124:5555 # (1)
connected to 192.168.2.124:5555

➜ adb devices # (2)
List of devices attached
192.168.2.124:5555  device

➜ adb disconnect 192.168.2.9:5555 # (3)
  1. adb 连接移动设备的 5555 端口
  2. 查询已连接设备的列表
  3. 断开 adb 远程连接

国光小课堂:Android 10 及更低版本的 adb WiFi 连接

  1. 使用 USB 线将设备连接到主机
  2. 配置监听端口 5555 上的 TCP/IP 连接:adb tcpip 5555
  3. 拔掉连接目标设备的 USB 线
  4. 找到 Android 设备的 IP 地址
  5. 通过 IP 地址连接到设备:adb connect device_ip_address:5555

安装应用

使用 adb 的 install 命令在模拟器或连接的设备上安装 APK:

➜ adb install path_to_apk

文件操作

可以使用 pullpush 来操作文件,与 install 命令不同,使用 pullpush 命令可将任意目录和文件复制到设备中的任何位置。

如需从设备中复制某个文件或目录(及其子目录),请使用以下命令:

➜ adb pull remote local

如需将某个文件或目录(及其子目录)复制到设备,请使用以下命令:

➜ adb push local remote

国光小课堂

localremote 替换为开发机器(本地)和设备(远程)上的目标文件/目录的路径。例如:

adb push foo.txt /sdcard/foo.txt

shell 交互

启动交互式 shell 是我们测试中经常使用的命令:

➜ adb shell

国光小课堂

adb shell command 等同于 adb shell 然后再输入 command 命令:

➜  adb shell uname -a
Linux localhost 4.9.227-g8bce3f4b0603 #1 SMP PREEMPT Tue May 10 01:52:07 UTC 2022 aarch64

➜  adb shell
OnePlus6:/ $ uname -a
Linux localhost 4.9.227-g8bce3f4b0603 #1 SMP PREEMPT Tue May 10 01:52:07 UTC 2022 aarch64
OnePlus6:/ $

其他命令

# 截屏保存到 /sdcard/screen.png
➜ adb shell screencap /sdcard/screen.png

# 录屏幕保存到 /sdcard/demo.mp4
➜ adb shell screenrecord /sdcard/demo.mp4

# 进入 fastboot 模式,下面两种命令都可以
➜ adb reboot fastboot

# 行入 recovery 模式
➜ adb reboot recovery

Bootloader

基本概念

Android 系统虽然也是基于 Linux 系统的,但是由于 Android 属于嵌入式设备,并没有像 PC 那样的 BIOS 程序。 取而代之的是 Bootloader —— 系统启动加载器

国光小课堂:Bootloader 知识拓展

Bootloader 主要是在系统加载前,初始化硬件设备,建立内存空间的映像图,为最终调用系统内核准备好环境。在 Android运行环境中里没有硬盘,而是 ROM,它类似于硬盘存放操作系统,用户程序等。ROM 跟硬盘一样也会划分为不同的区域,用于放置不同的程序。

系统分区 功能
/boot 存放引导程序,包括内核和内存操作程序
/system 相当于电脑 C 盘,存放 Android 系统及系统应用
/recovery 恢复分区,可以进入该分区进行系统恢复
/data 用户数据区,包含了用户的数据:联系人、短信、设置、用户安装的程序
/cache Android 系统缓存区,保存系统最常访问的数据和应用程序
/misc 包含一些杂项内容,如系统设置和系统功能启用禁用设置
/sdcard 用户自己的存储区,可以存放照片,音乐,视频等文件

Bootloader 是在 Android 系统开始运行前的一个程序,它可以将系统的软硬件环境带到一个合适的状态,为运行操作系统做好准备。一旦 Bootloader 锁上,我们就无法在手机上安装其它操作系统。

解锁 BL

Warning

解锁 BL 手机会格式化,请提前做好数据备份!!!

国光小课堂:小米手机解锁 BL

小米手机解锁 BL 有专门的官方工具,官网地址为:http://www.miui.com/unlock/index.html 解锁只需 3 个步骤:

  1. 手机上绑定小米账号
  2. 下载小米解锁工具
  3. 手机连接电脑后按提示操作

下面以国光我的 OnePlus 6 为例,因为 OnePlus 比较接近原生系统,所以用这个为例写教程还是具有一定的通用性的。

国光小课堂

国光建议解锁 BL 使用 Windows 系统来操作,因为进入 fastboot 模式下需要电脑安装对应的驱动才可以识别我们的设备

  • 【第一步】首先开启开发者选项,然后勾选 OEM 解锁:

  • 【第二步】 手机重启到 fastboot 模式
国光小课堂:Android 组合键小姿势

关机状态下

  • Power + 音量下 进入 recovery 模式

  • Power + 音量上 进入 fastboot 模式

  • recovery 模式下可以选择进入fastboot 模式

当然我们可以直接使用 adb 来进入 fastboot 模式:

➜ adb reboot bootloader

此时手机会进入到 fastboot 的模式,可以看到当前的 BL 是上锁的状态:

  • 【第三步】 安装 Googel USB 驱动

但是当手机进入到 fastboot 的模式后,我们电脑上使用 fastboot devices命令却没有反应,此时设备管理器也看了一个黄色感叹号的 Android 设备:

这是因为没有安装驱动的原因。

关于 Google USB 驱动的安装大家可以转到谷歌官方文档:安装原始设备制造商 (OEM) USB 驱动程序

如果上面这种通用方法安装 USB 驱动还是没有成功的话,我们也可以使用 XDA 论坛大佬开发的安装工具:

ADB, Fastboot and Drivers - 15 seconds ADB Installer

一加售价使用 OnePlus USB Drivers

安卓好驱动后,我们使用 fastboot 命令:

➜ fastboot devices

已经可以正常识别到我们的设备了,而且设备管理器里面也正常识别我们的 Android 设备:

  • 【第四步】fastboot 模式下解锁 BL
➜  fastboot devices
783a39c7    fastboot

➜  fastboot flashing unlock # (1)
  1. 解锁 BL 的主要命令

接着手机上选择「UNLOCK THE BOOTLOADER」即可:

解锁完成,等待开机,第一次开机会有比较慢,耐心等待即可,

【第五步】验证是否解锁 BL

直接使用 adb 来进入 fastboot 模式:

➜ adb reboot bootloader

可以看到当前的 BL 是解锁的状态(unlocked)了:

Magisk root

Magisk 是一个在 Android 上比较热门的 ROOT 权限授权管理器,可以帮助手机可以获取最高权限,也类似 Xposed 那样可以自由的新增第三方模组,而且更新也很积极官方项目很活跃,对高版本的 Android 支持也比较友好。

下载系统包

可以在 一加手机官方ROM下载-大侠阿木云盘 下载自己手机对应的系统包,确保系统包版本手机系统版本一致:

不放心是否真的一致的话,可以将我们下载的系统包拷贝到手机里面,然后选择「系统」-「系统更新」-「本地升级」来验证一下,理论上可以不需要升级点到为止即可,国光我手贱又升级了一遍:

不过这样百分百确定我们的系统包版本手机系统版本是一致的了。

提取 boot.img

官方的全量 ROM 包里面并没有 boot.img 文件:

所以需要我们手动来提取 boot.img,我们可以借助 payload-dumper-go 开源项目来进行提取。

开源项目地址为:https://github.com/ssut/payload-dumper-go

使用也比较简单:

payload-dumper-go payload.bin

然后将 boot.img 拷贝到手机的 sdcard 目录下:

➜ adb push boot.img /sdcard/boot.img
boot.img: 1 file pushed, 0 skipped. 35.3 MB/s (67108864 bytes in 1.814s)

修补 boot.img

先在手机安装最新版本的 Magisk:https://github.com/topjohnwu/Magisk/releases

修补成功后会在 Download 目录生成(magisk_patched-版本_随机.img)文件,每次生成的随机字符都不一样,我们将这个文件拷贝到电脑上。

➜ adb pull /sdcard/Download/magisk_patched-25200_wNlZx.img ~/Downloads/magisk_patched-25200_wNlZx.img

刷入 magisk_patched

使用 adb 来进入 fastboot 模式:

➜ adb reboot bootloader

接着使用 fastboot flash boot 命令来输入我们 magisk 修补后的 boot.img 文件:

➜ fastboot flash boot magisk_patched-25200_wNlZx.img
Sending 'boot_a' (65536 KB)                        OKAY [  1.448s]
Writing 'boot_a'                                   OKAY [  0.527s]
Finished. Total time: 1.985s

重启手机,开机后打开 Magisk 可以看到我们已经成功刷入了 Magisk 了,成功显示了 Magisk 的版本号为 25.2:

接着尝试是 adb shell 的 su 命令切换 root 用户验证一下也是正常的:

Bingo!至此 root 成功。

参考链接


最后更新: 2023-02-08