一种基于指令变换加密的单片机程序保护方法及系统技术方案

技术编号:37619222 阅读:8 留言:0更新日期:2023-05-18 12:10
本发明专利技术公开了一种基于指令变换加密的单片机程序保护方法及系统,属于单片机程序加密技术领域,该方法包括如下步骤:S1:采用自定义指令集代替目标MCU指令集;S2:指令翻译,形成新的自定义指令集字节码;S3:执行机构对自定义指令集字节码进行译码和执行。本发明专利技术通过指令集替换加密的MCU程序,在没有办法拿到自定义指令集信息前,对于反汇编工具而言是一堆不认识的指令,破解者没办法对MCU程序进行反汇编,大大提高单片机的程序被破解的难度,达到加密保护的目的。加密保护的目的。加密保护的目的。

【技术实现步骤摘要】
一种基于指令变换加密的单片机程序保护方法及系统


[0001]本专利技术涉及单片机程序加密
,尤其涉及一种基于指令变换加密的单片机程序保护方法及系统。

技术介绍

[0002]现代MCU的性能和功能已经越来越强大,但是对于MCU程序的保护还停留在一个初级加密阶段,加密的手段和方法包括:1.打磨或更改芯片型号丝印,这种方法可以迷惑破解者,使破解者不知从何和手,还要根根据成本来考虑是否需要打磨,这种对于一些有经验的破解者来说,可以根据芯片引脚布线和外接设备很快能猜出芯片型号,形同虚设。
[0003]2.使用芯片的Flash保护功能,使能对应的标志位,烧录器就无法读取Flash里的数据,除非全部擦除。对于这种保护破解者会采用把芯片开盖对电路做出修改,使Flash或是E2PROM的内容能被读出来,达到破解目的。
[0004]3.使用芯片提供的唯一序列号,通过各种加密算法对MCU程序进行加密,做到每个芯片的程序都不一样,防止程序被复制。即使复制了也无法使用,这种方法无法抵挡对程序的反汇编分析,通过反汇编分析可以伪造序列号来进行破解。
[0005]还有一些其它的方法,但都不能有效的阻止对程序进行复制,反汇编及动态调试分析。

技术实现思路

[0006]本专利技术的目的是提供一种基于指令变换加密的单片机程序保护方法及系统,以解决如何对单片机程序进行加密保护的技术问题。
[0007]本专利技术是采用以下技术方案实现的:一种基于指令变换加密的单片机程序保护方法,包括如下步骤:S1:采用自定义指令集代替目标MCU指令集;S2:指令翻译,形成新的自定义指令集字节码;S3:执行机构对自定义指令集字节码进行译码和执行。
[0008]进一步的,所述自定义指令集的设计使用指令系统,所述指令系统中,操作码占用8位,操作数占用8至32位,至少可实现256种指令操作。
[0009]进一步的,在编写单片机程序时,采用自定义指令集代替目标MCU指令集,并对需要保护的关键代码的前后打上开始和结束标记,进行加密。
[0010]进一步的,若未对需要保护的代码打标记,则对整个代码进行加密。
[0011]进一步的,步骤S2具体包括:对MCU的程序解析,将需要保护的MCU程序代码翻译成自定义指令集字节码。
[0012]进一步的,MCU的一条指令会被翻译成自定义指令集不固定的一条或多条指令,以防止被静态分析,形成新的自定义指令集字节码。
[0013]进一步的,对需要保护的代码的前后打上开始和结束标记后,进行加密处理包括:加密引擎在代码段开始查找开始标记,找到后记录当前地址StartAddr,再向后查找结束标记,找到后记录当前地址EndAddr,然后计算需要加密代码的大小CodeLen1,将StartAddr到EndAddr的代码进行翻译,并统计翻译后的代码大小,如果小于CodeLen1则直接进行代码替换,如果大于CodeLen1则把EndAddr后的代码向后搬移,替换原来的代码,完成加密。
[0014]进一步的,步骤S3具体为:执行机构运作前需要先进行初始化,在加密完成的MCU程序入口,首先加密引擎会在程序开始处增加对引擎的初始化代码,其中包括引擎使用的内存分配,栈空间的分配,加密引擎的主代码分配存储空间。
[0015]一种基于指令变换加密的单片机程序保护系统,包括自定义指令集模块、指令翻译模块和执行机构,其中,所述自定义指令集模块用以采用自定义指令集代替目标MCU指令集;所述指令翻译模块用以进行指令翻译,形成新的自定义指令集字节码;所述执行机构用以对自定义指令集字节码进行译码和执行。
[0016]本专利技术的有益效果在于:本专利技术通过指令集替换加密的MCU程序,在没有办法拿到自定义指令集信息前,对于反汇编工具而言是一堆不认识的指令,破解者没办法对MCU程序进行反汇编,大大提高单片机的程序被破解的难度,达到加密保护的目的。
附图说明
[0017]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
[0018]图1为未加密程序运行时内存布局图;图2为部分加密程序运行时内存布局图;图3为全加密程序运行时内存布局图;图4为全加密方式程序执行流程图;图5为部分加密方式程序执行流程图。
具体实施方式
[0019]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本专利技术实施例的组件可以以各种不同的配置来布置和设计。
[0020]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0021]下面结合附图,对本专利技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
[0022]实施例1一种基于指令变换加密的单片机程序保护方法,包括如下步骤:S1:采用自定义指令集代替目标MCU指令集;
S2:指令翻译,形成新的自定义指令集字节码;S3:执行机构对自定义指令集字节码进行译码和执行。
[0023]在本实施例当中,所述自定义指令集的设计使用指令系统,所述指令系统中,操作码占用8位,操作数占用8位到32位,至少可实现256种指令操作,可以想到的,如果256无法完全实现,则可以扩充操作码至16位。例:自定义指令集包含以下指令:cPUSH(入栈)机器码66,cPOP(出栈)机器码67,cADD(加法)机器码68,cSUB(减法)机器码69,cMUL(乘法)机器码70,cDIV(除法)机器码71,cNor(或非)机器码72,cCmp(比较)机器码73,cJL(置位小于标记)机器码74,cJZ(置位z标记)机器码75,cJC(置位进位标记)机器码76,cNop(空操作)机器码77,cLoop(跳转)机器码78等等。
[0024]在本实施例当中,在编写单片机程序时,采用自定义指令集代替目标MCU指令集,并对需要保护的代码的前后打上开始和结束标记,进行加密,若未对需要保护的代码打标记,则对整个代码进行加密。
[0025]在本实施例当中,步骤S2具体包括:对MCU的程序解析,将需要保护的MCU程序代码翻译成自定义指令集字节码,MCU的一条指令会被翻译成自定义指令集不固定的一条或多条指令,以防止被静态分析,形成新的自定义指令集字节码。用以上的自定义指令去实现目标指令的一个加法操作:ADDR0,R1,R2(R0=R0+R1)对应的机器码为EB010002。假设我们是基于栈的指令系统(也可以就基于寄存器的),把这个指令翻译成我们自定义指令就是:cPUSH本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于指令变换加密的单片机程序保护方法,其特征在于,包括如下步骤:S1:采用自定义指令集代替目标MCU指令集;S2:指令翻译,形成新的自定义指令集字节码;S3:执行机构对自定义指令集字节码进行译码和执行。2.如权利要求1所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,所述自定义指令集的设计使用指令系统,所述指令系统中,操作码占用8位,操作数占用8至32位,至少可实现256种指令操作。3.如权利要求2所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,在编写单片机程序时,采用自定义指令集代替目标MCU指令集,并对需要保护的代码的前后打上开始和结束标记,进行加密。4.如权利要求3所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,若未对需要保护的代码打标记,则对整个代码进行加密。5.如权利要求2所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,步骤S2具体包括:对MCU的程序解析,将需要保护的MCU程序代码翻译成自定义指令集字节码。6.如权利要求5所述的一种基于指令变换加密的单片机程序保护方法,其特征在于,MCU的一条指令会被翻译成自定义指令集不固定的一条或多条指令,以防止被静态分析,形成新的自定义指令集字节码。7.如权利要求2所述的一种基于指令变换加密的单片...

【专利技术属性】
技术研发人员:孙俊武熊大鹏李涛
申请(专利权)人:苏州亿铸智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1