你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32防破解

[复制链接]
人生如梦123 发布时间:2015-9-28 22:12
本人之前是做软加密解的,后来良心发现,自觉做我们这行窃取他人劳动成果,和做贼没有区别,所以果断转行了,首选声明我绝不是高手,只是想将我做破解的时候的一些经验和大家分享,以便各位兄弟在做产品的时候重视加密,不要让别人轻而易举就窃取了您的劳动成果,
       STM32系列从问世以来就以优异的性能和便宜的价格深得人心,但是不幸的是树大招风,问世不就久就被解密公司破了,从12年的12万的解密价格,到13年的6万,14年一万,再到现在的五千,相信不用两年就会像51一样沦为几百块的白菜价,所以软加密对未来的STM32的工程师来说异常重要,以下正式对各种方式的软加密和破解方法做一个总结,以便各位朋友在日后设计软加密的时候不要给破解的人留下漏洞
1.最简单的软加密不用反汇编,直接在机器码中就可以先到FF1FE8F7,因为STM32机器码是小端格式,这个地址实际就是芯片ID地址,破解的人只需要在程序中找到一块空白的位置,然后将解密的那个芯片的ID复制到这里,再将程序中出现的那个1FFFF7E8改为存放母片的那个ID就破解了,这种方法和你程序采用的什么算法加密毫无关系,防破解处理方法是在程序加密的时候不要直接读芯片ID,应采用几个变量运算合成ID地址再间接的去读,注意不能用立即数合成,因为那样编译器还是会给你优化成一个立即数的。
2.就算在程序中找不到明显的读ID指令也是可以破解的,方法就是仿真跟踪,仿真跟踪前需要反汇编,THUMB2的文档中每条指令生成的机器码有详细的说明,随便都可以找个做上位机的写个自动反汇编工具,之后再人工修改下就可以了,其实还有一种更简单的方法,就是将机器码定义成DCI XXXXH这样的格式,导入KEIL编译能通过,然后仿真,KEIL会自动的帮你反汇编,接下来就是单步执行,延时类函数跳过,这时候要密切注视R0到R15,不管你用什么方法得到的ID地址,最终一定会出现再这几个寄存器中,防破解的方法一个是检验ID号的时候不要在开机就检验,要在特定的硬件条件下才检验ID,然后如果不合法程序就自毁,这样就只能通过JTAG硬件仿真了。所以产品上市的时候切记将其它IO口转到JTAG口,这样就占用了JTAG,仿真就不行了
3.是不是这样就安全了?不是的,你可以禁用JTAG,人家同样可以修改指令开启JTAG,最好的方式是在程序关键的代码块做CRC检验,这样只要关键指令被修改过,就可以发现,剩下的自己看着办……
4.其实没有破不了的软加密,只是一个时间和成本的问题,但是也不能让人家那么轻易的就破解了,除了上面的防破解的方法之外还可以在程序中特定条件下做多次检验,检验的时候不要用简单的判断真假跳转,应该用检验的结果做程序下一步执行的参数,这样别人破出来的产品原以为没问题了,但是用起来不稳定,或者性能差,或者老死机等。除了这些还可以外挂加密芯片,以增加破解的成本,更多防破解的方法欢迎加我QQ254915501讨论
收藏 3 评论8 发布时间:2015-9-28 22:12

举报

8个回答
mark0668 回答时间:2015-9-29 02:01:39
哇,内部资料都公开了,正需要这方面的知识说的太好了。拍掌
wyxy163@126.com 回答时间:2015-9-29 07:56:16
提示: 作者被禁止或删除 内容自动屏蔽
JackieLaura 回答时间:2015-9-29 08:58:05
不错的防破解资料
stmcu.org.png
JackieLaura 回答时间:2015-9-29 08:58:30
收藏了。。。
stmcu.org.png
Paderboy 回答时间:2015-9-29 18:10:38
多谢分享。。。。赞一个
meifan119 回答时间:2018-10-25 16:00:17
提供单片机id加密安全性测试,加密芯片应用服务
id加密是比较好的程序加密方式,但有些开发人员做软加密过程太简单了,
破解软加密难度非常低,提供id加密安全性测试。各种id加密方式咨询,QQ:9272078
g2004-148848 回答时间:2018-11-6 02:34:39
楼主高见,谢谢分享
meifan119 回答时间:2020-9-9 11:05:13
1、读出完整程序段,搜索关键字节“E8F7FF 1F”,因为STM32唯一
的96位(12字节) ID基地址位于0x1FFF7E8, 若程序段中涉及ID
校验必然会读取芯片中ID索引该地址。。
2、用工具读取此芯片该地址的96位(12字节) ID 码,找到空片区
写入此地址,更改索引地址:例如此芯片ID码为“34 FF DA 05 4E50 38
31 19 65 18 43”选取起始地址区域0x80000020,在前四个字节输入"34
FF 1843",后12字节输入“34 FF DA 05 4E 50 38 31 19 65 18 43”,芯片
中索引的“E8F7FF1F” 均改成“20000008”
程序里面不要直接出现id地址,1FFFF7E8 1FFFF7EC 1FFFF7F0,不然很容易被破解

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版