打印
[STM32F0]

读保护

[复制链接]
1372|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gongche|  楼主 | 2017-4-29 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F030如何进行读保护
沙发
huwr| | 2017-4-29 17:08 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
gongche|  楼主 | 2017-4-29 17:09 | 只看该作者
读保护代码如下,使用STlink Utility还是可以读出。

    FLASH_OB_Unlock();
    if(FLASH_OB_GetRDP() != SET)
    {

        Delay(1000);
        FLASH_OB_RDPConfig(OB_RDP_Level_1);
//        FLASH_OB_EnableWRP(OB_WRP_AllPages);
        FLASH_OB_Lock();
//        FLASH_OB_Launch();
    }

使用特权

评论回复
地板
huanghuac| | 2017-4-29 17:10 | 只看该作者
我没有这样用,调好后烧录芯片时直接加密锁死。

使用特权

评论回复
5
happy_10| | 2017-4-29 17:12 | 只看该作者
用12字节的唯一识别码保密性好不好?

使用特权

评论回复
6
gongche|  楼主 | 2017-4-29 17:13 | 只看该作者
怎么锁死?

使用特权

评论回复
7
gongche|  楼主 | 2017-4-29 17:21 | 只看该作者
用芯片的ID码?

使用特权

评论回复
8
happy_10| | 2017-4-29 17:22 | 只看该作者
是的。

使用特权

评论回复
9
gongche|  楼主 | 2017-4-29 17:23 | 只看该作者
能不能简单介绍下?
如果使用芯片ID码,针对每一片是不是都要进行设置?

使用特权

评论回复
10
bqyj| | 2017-4-29 17:24 | 只看该作者
是的。每一片都得设置。

使用特权

评论回复
11
gongche|  楼主 | 2017-4-29 17:31 | 只看该作者
如果是量产的话,那写程序也太麻烦了

使用特权

评论回复
12
wenfen| | 2017-4-29 17:33 | 只看该作者
那就坐等程序被盗吧。这样人家**也不费力。

使用特权

评论回复
13
zhuhuis| | 2017-4-29 17:41 | 只看该作者
FLASH_OB_EnableWRP(OB_WRP_AllPages); 这是写保护,怎么去除写保护呢?

使用特权

评论回复
14
tian111| | 2017-4-29 17:43 | 只看该作者
读保护,写保护,可以加,但在程序中自己怎样去掉读保护,写保护?

使用特权

评论回复
15
songqian17| | 2017-4-29 17:55 | 只看该作者

能不能简单介绍下?
如果使用芯片ID码,针对每一片是不是都要进行设置?

使用特权

评论回复
16
chenho| | 2017-4-29 17:56 | 只看该作者
ID加密,先写一段小程序将ID读出通过自定义加密后写入FLASH尾部的固定地址内。正式程序下载后先读取加密ID码,并解密后比较当前芯片的ID码是否一致,不一致就进入死循环或无限复位。

使用特权

评论回复
17
huwr| | 2017-4-29 17:57 | 只看该作者
这种方法基本没用。
把程序读出来,然后用IDA分析一下,很快可以定位到你的判断语句。修改一下直接就跳过了。加减密算法再高级也没用。

使用特权

评论回复
18
gongche|  楼主 | 2017-4-29 17:58 | 只看该作者
好的,我明天去单位试一下,多谢各位大侠了哈,结贴了先

使用特权

评论回复
19
ATLAS_chen| | 2017-5-4 09:46 | 只看该作者
用STLINK Utility 很方便设置

使用特权

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

768

主题

9410

帖子

2

粉丝