最近做产品,想出一个加密方法,而且已经在产品中实现了,现在贡献出来,与大家分享:
第一步:选择合适的加密算法
第二步:利用分散加载,将部分重要函数放到RAM中运行
第三步:将RAM中运行的函数的BIN数据提取出来,用芯片唯一ID当密钥进行加密!
第四步:将加密后的数据放在固定Flash中
第五步:将原程序中的函数用NOP进行填充
第六步:程序运行初始化的时候,将固定Flah中的数据进行解密,并拷贝到RAM中,程序完整再开始运行!
这样子破解的时候就算进行程序对比,知道那块是加密程序,由于不了解算法,也没办法!
欢迎拍砖!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
STM32通过BOOT0,和BOOT1,可以配置为从FLASH里启动和从RAM里面启动,我们正常的代码是固化在FLASH里面的,一上电也从FLASH的地址开始运行(具体FLASH地址记不清了好像是0x08000000),如果我们固化了一个产品的正常代码放到FLASH里面,这个时候别人拿我们的产品通过修改BOOT0,和BOOT1引脚的电平配置为从RAM启动,按照道理说也没有问题,因为RAM里面是空的无法启动,可怕的是这个时候他又通过JLINK烧写了一段分散加载到RAM里面的程序(编译器指定烧写了这段程序到RAM里面),然后一运行通过串口把数据就啪啦啪啦读出来了,后来我也在想应该STM32没有这么傻吧,大家有没有遇到?或者说想过?
一周热门 更多>