BOOX Tab8C 安装 Magisk(已失效)
文石 BOOX Tab8C 安装 Magisk 全记录(已失效)
从内测版本 3.5.4 开始,fastboot 的 ‘Booting’ 被限制,当你刷入img文件时,会产生下方提示,故此方法已失效:
$ fastboot boot boot.img
Sending 'boot.img' (98304 KB) OKAY [ 2.288s]
Booting FAILED (remote: 'unknown command')
fastboot: error: Command failed
如有新的方法,欢迎留言交流。以下记录过程适用 3.5.4 以前的版本,点击此处展开原始内容。
我已经很久没有用安卓设备了,初步学习了下现在安卓玩机的工具,就来写本文了,可能有很多术语都不太正确,希望读者指正。为了完成接下来的几步,你需要有一台成功安装 python3 和 adb 的电脑。
本文从修补一个 boot.img
开始记录。
第一阶段 获取 update.upx
具体步骤
-
将设备 MAC 地址填写在下方地址的
deviceMAC
后面的双引号内,然后用电脑浏览器访问它。http://data.onyx-international.cn/api/firmware/update?where={"deviceMAC":"","lang":"zh_CN","model":"Tab8C","submodel":"","fingerprint":"", "buildNumber":0,"buildType":"user"}
-
你将得到了一个带有
downloadUrlList
的 JSON 字符串,找到下载地址进行下载。 -
得到 update.upx 文件。
旧内容存档
本折叠段落的内容为过时内容,除非是文石刚刚推出的新设备,不知道 model 的值时,可以参考文段落。
-
开启设备的USB调试,连接电脑时注意选择始终信任。
-
执行adb命令
adb shell getprop ro.product.model
,输出结果为Tab8C
。 -
将 MAC 地址填写在
deviceMAC
后面的双引号内,然后访问它。http://data.onyx-international.cn/api/firmware/update?where={"deviceMAC":"","lang":"zh_CN","model":"Tab8C","submodel":"","fingerprint":"", "buildNumber":0,"buildType":"user"}
-
如果你看见了
{"code":500,"message":"internal server error"}
并核对地址没有问题,大概率说明此种获取的方式已失效。请关注这里,等待大神的解决办法。 -
如果你得到了一个带有
downloadUrlList
的形如下方示例的 JSON 字符串,果断找到下载地址进行下载。 -
下载到 update.upx,并校验 md5,如一致代表第一阶段已完成。
JSON 示例
由于不知道哪些内容敏感,我已隐可能标识设备的内容。
下方 downloadUrlList
后的链接是 Tab8C 出厂时的固件地址。
不确定你看见此文时,此链接是否可用。但可以明确的是,当系统推送新的固件时,你再也看不见之前固件的任何信息。但庆幸的是,当2023年10月12日发布会结束后推送新测试固件时,此链接仍然可用。
{"_id":"64███████████ff","updatedAt":"2023-09-11T10:23:34.886Z","createdAt":"2023-09-11T10:23:13.060Z","md5":"df01b19d38b878b41442edb660feacd2","model":"Tab8C","submodel":"","brand":"ONYX","fingerprint":"Onyx/Tab8C/Tab8C:11/2023-09-08_15-39_3.4_f6█████ad/42408:user/dev-keys","buildType":"user","buildNumber":42408,"buildDisplayId":"2023-09-08_15-39_3.4_f6█████ad","excludeGroups":false,"parentFingerprint":"","force":false,"__v":0,"whitelistMAC":[],"size":1523896037,"betaGroups":["64███████████████████37"],"downloadUrlList":["http://firmware-volc.boox.com/df01b19d38b878b41442edb660feacd2/update.upx"],"changeList":["供内测设备升级使用。"],"fwType":"release"}
第二阶段 解密 update.upx
详细步骤
- 下载 decryptBooxUpdateUpx 的源码,并进入该目录。
- 安装依赖
pip3 install -r requirements.txt
- 将第一阶段获取的 update.upx 也放到根目录。
- 执行
python DeBooxUpx.py Tab8C
,等待输出 Saved decrypted file to update.zip。 - 使用
unzip
解压 update.zip,任何其他工具,我无法保证给其解压时不丢失数据。 - 在解压产物中找到 payload.bin 代表第二阶段已完成。
旧内容存档
本折叠段落的内容为过时内容,当 decryptBooxUpdateUpx 不支持您的设备型号时(如新设备),可以参考文段落。
这里 提供了通过 libota_jni.so 并密钥的的方式,我照此操作了很久,几乎整篇文章全部的时间都消耗在了这里,很可惜,依然得出来无法使用的密钥。遇到了很多依赖的坑,好在我又发现了另一方法。
- 下载 decryptBooxUpdateUpx 的源码。
- 下载并安装 GetBooxUpxKeysApp 获取到结果备用。
- 进入 decryptBooxUpdateUpx 项目的根目录,创建
run.py
,将下方内容修改为上步获取到的内容,并粘到文件里面,如果你跟我设备相同,可以不修改。MODEL = "Tab8C" STRING_SETTINGS = "Be2RyonK+CF5r11Lm8Z+s7RFeN6LM4ux8OYGuMsjaT6n" STRING_UPGRADE = "AO6XwP3Fjy8djzhAv3lWEVeGxKE1aqQ3dPIMZcutNTj3" updateUpxPath = 'update.upx' decryptedPath = 'update.zip' decrypter = DeBooxUpx(MODEL, STRING_SETTINGS, STRING_UPGRADE) print('When updating, the device decrypt update package into', decrypter.path) decrypter.deUpx(updateUpxPath, decryptedPath
- 将第一阶段获取的 update.upx 也放到根目录,执行。
- 使用
unzip
解压 update.zip,任何其他工具,我无法保证给其解压时不丢失数据。 - 在解压产物中找到 payload.bin 代表第二阶段已完成。
第三阶段 从 payload.bin 中提取 boot.img
详细步骤
- 下载 payload_dumper 的源码,并把上一阶段的 payload.bin 放到项目根目录备用。
- 安装依赖
pip3 install -r requirements.txt
- 提取
python3 payload_dumper.py payload.bin
- 在 outopt 目录中,找到 boot.img 代表第三阶段已完成
旧内容存档
本折叠段落的内容为过时内容,感谢用户在评论区提供更方便的工具,由于 extract_android_ota_payload 长时间不维护,使用起来有些不方便,不建议使用此方法。
- 下载 extract_android_ota_payload 的源码,并把上一阶段的 payload.bin 放到项目根目录备用。
- 修改
requirements.txt
文件,将protobuf>=3.6.0
修改为protobuf==3.6.0
,因为 4.0 版本存在重大变化,不兼容该作者的项目。并在下方添加google>=3.0.0
。 - 安装依赖
pip3 install -r requirements.txt
- 提取
python3 extract_android_ota_payload.py payload.bin extractive
(注:此处可能需要低版本的python3) - 在 extractive 目录中,找到 boot.img 代表第三阶段已完成
第四阶段 修补 boot.img
- 安装 Magisk 到文石设备上。将上一步的 boot.img 也传到文石设备上。
- 打开 Magisk 选择右上角的安装,选择并修补一个文件,找到 boot.img。
- 将修补后的 img 文件传回电脑,假设文件叫
magisk.img
。 - 执行
adb reboot bootloader
让设备进入 fastboot 模式。 - 执行
fastboot boot magisk.img
刷入镜像。 - 重启后打开面具,当你看到红色的卸载按钮就成功了。
升级安装面具的设备
使用 adb shell getprop ro.build.ab_update
查了下,这台设备是 A/B 分区的设备。可以在安装完整 OTA 系统更新包后,且在重启前,通过面具提供的安装到未使用的槽位进行保留面具升级。但我执行更新操作后,根本没有时间将面具安装在另一个槽位,系统直接重启了,也就是说,你更新系统后,你还需要进行本文提到的操作,通过修补 boot.img 安装面具。请看到本文的用户帮忙联系客服反馈下,“希望在系统更新后不要立即重启,给用户稍后自行重启的选择”。我已经反馈了。
adb fastboot 命令速查
- 查看 adb 是否连接成功
adb devices
列出设备 ID 即为成功 - 进入 fastboot 模式
adb reboot bootloader
- 查看是否成功进入 fastboot 模式
fastboot devices
列出设备 ID 即为成功 - 查看 bootloader 锁状态
fastboot oem device-info
输出结果的 Device unlocked 为 true 则为解锁 - 从 fastboot 模式重启到正常模式
fastboot reboot
历史下载链接汇总
仅 Tab8C。
- 3.4版本 buildNumber 42408 http://firmware-volc.boox.com/df01b19d38b878b41442edb660feacd2/update.upx
- 3.5版本 buildNumber 42839 http://firmware-volc.boox.com/0a4ca0f29aacdd229c73660cea621426/update.upx
- 3.5.1版本 buildNumber 45099 http://firmware.boox.com/b14ceae70729077064d3b1944e8adddc/update.upx
- 3.5.4版本 buildNumber 46926 http://firmware.boox.com/f9d4ba7e910549bda68998ac7d50e6d3/update.upx
更新:
2023-10-18:完善升级设备部分,增加部分 adb 和 fastboot 命令速查
2024-01-24:增加历史下载链接汇总,欢迎评论区补充
2024-03-31:更新历史版本下载连接
2024-08-04:更新历史版本下载连接
2024-08-15:更新若干内容,修复已知问题
2024-08-20:增加文字说明
2024-10-31: 优化排版