本发明涉及单片机程序加密,尤其涉及一种基于指令变换加密的单片机程序保护方法及系统。
背景技术:
1、现代mcu的性能和功能已经越来越强大,但是对于mcu程序的保护还停留在一个初级加密阶段,加密的手段和方法包括:
2、1.打磨或更改芯片型号丝印,这种方法可以迷惑破解者,使破解者不知从何和手,还要根根据成本来考虑是否需要打磨,这种对于一些有经验的破解者来说,可以根据芯片引脚布线和外接设备很快能猜出芯片型号,形同虚设。
3、2.使用芯片的flash保护功能,使能对应的标志位,烧录器就无法读取flash里的数据,除非全部擦除。对于这种保护破解者会采用把芯片开盖对电路做出修改,使flash或是e2prom的内容能被读出来,达到破解目的。
4、3.使用芯片提供的唯一序列号,通过各种加密算法对mcu程序进行加密,做到每个芯片的程序都不一样,防止程序被复制。即使复制了也无法使用,这种方法无法抵挡对程序的反汇编分析,通过反汇编分析可以伪造序列号来进行破解。
5、还有一些其它的方法,但都不能有效的阻止对程序进行复制,反汇编及动态调试分析。
技术实现思路
1、本发明的目的是提供一种基于指令变换加密的单片机程序保护方法及系统,以解决如何对单片机程序进行加密保护的技术问题。
2、本发明是采用以下技术方案实现的:一种基于指令变换加密的单片机程序保护方法,包括如下步骤:
3、s1:采用自定义指令集代替目标mcu指令集;
4、s2:指令翻译,形成新的自定义指令集字节码;
5、s3:执行机构对自定义指令集字节码进行译码和执行。
6、进一步的,所述自定义指令集的设计使用指令系统,所述指令系统中,操作码占用8位,操作数占用8至32位,至少可实现256种指令操作。
7、进一步的,在编写单片机程序时,采用自定义指令集代替目标mcu指令集,并对需要保护的关键代码的前后打上开始和结束标记,进行加密。
8、进一步的,若未对需要保护的代码打标记,则对整个代码进行加密。
9、进一步的,步骤s2具体包括:对mcu的程序解析,将需要保护的mcu程序代码翻译成自定义指令集字节码。
10、进一步的,mcu的一条指令会被翻译成自定义指令集不固定的一条或多条指令,以防止被静态分析,形成新的自定义指令集字节码。
11、进一步的,对需要保护的代码的前后打上开始和结束标记后,进行加密处理包括:加密引擎在代码段开始查找开始标记,找到后记录当前地址startaddr,再向后查找结束标记,找到后记录当前地址endaddr,然后计算需要加密代码的大小codelen1,将startaddr到endaddr的代码进行翻译,并统计翻译后的代码大小,如果小于codelen1则直接进行代码替换,如果大于codelen1则把endaddr后的代码向后搬移,替换原来的代码,完成加密。
12、进一步的,步骤s3具体为:执行机构运作前需要先进行初始化,在加密完成的mcu程序入口,首先加密引擎会在程序开始处增加对引擎的初始化代码,其中包括引擎使用的内存分配,栈空间的分配,加密引擎的主代码分配存储空间。
13、一种基于指令变换加密的单片机程序保护系统,包括自定义指令集模块、指令翻译模块和执行机构,其中,所述自定义指令集模块用以采用自定义指令集代替目标mcu指令集;所述指令翻译模块用以进行指令翻译,形成新的自定义指令集字节码;所述执行机构用以对自定义指令集字节码进行译码和执行。
14、本发明的有益效果在于:本发明通过指令集替换加密的mcu程序,在没有办法拿到自定义指令集信息前,对于反汇编工具而言是一堆不认识的指令,破解者没办法对mcu程序进行反汇编,大大提高单片机的程序被破解的难度,达到加密保护的目的。
1.一种基于指令变换加密的单片机程序保护方法,其特征在于,包括如下步骤:
2.如权利要求1所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,所述自定义指令集的设计使用指令系统,所述指令系统中,操作码占用8位,操作数占用8至32位,至少可实现256种指令操作。
3.如权利要求2所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,在编写单片机程序时,采用自定义指令集代替目标mcu指令集,并对需要保护的代码的前后打上开始和结束标记,进行加密。
4.如权利要求3所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,若未对需要保护的代码打标记,则对整个代码进行加密。
5.如权利要求2所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,步骤s2具体包括:对mcu的程序解析,将需要保护的mcu程序代码翻译成自定义指令集字节码。
6.如权利要求5所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,mcu的一条指令会被翻译成自定义指令集不固定的一条或多条指令,以防止被静态分析,形成新的自定义指令集字节码。
7.如权利要求2所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,对需要保护的代码的前后打上开始和结束标记后,进行加密处理包括:加密引擎在代码段开始查找开始标记,找到后记录当前地址startaddr,再向后查找结束标记,找到后记录当前地址endaddr,然后计算需要加密代码的大小codelen1,将startaddr到endaddr的代码进行翻译,并统计翻译后的代码大小,如果小于codelen1则直接进行代码替换,如果大于codelen1则把endaddr后的代码向后搬移,替换原来的代码,完成加密。
8.如权利要求7所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,步骤s3具体为:执行机构运作前需要先进行初始化,在加密完成的mcu程序入口,首先加密引擎会在程序开始处增加对引擎的初始化代码,其中包括引擎使用的内存分配,栈空间的分配,加密引擎的主代码分配存储空间。
9.一种基于指令变换加密的单片机程序保护系统,用以实现权利要求1~8任意一项所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,包括自定义指令集模块、指令翻译模块和执行机构,其中,所述自定义指令集模块用以采用自定义指令集代替目标mcu指令集;所述指令翻译模块用以进行指令翻译,形成新的自定义指令集字节码;所述执行机构用以对自定义指令集字节码进行译码和执行。