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

具体步骤

  1. 将设备 MAC 地址填写在下方地址的 deviceMAC 后面的双引号内,然后用电脑浏览器访问它。

    http://data.onyx-international.cn/api/firmware/update?where={"deviceMAC":"","lang":"zh_CN","model":"Tab8C","submodel":"","fingerprint":"", "buildNumber":0,"buildType":"user"}

  2. 你将得到了一个带有 downloadUrlList 的 JSON 字符串,找到下载地址进行下载。

  3. 得到 update.upx 文件。

旧内容存档

本折叠段落的内容为过时内容,除非是文石刚刚推出的新设备,不知道 model 的值时,可以参考文段落。

  1. 开启设备的USB调试,连接电脑时注意选择始终信任。

  2. 执行adb命令 adb shell getprop ro.product.model,输出结果为 Tab8C

  3. 将 MAC 地址填写在 deviceMAC 后面的双引号内,然后访问它。

    http://data.onyx-international.cn/api/firmware/update?where={"deviceMAC":"","lang":"zh_CN","model":"Tab8C","submodel":"","fingerprint":"", "buildNumber":0,"buildType":"user"}

  4. 如果你看见了 {"code":500,"message":"internal server error"} 并核对地址没有问题,大概率说明此种获取的方式已失效。请关注这里,等待大神的解决办法。

  5. 如果你得到了一个带有downloadUrlList的形如下方示例的 JSON 字符串,果断找到下载地址进行下载。

  6. 下载到 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

详细步骤

  1. 下载 decryptBooxUpdateUpx 的源码,并进入该目录。
  2. 安装依赖 pip3 install -r requirements.txt
  3. 将第一阶段获取的 update.upx 也放到根目录。
  4. 执行 python DeBooxUpx.py Tab8C,等待输出 Saved decrypted file to update.zip。
  5. 使用 unzip 解压 update.zip,任何其他工具,我无法保证给其解压时不丢失数据。
  6. 在解压产物中找到 payload.bin 代表第二阶段已完成。
旧内容存档

本折叠段落的内容为过时内容,当 decryptBooxUpdateUpx 不支持您的设备型号时(如新设备),可以参考文段落。

这里 提供了通过 libota_jni.so 并密钥的的方式,我照此操作了很久,几乎整篇文章全部的时间都消耗在了这里,很可惜,依然得出来无法使用的密钥。遇到了很多依赖的坑,好在我又发现了另一方法。

  1. 下载 decryptBooxUpdateUpx 的源码。
  2. 下载并安装 GetBooxUpxKeysApp 获取到结果备用。
  3. 进入 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
    
  4. 将第一阶段获取的 update.upx 也放到根目录,执行。
  5. 使用 unzip 解压 update.zip,任何其他工具,我无法保证给其解压时不丢失数据。
  6. 在解压产物中找到 payload.bin 代表第二阶段已完成。

第三阶段 从 payload.bin 中提取 boot.img

详细步骤

  1. 下载 payload_dumper 的源码,并把上一阶段的 payload.bin 放到项目根目录备用。
  2. 安装依赖 pip3 install -r requirements.txt
  3. 提取 python3 payload_dumper.py payload.bin
  4. 在 outopt 目录中,找到 boot.img 代表第三阶段已完成
旧内容存档

本折叠段落的内容为过时内容,感谢用户在评论区提供更方便的工具,由于 extract_android_ota_payload 长时间不维护,使用起来有些不方便,不建议使用此方法。

  1. 下载 extract_android_ota_payload 的源码,并把上一阶段的 payload.bin 放到项目根目录备用。
  2. 修改 requirements.txt 文件,将 protobuf>=3.6.0 修改为 protobuf==3.6.0,因为 4.0 版本存在重大变化,不兼容该作者的项目。并在下方添加google>=3.0.0
  3. 安装依赖 pip3 install -r requirements.txt
  4. 提取 python3 extract_android_ota_payload.py payload.bin extractive(注:此处可能需要低版本的python3)
  5. 在 extractive 目录中,找到 boot.img 代表第三阶段已完成

第四阶段 修补 boot.img

  1. 安装 Magisk 到文石设备上。将上一步的 boot.img 也传到文石设备上。
  2. 打开 Magisk 选择右上角的安装,选择并修补一个文件,找到 boot.img。
  3. 将修补后的 img 文件传回电脑,假设文件叫 magisk.img
  4. 执行 adb reboot bootloader 让设备进入 fastboot 模式。
  5. 执行 fastboot boot magisk.img 刷入镜像。
  6. 重启后打开面具,当你看到红色的卸载按钮就成功了。

升级安装面具的设备

使用 adb shell getprop ro.build.ab_update 查了下,这台设备是 A/B 分区的设备。可以在安装完整 OTA 系统更新包后,且在重启前,通过面具提供的安装到未使用的槽位进行保留面具升级。但我执行更新操作后,根本没有时间将面具安装在另一个槽位,系统直接重启了,也就是说,你更新系统后,你还需要进行本文提到的操作,通过修补 boot.img 安装面具。请看到本文的用户帮忙联系客服反馈下,“希望在系统更新后不要立即重启,给用户稍后自行重启的选择”。我已经反馈了。

adb fastboot 命令速查

  1. 查看 adb 是否连接成功 adb devices 列出设备 ID 即为成功
  2. 进入 fastboot 模式 adb reboot bootloader
  3. 查看是否成功进入 fastboot 模式 fastboot devices 列出设备 ID 即为成功
  4. 查看 bootloader 锁状态 fastboot oem device-info 输出结果的 Device unlocked 为 true 则为解锁
  5. 从 fastboot 模式重启到正常模式 fastboot reboot

历史下载链接汇总

仅 Tab8C。

更新:
2023-10-18:完善升级设备部分,增加部分 adb 和 fastboot 命令速查
2024-01-24:增加历史下载链接汇总,欢迎评论区补充
2024-03-31:更新历史版本下载连接
2024-08-04:更新历史版本下载连接
2024-08-15:更新若干内容,修复已知问题
2024-08-20:增加文字说明
2024-10-31: 优化排版

posted @ 2023-10-15 16:20  zhuxiaoxi  阅读(1273)  评论(9编辑  收藏  举报