科研成果保护是每一个科研人员最关心的事情,目的是不使自己的辛苦劳动付之东流。单片机程序加密方法有软件加密,硬件加密,软硬件综合加密,时间加密,错误引导加密,专利保护等措施。下面介绍几种常用的加密方法:
一、单片机程序软件加密现先讲一个软件加密:利用MCS-51中A5指令加密,其实世界上所有资料,包括英文资料都没有讲这条指令, 但事实是这是一条很好的加密指令。A5功能是二字节空操作指令。加密方法在A5后加一个二字节或三字节操作码,因为所有反汇编软件都不会反汇编A5指令,造成正常程序反汇编乱套,执行程序无问题。仿制者就不能改变你的源程序,你可在程序区写上你的大名、单位、开发时间及仿制必究的说法,以备获得法律保护。8031/8052单片机就是8031/8052掩模产品中的不合格产品,内部有ROM,可以把8031/8052当8751/8752来用,再扩展外部程序器,然后调用8031内部子程序。当然你所选的同批8031芯片的首地址及所需用的中断入口均应转到外部程序区。二、单片机程序硬件加密
硬件加密:使他人不能读你的程序
①用高电压或激光烧断某条引脚,使其读不到内部程序。此法固然是好,不过用高电压会造成一些器件损坏。
②重要RAM数据采用电池(大电容,街机采用的办法)保护,拔出芯片数据失去。机器不能起动,或能初始化,但不能运行。
用真真假假方法加密:
擦除芯片标识。
把8X52单片机,标成8X51单片机,并用到后128B的RAM等方法,把AT90S8252当AT89C52,初始化后程序段中并用到EEPROM内容, 此法不用多说了,自己可以继续联想的。
用激光(或丝印)打上其它标识。如有的单片机引脚兼容,有的又不是同一种单片机,可张冠李戴,只能意会了,这要求你知识面广一点。
用最新出厂编号的单片机,如2000年后的AT89C就难解密,或新的单片机品种,如AVR单片机。
DIP封装改成PLCC,TQFP,SOIC,BGA等封装。
如果量大可以做定制ASIC,或软封装。
用不需外晶振的单片机工作(如AVR单片机中的AT90S1200)。
使用更复杂的单片FPGA+AVR+SRAM=AT40K系列。三、二者相辅相成硬件加密与软件加密只是为叙说方便而分开来讲,其实它们是分不开的,互相支撑,互相依存的。
软件加密:其目的是不让人读懂你的程序,不能修改程序,你可以利用单片机未公开,未被利用的标志位或单元,作为软件标志位,如8031/8051有一个用户标志位,PSW.1位,是可以利用的。
程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址处加二字节或三字节操作码。
在无程序的空单元也加上程序机器码,最好要加巧妙一点。
用大容量芯片,用市场上仿真器不能仿真的芯片,如内部程序为64KB或大于64KB的器件,如:AVR单片机中ATmega103的Flash程序存储器为128KB。
AT89S8252/AT89S53中有EEPROM,关键数据存放在EEPROM中,或程序初始化时把密码写到EEPROM中,程序执行时再查密码正确与否,然后.......。当然不能告说人家这是什么器件,尽量不让人家读懂程序,在这里说谎,骗人是正当防卫。
用“真真假假,假假真真” ,把几种不同品种的单片机放在同一设备中,如主芯片用AVR(说是MCS51),键盘显示用AT89C2051(说是GAL),I/O口扩展驱动用PIC(说是AT90S1200)等,当然要求你知识面广一点。如果你用高级语言C编写程序就简单了,因为C语言程序移植方便。
有些国家的产品能做到三年保修,三年保不坏,三年后保坏,或三年后保有故障,可能用什么技术?你自己去想吧。例:每次开机或关机, EEPROM某单元加1,也可二个、三个单元连接起来计数,达到某值停止工作。
硬件用软件代替,软件用硬件代替。用大规模CPLD可编程器件。