TEE 损坏修复教程

Feb 7, 2025

TEE 损坏修复教程

前言

大半夜里正刷机刷着玩的机佬,或许是过于手贱,不幸作死乱动了 persist 分区,机佬的手机因此获得无法恢复的 TEE 损坏。对此,给出的惩罚居然是……给我整晚地找办法修啊,三回啊三回!

介绍

根据酷安@Dogggee 的帖子介绍,TEE 即手机的可信执行环境,是古希腊掌管生物信息和指纹支付的神。某些谷歌应用会验证 TEE 的环境,如果检测到 TEE 损坏直接拒绝启动。虽然国内的应用较少依赖 TEE,但如果这个模块损坏,相当于 APP 能直接读取手机中存储的生物信息,四舍五入你的指纹信息就相当于是裸奔了

TEE 损坏分为假死和真死。假死是指可逆的 TEE 损坏,例如某些厂商(如蓝厂)解锁后会自动损坏 TEE,回锁即可自动修复;又比如一些隐藏 BL 锁的模块也会导致 TEE 损坏,卸载模块即可解决。真死一般只会是动了原厂 persist 分区才会出现,真死的 TEE 损坏是不可逆的,通常意义上的修复方法也只是写入其他设备的密钥文件使 TEE 假性恢复

准备

叠甲时间:本文所述恢复方法仅作为自己恢复经历的记录,不保证在其他情况下能完全复现成功。刷机会清除所有数据,还需谨慎操作

恢复 TEE 需要先准备好以下三个素材:

  1. 对应机型工程包:这类包通常带有诸如“eng_firmware”之类的标识,酷安对应机型的讨论区通常会有分享
  2. 对应机型官方系统包:顾名思义,即对应机型官方提供的刷机包
  3. 有效 keybox:即用于恢复 TEE 的 xml 密钥文件,一般网上流传的有些时日的 keybox 都会被谷歌吊销而无效化,可以在酷安上碰运气翻翻,说不定就能翻到好心人分享的还新鲜有效的 keybox 呢(亲身经历)

步骤

  1. 将手机重启至 fastboot 模式
  2. 通过 fastboot oem edl 进入 9008 模式
  3. 使用搞机助手的 9008 刷机模式刷入工程包(理论上高通官方的 QPST 应该也行,但我试了没成功)
  4. 刷入工程包后我这台机器 BootLoader 被重新锁定,使用小米解锁工具解锁 BootLoader
  5. 解压缩官方系统包并复制出其中的 persist.img(如果是卡刷包则可能需要使用 payload_dumper 解包卡刷包中的 payload.bin 文件得到)
  6. 将从系统包中提取的 persist.img 刷入 persist 分区
  7. 重启进入工程系统,在设置中连击系统版本号进入开发者选项,开启 USB 调试选项
  8. 通过 adb 输入以下命令:
adb root
adb disable-verity
adb reboot
adb root
adb remount
adb shell mkdir -p /data/nativetest64/qti_keymaster_tests/
adb push keybox.xml /data/nativetest64/qti_keymaster_tests/
adb shell LD_LIBRARY_PATH=/vendor/lib64/hw KmInstallKeybox /data/nativetest64/qti_keymaster_tests/keybox.xml <DeviceID> true
# 其中的 <DeviceID> 在 keybox xml 文件头部,可通过文本编辑器打开发现
  1. 重启至 fastboot 刷入官方系统包(如果是卡刷包则需要先刷入第三方 recovery 如 TWRP,再重启至 recovery 中刷入)

如果你的 keybox 是有效的,密钥认证检测应该就能显示正常了。哦没跌多!

参考

结语

最大的感想:刷机的时候千万不要手贱作死乱动分区💀