BOOX Tab8C 安装 Magisk

文石 BOOX Tab8C 安装 Magisk 全记录

写在最前面

我已经很久没有用安卓设备了,上次用安卓设备的时候,还没有 Magisk,当时获取 root 权限是使用一键 root 工具,获取权限后利用 Xposed 框架做一些对软件和系统的注入。

近期购买了文石阅读器,用来阅读文字类软件,但现在的软件,广告太多了,有些还会动,很影响使用体验。想进行去广告等操作,所以才有了本文。初步学习了下现在安卓玩机的工具,就来写本文了,可能有很多术语都不太正确,希望读者指正。现在流行的方式是安装 Magisk + LSPosed,我们来安装 Magisk,LSPosed的安装步骤网上是在是太多,而且很通用,本文不进行记录。

第一阶段 获取 update.upx

为了完成接下来的几步,你需要有一台成功安装 python3 和 adb 的电脑。

本文从修补一个 boot.img 开始记录。下面所有标注 (可选) 的步骤均为可以复用相同设备结果的步骤。

具体步骤

  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,如一致代表第一阶段已完成。

示例

由于不知道那些内容敏感,我已隐可能标识设备的内容。

下方 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

这里 提供了通过 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

详细步骤

  1. 下载 extract_android_ota_payload 的源码,并把上一阶段的 payload.bin 放到项目根目录备用。
  2. 修改 requirements.txt 文件,将大于号修改为等号,因为 4.0 版本存在重大变化,不兼容该作者的项目。
  3. 安装依赖 pip3 install -r requirements.txt
  4. 提取 python3 extract_android_ota_payload.py payload.bin extractive
  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: 更新历史版本下载连接

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