我刚刚接触单片机不久,下面讲到的方法绝对是我自己思索出来的,保证原创!
如果别人和我的思路一样,纯属巧合,也请各位大侠们别拍砖,也同时帮我分析一下这种方法可不可行!
我一直想对辛辛苦苦编写出来的单片机程序进行加密,但无从下手,大家知道,像S51、S52这类型的ISP下载的MCU,你即然可以ISP写入,
别人也很容易读取,写的程序一样被人家偷_窥无疑。我在网上搜索良久,找的方法无疑就三种:
1.使用有加密功能的单片机,但现在解密的编程器大把,很快就把你的程序偷取了。
2.把单片机的管脚烧毁,无疑这种方法最好,但是没有人提供正确的烧断步骤。为此我特地发了一个贴讨论过,都没有人知道怎么烧!
3.程序内部加密,但是你的板如果能正常运行,别人也仿照和你的板一模一样,别人也一样可以正常运行。这个方法不可行。
我自己就想,硬件烧断管脚我不会,那我就采用EEPROM(AT24C02)存储器进行加密,把加密值放入EEPROM中。
第一:
例如,我做一个4*4键盘的密码锁的电磁门锁产品。用的是AT24C02来存储用户的设置密码,假设地址1和地址2用来存放用户设置的密码,而地址10
和地址11、地址12用来存放我的加密值。我只要在程序中判断:地址10+地址11=地址12,那么条件成立,程序正常运行。否则就是盗版的,
我会让程序在24小时后陷入死循环锁坏,让用户开不了门,非得破门而入,让用户去投诉盗版公司,让他们的生意做不成。呵呵,想到这里我就想笑。
(注;加密值是我事先写入EEPROM中,并不会在产品程序中写入,这样的话,盗版的人就不知道我有加密过,给他们认为这是一个无加密的产品)
第二:
第二个产品就是烘烤箱,例如烘烤各类果实的果干。使用的是AT89S52和AT24C02和DS18B20,我的加密值同样也放在EEPROM中,大家知道,每个18B20
都独有一个序列号,我也把这相序列号存入EEPEOM中,在程序中也做相应的对应关系,能对应上就可以正常运行程序,否则就让程序在10分钟后拼命的
加热烧烤,烧死它,而让数码管显示的温度值是一个非常正常的数值。呵呵,想到这里我就会偷偷的笑!
第三:
我不会用平常的P0、P1口去驱动数码管,而是从P0-P3四个I/O口中任意取几个脚,只要凑够8个脚就行了,同理,键盘输入也是这样取管脚。
然后我用0.5平方的细漆包线进行连接管脚和元件,再用农机胶把这些细小的漆包线和整个AT89S52全部封住,让别人不知道这些管脚到底接的是哪个
元件,如果他们拆除农机胶进行查看,呵呵,因为农机胶很硬,拆不出就算拆出来,也会同时把漆包线弄断,更不可能知道管脚和元件的连接关系。
以上是我想到的加密方法,不知可不可行,请大家发表一下意见,如何才能做得更好。
(很遗憾的是我还掌握不到怎么烧断AT89S52管脚的方法,如果大家有这方面的经验,贴出来让大家分享一下好吗!)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
:
呵呵,烧管脚和细线连接硬胶封装的点子我也曾自己产生过。
-----------------------------------------------------------------------
唉,真郁闷,这都让你比我想到先了
第一: 。。。。。。
------------------------------------------------------
连你的24c02一起复制,这个很简单
第二: 。。。。。
-----------------------------------------------------------------------
同上,再用一个单片机模拟18B20
第三:。。。。。。
---------------------------------------------------------
换不同的端口驱动并不能增加解密难度,同时也是给自己找麻烦,用农机胶不方便量产
谢谢4楼的分析,我是这样想的:
第一项,因为程序一开始运行时是正常的,并没有锁死,盗版者复制程序肯定会运行一下,他发现可以正常运行,并不会详细的去分析代码,只要能用就行了,他会认为24C02只是一个变通的存储数据的东西而已,因此不大可能连24C02都一起复制。
第二项,因为18B20具有全世界唯一的序列号,盗版者只是盗走了程序,如果他使用另一个18B20时,因为序列号对应不上,过了一段时间,程序会作出判断,转而去执行破坏代码。至于你说的再用一个单片机模拟18B20,好像是不可行的吧?你如果模拟了,那温度由谁来感应啊?
第三项,盗版者如果能修改端口驱动,说明他的汇编水平非常高,这么一个高手为什么不去写一个比我强N倍的程序,反而来盗我的版权呢?再说了,我只是不想一下子被人盗走,如果单片机水平分为高中低三个阶段的话,高者肯定会复杂的汇编分析编写能力,这样的人为数不多;中级者只会一般的汇编编写及C语言的高级应用,这样的人有一定数量但也不是很多;低级者就是一大群像我这样写不出来只会东抄抄西抄抄,拿来就用的初学者,他们的能力只会简单的仿照,盗版,不会自己冥思苦想写程序。呵呵,我主要是防那些中级和低级的盗版者。
第二条没看清楚,原来18b20的序列号也是存eeprom,那更简单了,你存我也存
-----------------------------------------------------------------------
谢谢6楼的提醒,可能是你没理解清楚,我再说一下我的思路:
因为18B20具有全世界唯一的序列号,我事先把序列号存放在24C02中,在程序中会判断序列号是否对应得上。
因为盗版者使用了另一只18B20,它的序列号是对不上24C02中的数据的,因此,就算盗版者复制了24C02也没用,因为序列号对不上,所以程序过一段时间会不运行的。这样就可以防止盗版。做这样的产品,事先都要把每一个18B20的序列号读出并写入到24C02中,所以每个产品只能是一个18B20和对应的24C02一起运行,换了一个元件,程序是不能正常运行的。
一周热门 更多>