安卓Frida逆向与协议分析
上QQ阅读APP看书,第一时间看更新

1.3 移动设备环境准备

1.3.1 刷机

在安卓逆向的学习中,提及基础一定不能错过刷机,而在刷机之前,一定要准备一台测试机,这里笔者推荐Google官方的Nexus系列和Pixel系列的测试机。之所以推荐Google原生系统,是因为Google官方不仅提供了镜像,而且在对应的源码网站上能够找到相应镜像的全部源码,在国内Android市场,比如华为、小米等公司实际上都魔改了Android系统,但均未开源,其在测试过程中总会与Android官方源码有所差异,导致出现各种各样的问题,因此笔者更加推荐Google官方推出的手机。笔者在这本书中选择了Nexus 5X,读者如选择其他型号的手机,仅供参考。

在拿到测试机后要完成刷机,首先需要打开手机的“开发者选项”,具体步骤如下:

进入“设置”页面,点击“系统”,然后点击“关于手机”,进入“关于手机”界面,如图1-8所示。

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

连续多次点击“版本号”所在View,直到屏幕提示已进入“开发者模式”,如图1-9所示。

在出现页面提示“已处于开发者模式”后返回上一级目录,也就是进入“系统”界面,此时会出现“开发者选项”,点击“开发者选项”,如图1-10所示。

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

图1-10 进入“开发者选项”界面

在进入“开发者选项”界面后,首先打开“USB调试”。在这个选项打开后,使用USB线连接计算机,手机端就会出现“允许USB调试吗?”对话框,如图1-11所示。

图1-11 请求允许USB调试

在同意USB调试之前和之后使用adb devices命令的结果如下:

再次回到Android测试机上,此时还有一个“OEM解锁”选项需要允许,如图1-12所示。这个选项决定了后续能否完成刷机,也就是刷机中常听到的Bootloader锁。

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

图1-12 请求允许“OEM解锁”

图1-13 OEM未解锁之前的Bootloader界面

保持手机使用USB线连接上计算机,再次在计算机终端中运行fastboot oem unlock命令,然后测试机就会弹出确认界面,此时按音量减键直至选中YES选项后按电源键,至此,OEM锁就成功解锁了。如图1-14所示为解锁后的Bootloader界面。

图1-14 OEM已解锁的Bootloader界面

在OEM解锁后,一个完整的可供刷机的手机就准备完成了,此时如果要刷入新的特定系统,就要准备刷机包。这里的刷机包其实也可以叫作官方镜像包,Google官方提供了一个官方镜像的站点(网址:https://developers.google.com/android/images),笔者这里下载Nexus 5X的对应刷机包,由于Android 8.1.0_r1这个版本的系统支持的设备比较多,因此在这里笔者选择这个版本的系统进行演示。Android 8.1.0_r1对应代号为OPM1.171019.011,版本与代号对应关系的网址为https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds,在找到代号后,再次回到官方镜像站下载对应版本的镜像。

在下载完毕后,解压刷机包并进入刷机包目录,同时手机进入Bootloader界面并使用USB线连接上主机,然后直接运行flash.sh文件。对应步骤如下:

之后,手机系统便会进入初始化界面,在完成语言、WiFi等相关的设置后,一台“新”的测试机就诞生了。当然,为了方便后续测试,此时还需要再次打开“开发者选项”以获取USB调试许可。

如图1-15所示,在联网之后会发现测试机系统时间与计算机时间不对应,且页面提示“此WLAN网络无法访问互联网”。此时可以通过以下命令解决这个问题,在命令运行结束后,待测试机重新开机后便会发现问题消失。

图1-15 WLAN网络无法访问互联网及时间不同步问题