购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 移动设备环境准备

1.3.1 刷机

在安卓逆向分析的学习中,一定不能错过的基础知识就是刷机。在刷机之前一定要准备一台测试机,这里推荐Google官方的Nexus系列和Pixel系列的测试机。Google官方提供了镜像和相应源码,由于国内Android市场(比如华为、小米等)都魔改了Android系统且均未开源,在测试过程中总会与Android官方源码有所差异,因此特别推荐Google官方推出的手机。笔者在本书中选择的是Nexus 5X,仅供参考。

在刷机之前,需要打开手机的开发者选项,具体步骤如下:

进入“设置”页面,单击“系统”选项,然后单击“关于手机”选项,进入“关于手机”页面,如图1-6所示。

连续多次单击“版本号”选项,直到屏幕提示已处于开发者模式,如图1-7所示。

返回上一级目录,也就是进入“系统”页面,此时单击“开发者选项”选项,如图1-8所示。

图1-6 进入“关于手机”界面

图1-7 打开“开发者模式”

图1-8 进入“开发者选项”页面

进入“开发者选项”页面后,首先打开“USB调试”选项,之后使用USB线连接上计算机,就会出现“允许USB调试吗?”的对话框,如图1-9所示。

在同意USB调试之前和同意USB调试之后都执行adb devices命令,结果如下:

回到安卓手机上,如图1-10所示,此时有一个OEM解锁需要允许。这个选项决定了后续是否刷机,也就是刷机中常听到的Bootloader锁。

图1-9 请求允许USB调试

图1-10 请求允许OEM解锁

此时,在主机terminal上执行命令adb reboot bootloader,或者将手机关机后同时按住手机电源键与音量减键,进入bootloader界面。如图1-11所示是OEM未解锁之前的bootloader界面。

在terminal运行fastboot oem unlock命令,然后测试机就会弹出确认界面,按住音量减键选中YES后按电源键,这样OEM就解锁了。

     root@VXIDr0ysue:~/Chap01# fastboot oem unlock
     OKAY [170.246s]
     Finished. Total time: 170.246s

图1-12即为解锁后的bootloader界面。

在OEM解锁后,需要准备刷机包,这里的刷机包其实也可以叫作官方镜像包(Google官方提供了一个官方镜像的站点)。

可以在官方镜像站点下载Nexus 5X机型对应的刷机包,由于Android8.1.0_r1这个版本的系统支持的设备比较多,因此这里选择这个版本的系统进行演示。Android8.1.0_r1对应的代号为OPM1.171019.011(版本支持设备以及版本与代号对应关系的网址为:https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds),在找到代号后,回到镜像站下载对应版本的镜像。

图1-11 OEM未解锁界面

图1-12 OEM已解锁界面

下载完毕后,解压刷机包,进入刷机包目录,手机进入bootloader模式,连接上主机后,直接运行flash.sh文件:

之后,手机系统便会进入初始化界面。在完成语言、WiFi等相关设置后,一台“新”的测试机就诞生了。

重新获取USB调试模式后,如图1-13所示,在联网之后仍旧会提示“此WiFi网络无法访问互联网”,并且系统时间也不对。此时可以运行以下命令,在命令运行结束等测试机重新开机后便会发现问题消失了。

图1-13 WiFi网络无法访问互联网的问题以及时间不同步问题

1.3.2 ROOT

在上一小节中,我们完成了Nexus 5x版本的刷机工作,此时获得的是一个全新的没有执行过任何操作的新机。再次开启测试机的开发者模式后,打开USB调试按钮,就又可以使用adb连接手机了。

下面将演示将Nexus 5X进行Root的过程,具体步骤如下:

将TWRP(Team Win Recovery Project,是一个开放源码软件的定制Recovery映像,供基于安卓的设备使用,允许用户安装第三方固件和备份当前的系统,通常用于Root系统时安装)刷入Recovery分区。

Recovery是一种可以对安卓设备内部的数据或系统进行修改的模式,类似于Windows PE或DOS,也指Android的Recovery分区。

笔者使用的是TWRP的官方镜像文件,进入TWRP的官方网址后,选择对应型号的设备和相应版本的img镜像文件,比如进入LG厂商的设备列表,选择LG Nexus 5X (bullhead),然后在Download Links中参考自己的手机类型选择对应的版本(美版或者欧版),这里选择的是Primary(Americas)。镜像文件下载完成后就可以选择下载不同版本的twrp-3.3.0-0-bullhead.img,这里选择3.3.0版本的TWRP。

下载完毕后,进入bootloader界面,并使用fastboot工具将TWRP镜像刷入Recovery分区:

通过音量上下键按键直到页面出现Recovery mode字符串,再使用电源键确认进入Recovery恢复模式,也就是进入TWRP的界面。

使用adb命令将Root工具推送到测试机的/sdcard目录下。Root工具可以选择Magisk或者SuperSU,这里以Magisk为例。从GitHub上Magisk仓库的Release中下载最新版的zip。

注意

要选择Magisk而不是Magisk Manager,较新版为Magisk-v20.4.zip。

     root@VXIDr0ysue:~/Chap01# adb push Magisk-v20.4.zip /sdcard/
     Magisk-v20.4.zip: 1 file pushed, 0 skipped. 1.9 MB/s (5942417 bytes in 2.996s)

在进入TWRP欢迎界面后,滑动最下方按钮Swipe to Allow Modifications进入TWRP主界面,如图1-14所示;然后选择Install,默认进入/sdcard目录,此时将右侧滑块滑到最下方就能看到推送到手机上的Magisk-v20.4.zip了。

图1-14 TWRP界面

单击Magisk-v20.4.zip,进入Install Zip界面,滑动Swipe to confirm Flash滑块,开始刷Magisk的流程,如图1-15所示。然后静待界面下方出现两个按钮即代表Root完毕。

单击Reboot System按钮,重新启动系统,会发现手机应用中多了一个Magisk Manager。此时在计算机终端进入adb shell,输入su后,会提示Root申请,如图1-16所示,单击“允许”按钮后,手机的Shell即获得了Root权限。命令执行结果如下:

图1-15 刷Magisk

       root@VXIDr0ysue:~/Chap01# adb shell
       bullhead:/ $ su
       bullhead:/ #

至此,完成了手机的Root工作。使用SuperSU对设备进行Root的操作也是类似的,仅仅是将Magisk.zip换成SuperSU.zip而已。需要注意的是,SuperSU的Root和Magisk的Root是冲突的,在进行SuperSU的Root之前,先要将Magisk卸载掉。这里的卸载不是简单地卸载Magisk Manger这个APP,而是在Magisk Manger的主页面单击“卸载”按钮(见图1-17),从而恢复原厂镜像,还原后才可使用SuperSU进行Root。

图1-16 Root申请

图1-17 卸载Magisk HonVPj7fB6RtvYWFALyqoEpg7PPUVPn6MGHzPr3trki5uNSwppFskGYVYYBUyKHg

点击中间区域
呼出菜单
上一章
目录
下一章
×