公司项目中出于风险考虑,对MCU的Flash加密后,如何烧录/更新程序。MCU是GD/STM两平台通用的,全系列支持level1,但只有部分型号支持level2。
查阅资料经各渠道求证后,总结出各level下支持的烧录方式:
level0:IAP ISP SRAM(无保护时没啥用) ICP
level1:IAP ISP SRAM(可改启动方式 烧解锁程序回归level0)
level2:IAP
同时来自Fraunhofer AISEC的一篇论文介绍了当前st读保护等级的强行破解方式,仅做为学习科普用:
level1:此时提供flash访问限制和SWD调试限制,此时sram访问未受限。而通过自制的swd(stlink不行)编写出访问flash时序,发送读取flash某个地址一个字的请求,读成功后flash被上锁。所以循环读取一个字,可以将整片flash的程序读出。
level2:完全禁止了SWD的调试能力,level 2状态下的芯片无法解除这个等级。此时可以通过去除外壳,将选项字所在flash暴露在物理干扰(光照、辐射等)下,共32位的选项字,只要使1位改变,就可以从level2降级为level1。