STM8 STM32 ID
程序加密方法
一、两层保护
a)
读保护。设置读保护功能,使芯片中的程序无法被读出。当关闭读保
护功能时,芯片会自动擦除
flash
中的所有程序;
b)
唯一的
ID
识别。每片
STM32
芯片都带有唯一的
ID
,在程序中加入
ID
验证,使程序只能在一个
ID
下运行。万一程序被拷贝出来,烧入
其它的
STM32
芯片中也不能运行。
特点:有两重保护,芯片可重复使用。
二、熔丝方案
1.
功能简介:
通过烧断芯片程序烧写口的熔丝,
防止芯片中的程序被读出或
修改;
2.
特点:熔丝一旦烧断,程序就无法读写,程序升级只能换芯片。
三、利用
id
做软件加密
1
,如果板子上有外部存储器,可以先编写一个程序,利用算法把
id
计算得
到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部
存储器的数据是否合法即可
2
,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法
把
id
计算得到一些值存入程序区
(stm8
为
EE
区
)
,程序运行时去验证程序区
数据是否正确
3
,轩微编程器有软件加密的功能,编程器会读芯片
id
,根据算法直接改写
缓冲区,达到软件加密的作用
4
,
读出的
id
通过一定算法,
例如异或加上一个数,
得到的数据存入
flash(
只
运行一次,运行后标志位也存入
flash),
下次读到这个标志位,就不运行这
个程序。
四、做软件加密时注意
1
,不要在程序中直接出现
id
地址,例如
STM32:1FFFF7E8
1FFFF7EC
1FFFF7F0
STM8: 0x4865~0x4870
2,
利用校验和或是
crc
对程序区进行校验,防止改程序