s40742360 发表于 2015-8-25 13:14:26

STMF1加密后的FLASH代码怎么运行?

代码加密后写入FLASH,CPU从FLASH读出的代码都是加密的,怎么运行呢?

JackieLaura 发表于 2015-8-25 16:25:39

没加密过,等大拿来分享经验。。。

enjoyfreescal 发表于 2015-8-25 16:27:53

所谓代码加密后写入flah是怎么一个原理?

党国特派员 发表于 2015-8-26 08:16:59

首先要有一段没有加密的解密程序来读取flash,解密后再运行。

党国特派员 发表于 2015-8-26 08:21:49

你为什么不用stm32本身的加密功能,要自己去加密代码呢?

你好我好大家好! 发表于 2015-8-26 08:59:04

顶顶                              

s40742360 发表于 2015-8-26 11:23:33

党国特派员 发表于 2015-8-26 08:21
你为什么不用stm32本身的加密功能,要自己去加密代码呢?

1. STM32本身的加密流程是怎样的?
我主要关心的是代码加密后写入FLASH,不是RDP那些。

2. 还有,你说的“解密后再运行”怎么实现?是把解密后的代码拷贝到RAM运行么?
这样的话,加密代码在链接的时候应该定位到RAM,对吗?
如果是的话,RAM只有64KB,如果解密的代码本身已很大,RAM不光要存放解密后的代码,还要负责堆、栈、变量,RAM很可能出现不够用的情况。

谢谢关注

党国特派员 发表于 2015-8-26 12:51:40

针对你说的定位问题,在你编译的时候就已经定位。
比如 我的程序编译的时候就定位在在RAM里0x20001000处。解密的时候把解密后的程序直接放在RAM 的0x20001000处就可以了,因此也不存在定位问题。
RAM太小,你就加大RAM...

s40742360 发表于 2015-8-26 13:05:37

党国特派员 发表于 2015-8-26 12:51
针对你说的定位问题,在你编译的时候就已经定位。
比如 我的程序编译的时候就定位在在RAM里0x20001000处。 ...

明白,感谢。

再问一下STM32本身的加密是怎样实现的?
比如有没有这样的方式:系统存储器的BootLoader在写FLASH的时候就使用硬件加密了,然后在取指后,硬件解密后CPU再执行?

adlu 发表于 2015-8-26 17:47:31

代码加密后写入FLASH,CPU从FLASH读出的代码都是加密的,怎么运行呢?
加密的目的是不让别人获取程序代码,或者获取了也不能使用。
很少像你说的,把代码加密后存入FLASH,然后CPU读取FLASH解密再放到RAM中运行。

加密的基本方式又两种,一是硬件加密,二是软件加密。
硬件加密:一般是烧断熔丝,或者锁死FLASH(TI的FLASH型DSP用这种),目的都是防止别人读取程序代码。
软件加密:一般是ID加密,或者使用专用芯片加密。软件加密的程序,别人即使读到了FLASH中的代码,复制到其他板子上,也是不能正常工作的。
页: [1] 2
查看完整版本: STMF1加密后的FLASH代码怎么运行?