TEE 损坏修复教程
前言
大半夜里正刷机刷着玩的机佬,或许是过于手贱,不幸作死乱动了 persist 分区,机佬的手机因此获得无法恢复的 TEE 损坏。对此,给出的惩罚居然是……给我整晚地找办法修啊,三回啊三回!
介绍
根据酷安@Dogggee 的帖子介绍,TEE 即手机的可信执行环境,是古希腊掌管生物信息和指纹支付的神。某些谷歌应用会验证 TEE 的环境,如果检测到 TEE 损坏直接拒绝启动。虽然国内的应用较少依赖 TEE,但如果这个模块损坏,相当于 APP 能直接读取手机中存储的生物信息,四舍五入你的指纹信息就相当于是裸奔了
TEE 损坏分为假死和真死。假死是指可逆的 TEE 损坏,例如某些厂商(如蓝厂)解锁后会自动损坏 TEE,回锁即可自动修复;又比如一些隐藏 BL 锁的模块也会导致 TEE 损坏,卸载模块即可解决。真死一般只会是动了原厂 persist 分区才会出现,真死的 TEE 损坏是不可逆的,通常意义上的修复方法也只是写入其他设备的密钥文件使 TEE 假性恢复
准备
叠甲时间:本文所述恢复方法仅作为自己恢复经历的记录,不保证在其他情况下能完全复现成功。刷机会清除所有数据,还需谨慎操作
恢复 TEE 需要先准备好以下三个素材:
- 对应机型工程包:这类包通常带有诸如“eng_firmware”之类的标识,酷安对应机型的讨论区通常会有分享
- 对应机型官方系统包:顾名思义,即对应机型官方提供的刷机包
- 有效 keybox:即用于恢复 TEE 的 xml 密钥文件,一般网上流传的有些时日的 keybox 都会被谷歌吊销而无效化,可以在酷安上碰运气翻翻,说不定就能翻到好心人分享的还新鲜有效的 keybox 呢(亲身经历)
步骤
- 将手机重启至 fastboot 模式
- 通过
fastboot oem edl进入 9008 模式 - 使用搞机助手的 9008 刷机模式刷入工程包(理论上高通官方的 QPST 应该也行,但我试了没成功)
- 刷入工程包后我这台机器 BootLoader 被重新锁定,使用小米解锁工具解锁 BootLoader
- 解压缩官方系统包并复制出其中的
persist.img(如果是卡刷包则可能需要使用 payload_dumper 解包卡刷包中的payload.bin文件得到) - 将从系统包中提取的
persist.img刷入 persist 分区 - 重启进入工程系统,在设置中连击系统版本号进入开发者选项,开启 USB 调试选项
- 通过 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 文件头部,可通过文本编辑器打开发现
- 重启至 fastboot 刷入官方系统包(如果是卡刷包则需要先刷入第三方 recovery 如 TWRP,再重启至 recovery 中刷入)
如果你的 keybox 是有效的,密钥认证检测应该就能显示正常了。哦没跌多!
参考
结语
最大的感想:刷机的时候千万不要手贱作死乱动分区💀