Andorid Root
adb 基础¶
安装配置 adb¶
国光小课堂
Android调试桥(英语:Android Debug Bridge,简称:ADB),是一种拥有众多功能的、用于调试Android 设备的命令行工具
- macOS 安装 adb
- Linux 安装 adb
-
Windows 安装 adb
- 解压放到自定义的文件夹,国光这里放的文件为:C:\Tools\platform-tools
- 配置环境变量,将 C:\Tools\platform-tools 添加到 PATH 系统变量里面
- 打开命令行窗口,测试一下 adb 命令是否正常使用
adb 的基本使用¶
连接设备¶
- USB 连接
首先在开发者选项中,启用 USB 调试,这样默认就开启了 adb 连接, 使用如下命令可以查询设备的连接情况:
- 查询已连接设备的列表
- 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)
- adb 连接移动设备的 5555 端口
- 查询已连接设备的列表
- 断开 adb 远程连接
国光小课堂:Android 10 及更低版本的 adb WiFi 连接
- 使用 USB 线将设备连接到主机
- 配置监听端口 5555 上的 TCP/IP 连接:
adb tcpip 5555
- 拔掉连接目标设备的 USB 线
- 找到 Android 设备的 IP 地址
- 通过 IP 地址连接到设备:
adb connect device_ip_address:5555
安装应用¶
使用 adb 的 install
命令在模拟器或连接的设备上安装 APK:
文件操作¶
可以使用 pull
和 push
来操作文件,与 install
命令不同,使用 pull
和 push
命令可将任意目录和文件复制到设备中的任何位置。
如需从设备中复制某个文件或目录(及其子目录),请使用以下命令:
如需将某个文件或目录(及其子目录)复制到设备,请使用以下命令:
shell 交互¶
启动交互式 shell 是我们测试中经常使用的命令:
国光小课堂
adb shell command
等同于 adb shell
然后再输入 command
命令:
其他命令¶
# 截屏保存到 /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 个步骤:
- 手机上绑定小米账号
- 下载小米解锁工具
- 手机连接电脑后按提示操作
下面以国光我的 OnePlus 6 为例,因为 OnePlus 比较接近原生系统,所以用这个为例写教程还是具有一定的通用性的。
国光小课堂
国光建议解锁 BL 使用 Windows 系统来操作,因为进入 fastboot 模式下需要电脑安装对应的驱动才可以识别我们的设备
- 【第一步】首先开启开发者选项,然后勾选 OEM 解锁:
- 【第二步】 手机重启到 fastboot 模式
国光小课堂:Android 组合键小姿势
关机状态下
-
Power + 音量下 进入 recovery 模式
-
Power + 音量上 进入 fastboot 模式
-
recovery 模式下可以选择进入fastboot 模式
当然我们可以直接使用 adb 来进入 fastboot 模式:
此时手机会进入到 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 命令:
已经可以正常识别到我们的设备了,而且设备管理器里面也正常识别我们的 Android 设备:
- 【第四步】fastboot 模式下解锁 BL
- 解锁 BL 的主要命令
接着手机上选择「UNLOCK THE BOOTLOADER」即可:
解锁完成,等待开机,第一次开机会有比较慢,耐心等待即可,
【第五步】验证是否解锁 BL
直接使用 adb 来进入 fastboot 模式:
可以看到当前的 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
使用也比较简单:
然后将 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 模式:
接着使用 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 成功。