[STM32F1] STM32写保护有什么实际意义

[复制链接]
3588|20
 楼主| FAQ 发表于 2015-5-3 11:08 | 显示全部楼层 |阅读模式
本帖最后由 FAQ 于 2015-5-3 11:10 编辑

读保护,可以防止别人读取flash里的内容。写保护呢?字面理解就是不让别人写入。想知道这样做有什么实际意义。


单从防止别人复制flash里面的代码这点考虑,个人觉得完全没有必要设置写保护。只设置读保护就够了。




自己辛苦做的产品不想被别人盗用,个人觉得只设置个读保护就足够了。
jinchen1227 发表于 2015-5-3 11:10 | 显示全部楼层
猜是可以避免写入错误代码影响系统功能吧
 楼主| FAQ 发表于 2015-5-3 11:12 | 显示全部楼层
jinchen1227 发表于 2015-5-3 11:10
猜是可以避免写入错误代码影响系统功能吧

你说的这个情况不考虑,我只考虑代码不被别人复制走。
jinchen1227 发表于 2015-5-3 11:49 来自手机 | 显示全部楼层
但不能说这个功能没有意义
csust_omega 发表于 2015-5-3 13:21 | 显示全部楼层
防止程序被意外冲掉
Simon21ic 发表于 2015-5-3 14:01 | 显示全部楼层
本帖最后由 Simon21ic 于 2015-5-3 14:02 编辑
FAQ 发表于 2015-5-3 11:12
你说的这个情况不考虑,我只考虑代码不被别人复制走。

那别人写进去一段小代码,开机运行的时候,把其他block的数据都读取出来怎么办?
自从几年前的一个产品被**了,就再也没用过stm32,最多也只是验证方案用用而已。要安全,就不要用stm32的常用型号。
runningwzf 发表于 2015-5-3 14:43 | 显示全部楼层
你要真防止别人抄的话,其实还挺难,想想微软、甲骨文的软件都可以被**,我们民用的软件还有什么**不了的?
所以其实只能增加**的难度,提高**的成本,让对手觉得**你这个耗时耗力,还不如自己开发
runningwzf 发表于 2015-5-3 14:43 | 显示全部楼层
你可以琢磨琢磨怎么利用芯片的ID
 楼主| FAQ 发表于 2015-5-3 15:30 | 显示全部楼层
Simon21ic 发表于 2015-5-3 14:01
那别人写进去一段小代码,开机运行的时候,把其他block的数据都读取出来怎么办?
自从几年前的一个产品被 ...

第一种方案,首先你说先写进去一段小代码,那我就认为是写到flash内了。并非RAM。

你说的这个情况,不知道读出来的数据最终是通过什么接口输出到外面的。
如果让我做我会通过USART口,这样这小段代码可以很短。代码的功能就是设置好串口然后把flash从头到尾读出来。

不过是否我可行我觉得可能会有些问题。

首先这段代码的烧录位置都是问题。因为你不知道flash内原来代码存放的位置。

如果盲目的选一个起始地址(比如从默认的0地址开始),那么很大几率这个位置是原来flash代码存放的位置。
这样这部分代码就会被所写的这小段代码给覆盖掉。读出来的代码也是不能用的。

这种方案显然是很牵强的,几乎不能用。



第二种方案就是将这小代码写到RAM中。自带的bootloader好像只能将程序写到rom中吧。所以只能通过SWJ或 SWD口仿真器在DEBUG模式下,将这小代码写入到RAM中,然后把flash中的数据读出。
 楼主| FAQ 发表于 2015-5-3 15:37 | 显示全部楼层
csust_omega 发表于 2015-5-3 13:21
防止程序被意外冲掉




意外被冲掉?一个正常的设备,即使是收到外部的干扰。外部的干扰很难凑巧形成冲掉数据的数据脉冲流吧。


目前的产品都只是做了读保护,没有做写保护,最近才关注到这个问题。想了解下产中是否有必要做写保护。

就算是代码被冲掉,我也不关心,这个不是我考虑的范围,我只关心能否被别人复制我的代码。

虽然现在很多芯片都可以被**,但是这样也能增加别人的**成本。减慢产品被别人复制的进度。
 楼主| FAQ 发表于 2015-5-3 15:40 | 显示全部楼层
runningwzf 发表于 2015-5-3 14:43
你要真防止别人抄的话,其实还挺难,想想微软、甲骨文的软件都可以被**,我们民用的软件还有什么**不了 ...

是的,本次讨论只是为了增加别人的复制成本。即使复制也要设置些障碍。

至于别人真的花了精力给复制走了,也不是我考虑的问题。毕竟已经起到一定的作用了。
runningwzf 发表于 2015-5-3 16:54 | 显示全部楼层
FAQ 发表于 2015-5-3 15:30
第一种方案,首先你说先写进去一段小代码,那我就认为是写到flash内了。并非RAM。

你说的这个情况,不知 ...

如果你出去做**,你肯定破产,你太低估了我们**人员的水平了
runningwzf 发表于 2015-5-3 16:58 | 显示全部楼层
FAQ 发表于 2015-5-3 15:37
意外被冲掉?一个正常的设备,即使是收到外部的干扰。外部的干扰很难凑巧形成冲掉数据的数据脉冲流吧 ...

就我所知,亲身经历过的,早期的AT89S5X会出现程序被冲掉,SST89系列的会被冲掉,现在STC公司的大多数产品会被冲掉,ARM系列的在LPC21XX这个系列上也发现过有
kseeker 发表于 2015-5-3 17:06 | 显示全部楼层
FAQ 发表于 2015-5-3 15:30
第一种方案,首先你说先写进去一段小代码,那我就认为是写到flash内了。并非RAM。

你说的这个情况,不知 ...

如果允许写入代码,只要两个芯片,就可以将其中内容完整读出:
第一步,写一段代码到flash启动区域,将后面的代码都读出来。当然,启动代码已经被覆盖掉。
第二部,分析刚才得到的程序,向其中插入一段代码,读取程序的开头部分,并将其中多个函数入口指向这段插入的代码。运行程序,则只要执行到这几个修改过的函数入口,就可以读出第一步中被覆盖的代码。


评分

参与人数 1威望 +1 收起 理由
hxjxyz + 1 很给力!

查看全部评分

huangqi412 发表于 2015-5-3 20:30 来自手机 | 显示全部楼层
楼主太自信了
myxiaonia 发表于 2015-5-3 20:48 | 显示全部楼层
关于stm32**的问题,隔壁坛讨论过好多次了

我说说之前发过的思路,大家看看有没有问题:读保护后调试口基本废了,使用stm32内部iap程序将木马代码写入后面的扇区,包括向量中断,然后想办法修改中断向量偏移,并触发中断,接下来中断程序就可以读出flash代码了
 楼主| FAQ 发表于 2015-5-3 21:47 | 显示全部楼层

此话怎讲
mmuuss586 发表于 2015-5-3 21:49 | 显示全部楼层

万一误操作写入了,就麻烦了;
shdjdq 发表于 2015-5-4 08:12 | 显示全部楼层
myxiaonia 发表于 2015-5-3 20:48
关于stm32**的问题,隔壁坛讨论过好多次了

我说说之前发过的思路,大家看看有没有问题:读保护后调试口 ...

关键是怎样能修改中断微量偏移,如能修改了,当然就能读出。如果用ID保护了,**还是比较麻烦的。
Keyinme 发表于 2015-5-4 09:58 | 显示全部楼层
新人路过帮顶,有没有好人帮我下个东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则

FAQ

233

主题

2050

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部