使用U-Boot从Pritom P7提取启动镜像
这是一篇关于如何通过UART访问U-Boot,从基于Allwinner A133的廉价Android平板中提取启动镜像的指南。原始固件在互联网上无法找到。通过获取启动镜像并使用Magisk,你可以root你的Android平板,使其更加实用。
设备介绍
Pritom P7是一款非常廉价的Android平板。我从AliExpress以33美元的价格购买,但最低可以27美元买到。这是一款通过Google GMS认证的设备(通过Play Integrity检查,我收到时未发现恶意软件),使用32位Android Go系统。我仅用它来测试一些32位Android应用的兼容性。
设备规格:Allwinner A133,1.5GB RAM(宣传为2GB,在Android信息中显示为2GB),32GB ROM,仅支持2.4 GHz WiFi,无GPS功能。
可解锁的Bootloader
幸运的是,我们可以通过开发者菜单解锁该设备的bootloader:使用adb reboot bootloader
进入fastboot模式,然后执行fastboot oem unlock
。一些廉价Android设备不允许解锁(例如基于近期Unisoc SOC的设备)。
我的平板产品ID为P7_EEA(Android 11),内核版本Linux localhost 5.4.180-svn33409-ab20220924-092422 #28 SMP PREEMPT Sun Aug 20 19:13:45 CST 2023 armv8l,构建号PRITOM_P7_EEA_20230820。
技术挑战
我没有找到针对该设备的Android漏洞利用,也没有发现任何后门。根据我的经验,一些廉价Android设备隐藏有su后门。由于找不到漏洞利用,我放弃了从用户空间提取启动镜像的尝试。
对于某些SOC,你可以使用PC软件轻松读取/转储/提取闪存。但我没有找到适用于这款Allwinner芯片的软件。例如Unisoc(前身为Spreadtrum)的SOC允许闪存读取,但另一方面,据我所知,搭载最新Unisoc SOC的手机和平板的bootloader是不可解锁的。
UART接口
幸运的是,这款设备很容易拆开,UART引脚位于左上角靠近摄像头的位置。
如果你想要进入FEL模式,最右边的引脚是FEL。但使用adb reboot efex
可以轻松进入FEL模式。
为了测试引脚是否有输出,我只需将地线连接到USB-C的地线,并在启动过程中用手按住TX焊盘上的电缆。如果你能这样按住手,就不需要焊接。
U-Boot操作
幸运的是,我们可以中断u-boot(没有被锁定);从那里可以轻松转储bootloader。有很多方法可以做到这一点,但以下是我的做法。
首先,使用env print
打印环境变量,查看用于加载启动分区的命令:
|
|
注意:我建议你更改bootdelay,以便下次更容易进入U-boot。
我们可以看到可以使用以下命令将闪存分区读取到特定内存位置:
|
|
现在,我们需要将此内存区域写入SD卡。我准备了一张FAT格式的SD卡。插入后执行:sunxi_card0_probe
。这将检测到卡。我需要执行mmcinfo
,否则下一个命令将无法工作:mmc part
。
现在我们可以测试列出卡的内容:fatls mmc 0:1
。由于我们刚刚格式化,它应该是空的。接下来是将内存写入文件:fatwrite mmc 0:1 45000000 boot.img 4000000
。注意:所有数字均为十六进制。64兆字节只是启动分区的常见大小。
安装Magisk
我们可以将Magisk APK安装到平板上,运行它,然后选择"Install"和"Select and patch file"。修补我们的boot.img,然后可以使用以下命令刷入magisk_patched_xx.img:fastboot flash boot magisk_patched_xx.img
。
其他可能性
我本可以使用u-boot转储所有分区,但我觉得u-boot写入SD卡的速度很慢。在获得root访问权限后,我们可以通过访问/dev/block/by-name
中的文件轻松转储其余分区。
结论
我希望本指南能帮助你在没有原始固件的情况下root你的Allwinner设备。
我认为除非你有特定需求,否则不值得购买此设备。如果你想测试Android Go或32位Android库的应用,这款平板还可以。这也是学习黑客Android硬件的良好平板。
如果你使用相同的设备并想要启动分区,可以在此处下载:请确保你的硬件与我的完全相同,以防止变砖。