没有**不了代码,就是看**的代价有多大,我们就是增加其**代码的成本,使其高于收益,从而迫使他们放弃**;
1,物理层面 -- 加读保护, ---- 通过物理层面,找到熔断丝,很容易**,将代码读出来; 有很多简单的芯片没有此功能;
2,软件层面 -- 即代码被读出来了,但是下载到其它芯片里,却不能运行, 即要做软件签名,使 代码与芯片一一对应,若对应不上,则代码失效;
1)将芯片的ID写到一个固定区域, 代码启动时,检验此ID是否合法。
一般的做法是利用芯片的ID, 比较芯片的ID 与 存储的ID是否一致。(因为不同的芯片,ID不同,所以代码是一一对应的)
如果你的代码有boot,可以用自定的ID. 思路是一样的。
2)以上的方法有个缺陷,即可以通过反汇编,找到该ID的位置,通过修改代码,将指针指向一个空闲区域,将并在该区域写上ID,
从而**, 或者让代码直接跳过 验证函数;
所以针对这种现象,要防止代码被修改。 -- 即可以增加代码签名,
a, 代码填充满 flash空间, 对代码计算哈希值,将哈希值加密, 这样生成新的签名 bin文件;
b, 代码启动时,先验证自已经的完整性,防止代码被篡改。 QQ: 418525229 嵌入式开发 |