数码之家

 找回密码
 立即注册
搜索
查看: 718|回复: 13

[C51] 爆料!如何给STC单片机加密?破解者又是如何破解的?

[复制链接]
发表于 2024-2-10 22:22:00 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
知己知彼百战百胜,首先科普一下破解流程:
首先是开盖,使用激光打标机去除封装,激光打标机是光纤增益介质泵浦模块内部808nm的大功率半导体激光二极管阵列经过光纤增益介质泵浦输出1064nm激光再经过聚焦振镜场镜实现激光雕刻的,芯片表面的字符也是这种机器加工的,开盖是反复执行这个过程,直到去除die上方的所有封装露出die,然后是去除各种层,二氧化硅层金属层钝化层聚酰亚层等等,直到露出FLASH存储器,然后是码点染色,因为晶体管在光学显微镜下都是透明的,用离子染料给存储数据带有电荷的浮栅染色,然后是显微拍照拼接,根据图像上不同颜色代表0或1的码点颜色得到原始bin文件,而芯片是全程不需要通电的,这也是做芯片失效分析的流程,只不过做芯片失效分析时更关注的是哪里有意外的短路开路等等。
大家想方设法不让别人知道单片机型号的做法在他们眼里都是雕虫小技,据本人卧底刺探情报所知,STC8H8K64U解密价格8500元,敌方称技术很熟练。
那么如何打赢这场没有硝烟的战争呢?首先要说的是,没有绝对破解不了的,只是成本不同而已,一般破解成本大于研发成本就可以视为加密成功。
下策:
首先是大家熟知的打磨丝印(准确来讲不应该叫丝印,丝印工艺是把芯片放在专用治具上用油墨丝网印刷的,就是PCB字符的工艺,现在芯片上很少用了,都是激光雕刻了,也叫镭雕,但我不喜欢这个词,因为这个词是根据laser这个英文单词音译的,中文解释不通,就像麦克风应该叫话筒一样,讲中国话),虽然这对大佬几乎是没用的,破解的根据脚位一眼就能看出来是不是STC,基本上看VCC和GND就可以知道是不是了,然后连上STCISP点一下检测MCU选项,就可以知道型号了,但是菜鸟中的菜鸟,你把文字磨掉了,他就猜不到了,对大佬来说也能拖延一下时间,能增加点成本是一点对吧,但是挨个打磨的时间成本是单个的时间乘以个数,毕竟量产的PCBA都是相同的,破解者根据一块PCBA就可以得到型号,挨个打磨的成本是远大于对应的破解成本的,毫无战损比,不可取,但量大可以找原厂定制无字芯片,量少只能看看对应型号有没有其他大客户定制后剩的,还有就是用黑色环氧树脂灌封,环氧树脂是高分子预聚物,固化后分子间形成交联键高度不熔不溶,除非用能打破交联键的物质比如发烟硝酸来溶解,环氧树脂也不是相同的,双组份一个带有环氧基另一个带有胺基,环氧基一般是石油醚类物质,胺基有乙二胺和异佛尔酮二胺等等,按摩尔浓度配比,还可以加改性剂比如塑化剂和增韧剂等,还有各种填料,掺在里面降低成本的,此类内容和本文主题不符就不过多赘述了,说重点,环氧树脂除了特殊化学物质一般只能以机械方法去除,影响强度的因素主要是配比不当,填料沉淀导致密度不均匀,还有就是填料的化学性质问题,劣质环氧有用碳酸钙做填料的,化学方法很容易溶解掉,改用二氧化硅(就是玻璃粉末)能大幅增强耐化学溶解的性能,还可以往里加砸碎的报废芯片以降低成本,芯片本身也是环氧树脂,化学性质和强度都相当强,破解者就算硬抠,抠到芯片碎片也不敢再抠了,怕电路被破坏了,让破解者边抠边骂人,这种方法可以把整个PCBA都封起来,也能保护除单片机外的其他电路,但是需要有外壳,成本、散热条件、机械结构等因素允许的情况下可以考虑。
中策:
到这里就是应对一般的破解者了,要假设他们已经得到了芯片型号,PCB都打磨扫描完了,原理图也反推出来了,准备抄板了,这个时候就要保证破解者就算是花点钱得到了原始bin也不能工作,这个时候就需要确保芯片内的程序,换个单片机写进去不工作,这就需要利用芯片与芯片之间的不同之处来实现了,相信大家已经想到了,这就是STC单片机的全球唯一ID,在程序中验证这个ID,不正确不工作,就可以了,注意不要用软件方式,比如修改CODE或EEPROM,不绑定硬件的纯软件方式是可以被全套复制走的,STCISP的自动增量只适合给单片机增加序列号,不要用于加密,也不要用CODE区或RAM区或EEPROM区的全球唯一ID,因为这些都是可以被修改的,CODE区可以直接修改bin写入,RAM区或EEPROM区破解者可以在程序后面增加一段初始化这些区域的程序,然后在程序开头LJMP到程序后面初始化全球全球唯一ID的程序中初始化RAM区或EEPROM区的全球全球唯一ID,然后再LJMP回来,对于破解者在程序后面空白区域插入修改程序来修改RAM区或EEPROM区,可以在CODE区空白区域手动填满随机数,并预留一个校验和位置,计算整个CODE区除了校验和位置的校验和,连程序带随机数全部校验,然后在程序中校验整个FLASH并和指定位置的校验和比对,让CODE区填的满满的,破解者动一个bit都无法工作,但这种方法会增加程序下载时间,因为是全片下载的,回到正题,前文提到的填满随机数并校验的方法,是没有只读SFR全球唯一ID的老型号可以使用的(不推荐),STC单片机的全球唯一ID强烈建议使用只读SFR中的,因为这是用户程序无法修改的,其实STCISP已经有这个功能了,就是ID号加密,ID运算后写入到指定位置,程序中再以相同算法计算一遍,这样程序和硬件就绑定了,而且都由STCISP自动完成,不需要手动操作,这样破解成本能加一位数,参考破解成本十万元,也就是研发成本在十万元以内的做到这里就够了,如果有人问,如果上述的方法,加密算法被破解了怎么办,还能不能让破解成本再高点,当然可以,我就自己写个超级复杂的加密算法,先下载加密程序A,选择下次下载不擦除EEPROM,加密程序A会在EEPROM中写入密钥,并在串口输出另一个密钥,在串口助手手动复制这段密钥后,在用户程序B的bin文件手动填入这个密钥,下载程序B,选择下次下载擦除EEPROM,这样EEPROM和CODE就都有密钥了,设置用户口令,空白区域填满随机数并校验,能用的加密方式都用上,但这种方法非常繁琐,不适用于量产,如果单价高不量产,还可以记录每个产品的ID和密钥,绑定购买者的身份,这样如果发现市面上有仿制品,也能知道是谁拿去破解的,还有注意校验密钥不能就一个函数一个if就完了,否则找到位置DJNZ改JNZ或JNZ改DJNZ就轻松跳过(见过破解exe程序是这样的,结果是注册码不正确正常工作,注册码正确反而不工作),如果程序空闲时间比较充足的话,可以复制一大堆类似功能的函数,反复读密钥反复校验CODE和EEPROM,注意别让编译器优化掉,再插入一大堆假的读密钥程序,读密钥后调用math.h进行浮点运算,真真假假,假假真真,这样破解者就算反汇编,一个函数进去都出不来,绕死他,大量消耗破解者的反汇编工时,此时加密程序已经占到全部程序的一半以上了,加密程序比真正干活的程序都多,哈哈,这样破解成本能再加一位数,参考破解成本百万元,别急,还能让破解成本再加个零,那就是多机通信,还是异构的,x51、x86、ARM、RISC全用上,FLASH型EEPROM型OTP型全用上,MCU、SOC、DSP、GPU、NPU、CPLD、FPGA全都用上,一大堆芯片一起工作,破解每个都是上述的难度,芯片间加密通信,密钥随机数掺杂,真真假假,假假真真,再想个办法联网,设备连接到你的服务器才能正常工作,这样破解成本能再上一个数量级,参考破解成本千万元,相信此时破解者已经欲哭无泪了,但还没完,如何让破解成本过亿呢?
上策:
假设破解者铁了心要破解,豪掷一千万,就是要破解,怎么办?看了姚**发的帖真是令人拍案叫绝,他有钱就让他破嘛,你留个后门,先假装正常工作,让破解者感觉破解成功了,借钱仿制,一段时间后等他量产销售了再异常工作,此方法需要你是个从业多年的大佬,懂电子产品的量产销售制造成本产能利润生命周期加密解密程序算法等等,精心设计好在什么时间以何种概率如何异常工作,还是时好时坏伪装成其他难以复现的故障,尽量使仿制者损失最大化,让仿制者倾家荡产,赔他一个亿!
总结:
后面都是些超现实内容了,大家就当讲个故事看个乐呵,综上所述,性价比最高的方法就是STCISP的ID号加密,用只读SFR中的全球唯一ID。

发表于 2024-2-11 18:00:51 来自手机浏览器 | 显示全部楼层
我觉得既然都被反汇编了就没什么破不了,因为被反汇编之后已经变成机器语言就没有秘密了。所有解密算法和程序流程都被反汇编出来,直接删掉加密解密的重新改写一套功能就可以了。
回复 支持 反对

使用道具 举报

发表于 2024-2-11 20:58:59 | 显示全部楼层
还是要区分硬件及软件解密额目的是什么,解密结果估计比开发成本还要高
回复 支持 1 反对 0

使用道具 举报

发表于 2024-2-12 09:10:20 | 显示全部楼层
破解的成本超高,比根据需要请工程师开发一个(甚至可以实现更多更好的功能)要多得多,除非国J机密级的高端技术才可以尝试这样投资。
回复 支持 反对

使用道具 举报

发表于 2024-2-16 08:41:42 来自手机浏览器 | 显示全部楼层
xiaohui888 发表于 2024-2-11 18:00
我觉得既然都被反汇编了就没什么破不了,因为被反汇编之后已经变成机器语言就没有秘密了。所有解密算法和程 ...

照你这么说,直接反编译windows系统,改一下,去掉不需要的,加上需要的,打造自己的系统,指日可待
回复 支持 反对

使用道具 举报

发表于 2024-2-16 09:06:06 来自手机浏览器 | 显示全部楼层
lxd7343 发表于 2024-2-16 08:41
照你这么说,直接反编译windows系统,改一下,去掉不需要的,加上需要的,打造自己的系统,指日可待 ...

是的,原理就是这样,破解版的系统就是反汇编然后把验证的程序删除掉。
回复 支持 反对

使用道具 举报

发表于 2024-2-16 10:03:39 | 显示全部楼层
只要破解的成本超出了收益就达到了对原创的保护.楼主说的方法有几种还真用过
回复 支持 反对

使用道具 举报

发表于 2024-2-24 11:18:52 | 显示全部楼层
也要看商品价值的吧  有些找人重写反而更便宜
回复 支持 反对

使用道具 举报

发表于 2024-2-24 21:18:05 | 显示全部楼层
这么搞感觉成本有点高呀
回复 支持 反对

使用道具 举报

发表于 2024-2-25 15:55:22 | 显示全部楼层
本帖最后由 inthsunshine 于 2024-2-25 15:59 编辑

叫人写个程序都不需要8500

加密不要局限于cpu本身,外围电路也可以采用加密芯片
回复 支持 反对

使用道具 举报

发表于 2024-2-25 20:24:54 来自手机浏览器 | 显示全部楼层
lxd7343 发表于 2024-2-16 08:41
照你这么说,直接反编译windows系统,改一下,去掉不需要的,加上需要的,打造自己的系统,指日可待 ...

确实可以,只是,工作量很大,8051单片机则不同,一来架构简单二来ROM很小,反编译分析工作量很少。
回复 支持 反对

使用道具 举报

发表于 2024-2-25 21:37:44 来自手机浏览器 | 显示全部楼层
牛,真牛,真大牛,摩拜。
回复 支持 反对

使用道具 举报

发表于 2024-2-25 23:06:28 | 显示全部楼层
lxd7343 发表于 2024-2-16 08:41
照你这么说,直接反编译windows系统,改一下,去掉不需要的,加上需要的,打造自己的系统,指日可待 ...

番茄花园,雨林木风,深度  这几个团队就是由一个人或几个人组成的,他们就把windows系统完成吃透了才删减和修改成精简系统的,但涉及版权问题,不是他们想怎么玩就能玩得了。
比如深度后来做了自己的深度LINUN系统,并且得到了国家的支持,但群众却不买单。这就涉及到生态问题。
回复 支持 反对

使用道具 举报

发表于 2024-2-26 09:51:20 | 显示全部楼层
广东梁百万 发表于 2024-2-25 23:06
番茄花园,雨林木风,深度  这几个团队就是由一个人或几个人组成的,他们就把windows系统完成吃透了才删 ...

定制系统虽然对系统有较深理解,说吃透还不至于,主要是知道window如何调用这些文件的机制,并不涉及更改或者自己写程序替换的级别
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-29 07:11 , Processed in 0.187201 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表