如标题所示,不知道在这里发这个帖子合不合适,如有不合适大家多担待,没有黑st的意思,本人单片机就是菜鸟,stm32f103也是现学现用的,开发的项目,控制类的,主要核心的还是控制算法这些,和单片机用什么型号的没啥关系,现在呢,我由于只会stm32f103啊,所以采用的是在这个芯片上写的算法,包括硬件板子平台都做好了,也调好了程序了,工作正常,但是现在问题来了,我要防止破解啊,网上搜了一下,深圳那边,1w都在说保破解,我总要保护一下自己吧,因为一直都是精力关注在控制算法这些事情,对stm32f103其实还有很多功能都不太熟悉,对防止破解也不熟悉,所以这里来问大家支招, 1.物理加密是要怎么做,我提供hex文件的时候,用下载器下载的时候,下载器里设置吗?比如在电脑上有什么musicp这类的下载软件,这种软件里面设置物理加密吗?我从来没用过,一直都是mdk写代码,jlink下载程序,这块不太懂,物理加密到底怎么做? 听别人又说代码启动的时候设置,是自己写代码设置的,主要是禁用jtag和swd口,读写锁定flash,那么这段设置代码放在哪里呢?是启动文件里面去写?还是我的程序的主程序前面呢?另外我自己的代码在运行的时候是会自己擦写flash去存一些关键数据的,这个会影响到我自己的数据存储吗?另外我不会使用isp也不打算提供软件升级,也不会写bootloader,我怎么设置了才能防止人家再往flash里面写代码?因为我感觉我自己的程序在操作中就会擦flash和存代码呢? 2.软件加密,我听说了uid,但是又得知uid深圳那边可以修改成一样的,看来是有人掌握了这个修改技术,st的uid不是真的uid,这个是我听说的,那么如果我不用软件加密,只是上面的物理加密,会给人家破解带来多大的难度?增加他多大的破解成本?真没这个精力在代码里面这里插一处陷阱,那里插一处陷阱,好烦啊,不太想弄这些,奈何中国怎么这么多技术小偷,真要命? 不知道可有大神能 一 一 解答菜鸟我的这些疑惑,不甚感激, |
三、利用id做软件加密
1,如果板子上有外部存储器,可以先编写一个程序,利用算法把id计算得到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部存储器的数据是否合法即可
2,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法把id计算得到一些值存入程序区(stm8为EE区),程序运行时去验证程序区数据是否正确
3,轩微编程器有软件加密的功能,编程器会读芯片id,根据算法直接改写缓冲区,达到软件加密的作用
4,读出的id通过一定算法,例如异或加上一个数,得到的数据存入flash(只运行一次,运行后标志位也存入flash),下次读到这个标志位,就不运行这个程序。//Q9272078
四、做软件加密时注意
1,不要在程序中直接出现id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870
2, 利用校验和或是crc对程序区进行校验,防止改程序
id加密这个你可以搜一下刘凯的视频,里面好像有讲到id加密的。但是这个是一机一密,对于你量产会造成很大的困扰的。
所谓加密,就是增加破解的难度,并非绝对的加密。。。。
可以,参考st的flash编程手册,利用flash的操作来加密。
评分
查看全部评分
id加密是比较好的程序加密方式,但有些开发人员做软加密过程太简单了,
破解软加密难度非常低,提供id加密安全性测试。各种id加密方式咨询,QQ:9272078
评分
查看全部评分
评分
查看全部评分
你是说的什么破解,COPY?