MTKClient项目中解锁Bootloader导致设备变砖的技术分析
背景介绍
MTKClient是一款用于联发科(MTK)芯片设备的开源工具,主要用于设备的解锁、刷机等操作。近期在Lenovo Vibe C2(MT6735M芯片)设备上发现一个严重问题:使用最新版本的MTKClient解锁bootloader会导致设备变砖,而回锁bootloader则可以恢复设备。
问题现象
在Lenovo Vibe C2设备上,不同版本的MTKClient在解锁bootloader时表现出不同的行为:
- 早期版本(e8d1827)能够正常工作,成功解锁bootloader
- 中间版本(16c6dc7到1a1f871)会在解密过程中无限卡死
- 较新版本(1a1f871到4290a5c)能够解锁但显示SEJ硬件配置错误
- 最新版本(4290a5c之后)解锁会导致设备变砖,只有回锁才能恢复
技术分析
从日志和代码变更分析,问题主要出在SEJ(安全引擎)相关的硬件加密处理上:
-
早期版本:使用传统的seccfg解密/加密流程,包括HACC初始化、运行和终止三个标准步骤,验证通过后写入新的seccfg配置。
-
中间版本:在HACC初始化阶段就出现无限卡死,可能是由于SEJ硬件访问时序或初始化参数变更导致。
-
较新版本:虽然能完成解锁流程,但日志显示"SEJ Legacy Hardware seems not to be configured correctly",表明硬件配置检测失败。
-
最新版本:完全导致设备变砖,说明写入的seccfg配置与设备预期不符,破坏了设备的启动验证机制。
根本原因
通过对代码变更的分析,问题可能源于以下几个方面:
- SEJ硬件加密模块的初始化参数变更
- 对V3版本lockstate的处理逻辑不够完善
- 加密/解密过程中使用的密钥或算法参数不匹配
- 写入seccfg时的数据校验机制不完整
解决方案建议
对于Lenovo Vibe C2(MT6735M)设备用户,目前建议:
- 使用早期稳定版本(e8d1827)进行bootloader解锁操作
- 如需使用新版,务必先备份原始seccfg分区
- 解锁失败后,可通过回锁操作恢复设备
- 开发者应针对MT6735M芯片优化SEJ硬件初始化流程
技术细节
从提供的日志和文件分析,可以观察到:
- 正常工作的流程包含完整的HACC初始化、运行和终止三步骤
- 失败案例中要么缺少后续步骤,要么出现硬件配置警告
- seccfg的写入大小在不同版本中有差异(0x400 vs 0xD)
- 写入速度的显著差异可能暗示底层通信协议或数据校验方式的变化
总结
这个问题凸显了在联发科设备安全机制处理中的复杂性,特别是对于较老的MT6735M芯片。设备制造商可能使用了特定的SEJ硬件配置或加密参数,而通用工具在处理这些特殊情况时需要更完善的兼容性检查。建议开发者在处理bootloader解锁时,针对不同芯片型号和设备型号实施更细致的差异化处理策略。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



