专利名称:一种防止单片机程序被解密再利用的方法
技术领域:
本发明涉及一种防止单片机程序被解密再利用的方法,属于电子技术领域。
背景技术:
单片机(MCU)芯片内部存放用户程序(PROGRAM MEMORY)和工作数据(DATA MEMORY)。为了防止非法的未经受权访问或者拷贝单片机的机内程序,多数单片机都带有加密位(加密字节),用以保护片内程序。如果在编程时加密位被使能(ENABLE),就无法用编程器读取芯片内的程序,这就是单片机(芯片)加密。单片机解密者就需要专用设备,利用单片机芯片设计上的漏洞和缺陷,通过多种技术手段,以从芯片中获取单片机内程序这就叫单片机(芯片)解密。单片机的程序解密是一个普遍存在的现象,目前市面出售的芯片在技术上还不能从根本上防止程序被解密,但如果加大解密后再次用编程器写单片机(OTP —次型或者 FLASH反复多次烧写型)后的使用成本则是从另外一个方面防止程序被解密复制的手段。一个成熟的电子产品开发,从构思到设计,最后测试功能,需要很大的成本投入。 为了防止产品被抄袭,如果从硬件线路上动脑筋加各种防止仿造元件就会增加产品成本。 而软件部分在烧写好芯片后,有加密功能,可以做到程序不会被轻易读出来。但要做到绝对使产品的软件不被读出还是很难的,这样通常是选解密难度比较大的单片机芯片去设计程序,此类芯片的价格相对高,这也就会增加企业的生产成本。另外作为芯片的生产厂家,也是希望出厂的芯片加密功能好,程序不会被解密,从芯片的设计,生产工艺上化很大精力和成本去提高防解密性能,这样才会使芯片有更多的用户使用。
发明内容
本发明的目的是提供一种防止单片机程序被解密再利用的方法。它可以在单片机内的用户程序被他人解密后,再写入其它同型号的芯片后不能正常运行,从而达到防抄袭的作用。本发明的目的可通过下列技术方案来实现一种防止单片机程序被解密再利用的方法,其特征在于通过在固定型号的每个单片机芯片上设置区别特征,使用户程序跟区别特征相对应,从而当用户程序被解密到另一块单片机时,由于程序与该单片机的区别特征不对应而不能正常运行,从而使的对芯片内用户程序的解密失去意义,最终做到防止芯片内程序被解密的目的。前述的防止单片机程序被解密再利用的方法中,通过在出厂的每块单片机的芯片内一处或多处设置作为区别的特征值[可以是顺序数据,比如从0001H,0002H···—直到 3FFFH (以48R06A为例,每个地址可以写的最大数据是3FFFH),再从000IH…循环,也可以是随机数],用户在对单片机写入用户程序时,利用特征值进行编码,使得在芯片内的程序被他人解密写入其它芯片后,程序无法正常运行,从而可防止程序被解密后再利用。前述的防止单片机程序被解密再利用的方法中,所述利用特征值进行编码的方法为用户使用编程器从地址a获取单片机芯片内特征值,对特征值进行一个用户自定义的算法运算后,将运算结果写入一个用户自定义的地址b内;并在用户程序中也引入对地址a上的数据使用相同的算法进行运算,如果运算结果和从地址b内获取的数据不一致, 则用户程序不能正常运行。由于对用户程序解密后,抄袭者是不知道这个算法以及运算结果需要写入的地址的。这样就很可靠的保护了编程者的程序不会因被解密而再次使用了。前述的防止单片机程序被解密再利用的方法中,所述地址a包括一个或多个地址;所述地址b包括一个或多个地址。多个地址a存储多个特征值,运算结果存入多个地址 b,并且存入多个b地址的运算方法也可以是不同的,大大增加抄袭者重新利用解密的用户程序的难度。前述的防止单片机程序被解密再利用的方法中,所述作为区别的特征值设在单片机芯片内不可被擦除的地址区域内。对可电擦除的可反复多次烧写型的芯片(FLASH),这个防止解密程序使用的数据可在程序区不被擦除的地址或者在程序区以外了,也可以同时在程序区和其它区块(因在编程器写入芯片程序时,会进行全部程序区的擦除操作的),比如在参数配置区 (C0NFI⑶RATION区),这个区是放一些芯片的配置参数的,象芯片是晶振还是RC振荡,看门狗的开和关,加密位的加密功能使能(ENABLE)等等。对一次型(OTP)芯片可以把这防止解密程序使用的数据写在程序区或者其它区块,也可以同时在程序区和其它区块。其中OTP 艮口 One—Time Programmab1eMemory ;FLASH 才旨 FLASH memory mu11i-prοgrammab1e Memory, 即反复多次烧写型。与现有技术相比,本发明既不是从源头上去控制程序(软件)的解密,而是从程序的使用上入手,防止解密后的程序被再次使用。从终端制止了解密者使用解密得到的程序 (软件)的目的,反过来使的解密失去意义。因为对一些常用的芯片,现在的解密的费用非常低廉,通常在几百元就可以被解密了。这样相对于原始的开发者来说就没法保护自己的工作成果。还有很多情况时,抄袭者可以不必搞懂仿制产品的工作原理,直接从硬件和软件 (解密)生产,成本更低。因此使用本发明的方法,只有在解密者弄懂该单片机的全部程序的前提下,才有可能再次使用解密后的程序。而要弄懂该单片机的全部程序,成本就相对高许多。本发明通过在单片机出厂前简单地在芯片内写入特征值,使同型号的单片机也具有了区别,利用这些区别便可使用户的程序只针对某个特征值的芯片才能使用。有通过加入一定的算法和,存储地址的随机选择,增加了抄袭者重新利用用户程序的难度,增加了抄袭成本,从而从侧面防止了用户程序被抄袭。
具体实施例方式一种防止单片机程序被解密再利用的方法,其特征在于通过在固定型号的每个单片机芯片上设置区别特征,使用户程序跟区别特征相对应,从而当用户程序被解密到另一块单片机时,由于程序与该单片机的区别特征不对应而不能正常运行,从而使的对芯片内用户程序的解密失去意义,最终做到防止芯片内程序被解密的目的。通过在出厂的每块单片机的芯片内一处或多处设置作为区别的特征值,用户在对单片机写入用户程序时,利用特征值进行编码,使得在芯片内的程序被他人解密写入其它芯片后,程序无法正常运行,
4从而可防止程序被解密后再利用。所述利用特征值进行编码的方法为用户使用编程器从地址a获取单片机芯片内特征值,对特征值进行一个用户自定义的算法运算后,将运算结果写入一个用户自定义的地址b内;并在用户程序中也引入对地址a上的数据使用相同的算法进行运算,如果运算结果和从地址b内获取的数据不一致, 则用户程序不能正常运行。所述地址a包括一个或多个地址;所述地址b包括一个或多个地址,并且存入多个b地址的运算方法也可以是不同的。所述作为区别的特征值设在单片机芯片内不可被擦除的地址区域内。以一次性可编程的(OTP)芯片48R06A为例,程序区是IK的空间,即从地址000H 到3FHL现在芯片出厂时,从地址000H到3FFH(1KPR0GRAM MEMORY)全部是空白的,既数据为0000H(有些单片机是FFFHl作为空白的)。例如在芯片出厂时,在地址3FH1写一个数据(既特征值,可以是顺序数据,比如从0001H,0002H…一直到3FFFH(48R06A每个地址可以写的最大数据),再从0001H···循环,也可以是随机数,即只要是不同的数据,每次对每片芯片写这样的一个数据,因为0000H就是原来的空白,这里就排除了)。如果芯片的地址 3FFH中的数据是1234H,这样解密后的程序代码如果再次使用,写入新的单片机芯片,而这个芯片的地址3FH1中的数据不是1234H的话,程序就不能正常工作。想购买到这样的芯片的概率为1/16383 (3FFFH = 16383),如果在多处地址写数据的话,如地址3FEH和3FFH同时在芯片出厂时对每片写入不同的数据,这样想得到有相同芯片数据的概率更低了。假设对数据的运算为异或0(0R)0A5AH,结果保存在地址03E0H,这样在单片机芯片写入程序时,编程器运算读出3FH1地址的数据12;34H,与0A5AH作异或,1234H XOR 0A5AH得到186EH,由编程器把运算的数据要写到地址03E0H的数据为186EH。用户程序在解密后写入一块3FFH 地址的数据为0987H的单片机,在用户程序运行时进行相同的运算读出3FH1地址的数据 0987H,与0A5AH作异或,0987H XOR 0A5AH得到03DDH,由编程器写单片机芯片时,使用解密程序者,一不知道是要做与0A5AH作异或,二 不知道运算的数据要写到哪个地址,而地址 03E0H被解密的结果186EH。但芯片程序中正确的结果判断是03DDH才能匹配。因此就不能正常运行。
权利要求
1.一种防止单片机程序被解密再利用的方法,其特征在于通过在固定型号的每个单片机芯片上设置区别特征,使用户程序跟区别特征相对应,从而当用户程序被解密到另一块单片机时,由于程序与该单片机的区别特征不对应而不能正常运行,从而使的对芯片内用户程序的解密失去意义,最终做到防止芯片内程序被解密的目的。
2.根据权利要求1所述的防止单片机程序被解密再利用的方法,其特征在于通过在出厂的每块单片机的芯片内一处或多处设置作为区别的特征值,用户在对单片机写入用户程序时,利用特征值进行编码,使得在芯片内的程序被他人解密写入其它芯片后,程序无法正常运行,从而可防止程序被解密后再利用。
3.根据权利要求2所述的防止单片机程序被解密再利用的方法,其特征在于,所述利用特征值进行编码的方法为用户使用编程器从地址a获取单片机芯片内特征值,对特征值进行一个用户自定义的算法运算后,将运算结果写入一个用户自定义的地址b内;并在用户程序中也引入对地址 a上的数据使用相同的算法进行运算,如果运算结果和从地址b内获取的数据不一致,则用户程序不能正常运行。
4.根据权利要求3所述的防止单片机程序被解密再利用的方法,其特征在于所述地址a包括一个或多个地址;所述地址b包括一个或多个地址。
5.根据权利要求2、3或4所述的防止单片机程序被解密再利用的方法,其特征在于所述作为区别的特征值设在单片机芯片内不可被擦除的地址区域内。
全文摘要
本发明公开了一种防止单片机程序被解密再利用的方法,其特征在于通过在固定型号的每个单片机芯片上设置区别特征,使用户程序跟区别特征相对应,从而当用户程序被解密到另一块单片机时,由于程序与该单片机的区别特征不对应而不能正常运行,从而使的对芯片内用户程序的解密失去意义,最终做到防止芯片内程序被解密的目的。
文档编号G06F21/22GK102163269SQ201110083729
公开日2011年8月24日 申请日期2011年4月2日 优先权日2011年4月2日
发明者刘俊 申请人:刘俊