为了更方便地进行App逆向和协议分析,获取Android设备的管理员权限(即root权限)是至关重要的。 不论是Frida、Xposed,还是其他Hook框架,在默认情况下都是需要获取root权限的。 通过将Hook框架内置到系统等方式,才可以免去获取root权限。但是没有root权限,在逆向中毕竟是不方便的。因此,这一小节将介绍通过Magisk来获取Android设备root权限的方法。
在获取root权限之前,需要先开启开发者选项和USB调试。
开发者选项可以通过以下方式来开启:“设置”菜单→“系统”选项→“关于手机”选项,连续单击版本号7次。
USB调试可以通过以下方式来开启:打开手机“设置”菜单→“系统”选项→“开发者选项”,开启“USB调试”。使用数据线将手机连接至计算机,手机端会弹出USB调试申请,允许即可。开启成功的标志是,在命令行终端中输入“adb devices”会得到类似信息:
将上一小节刷机时使用的Android 10系统image-sailfish-opm1.171019.011.zip中的boot.img解压。使用adb push命令推送至手机sdcard目录,具体命令如下:
然后在手机上安装最新版Magisk Manager,本书使用的是Magisk-v23.0.apk。Magisk的下载地址是https://github.com/topjohnwu/Magisk/releases。打开Magisk Manager,单击安装Magisk,在弹出的对话框中选择sdcard目录里的boot.img,完成后会看到如图1-17所示的界面。
·图1-17 修补boot.img
在/sdcard/Download目录下会生成magisk_patched.img,这个就是安装了magisk的boot.img,也就是所谓的补丁版。使用adb pull命令将其复制到计算机上,然后手机进入Bootloader,刷入magisk_patched.img即可获取root权限。具体命令如下:
上述命令中对应的计算机端文件路径,请根据实际情况自行修改。成功获取root权限后需要调整手机时间,否则在访问网络时会出问题。
Android 7.0版本以后的系统,连接WiFi时会出现叉号,这是由于原生Android系统验证WiFi是否有效,是通过访问谷歌的服务器来判断的,其实是可以访问网络的。可以使用以下命令来关闭检测:
接着打开飞行模式,再关闭飞行模式即可。