可执行程序的保护方法及装置制造方法及图纸

技术编号:15823019 阅读:33 留言:0更新日期:2017-07-15 05:07
本发明专利技术公开了一种可执行程序的保护方法及装置,涉及数据处理技术领域,解决了现有技术中对可执行程序的保护效果较差,进而导致可执行程序的安全性易受到影响的问题。本发明专利技术的主要技术方案为:从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;混淆所述分组语句的分组顺序;根据特定规则对混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码;将所述包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。本发明专利技术主要用于可执行程序的保护。

【技术实现步骤摘要】
可执行程序的保护方法及装置
本专利技术涉及数据处理
,尤其涉及一种可执行程序的保护方法及装置。
技术介绍
随着微软可扩展标记语言的网络分布式模块化组件服务平台(Microsoft.NETXMLWebServices,简称.NET)的逐步普及,对.NET平台下可执行程序的保护也逐步受到人们的重视。其中,.NET平台为一款微软公司开发的技术平台,旨在实现平台上不同编程语言的可执行程序间数据的通讯和共享。该平台可以面向多种编程语言,例如C++(TheC++ProgrammingLanguage,一种编程语言,简称C++语言)、C#(TheC#ProgrammingLanguage,一种编程语言,简称C#语言)或VB(VisualBasic,一种编程语言,简称VB语言)等编程语言。通常情况下,.NET平台可以将上述编程语言转化成微软中间语言(MicrosoftIntermediateLanguage,简称MSIL),即中间语言(IntermediateLanguage,MSIL的缩写,简称IL)指令。然而经.NET平台转化成IL指令的可执行程序很容易被反编译软件还原成可执行程序的源代码并破解,例如,通常使用Reflector软件来进行可执行程序的破解。因此,在.NET平台下转换为IL指令的可执行程序都需要进行必要的保护。目前,在对.NET平台下可执行程序的保护过程中,通常使用两种保护方法:一种方法是基于软件的保护方法,该方法主要是通过保护软件对IL指令的指令顺序进行改变,以达到混淆IL指令的目的,进而实现对可执行程序的保护,其中,所述保护软件可以为.NETReactor、Dotfuscator等;另一种方法是基于硬件的保护方法,该方法主要是挑选IL指令中的部分指令,通过将所述部分IL指令转译成其他编程代码,并将所述转译后的代码移植在预置的保护装置中,以实现对可执行程序的保护。然而,前者基于软件的保护方法是基于纯IL层面上,通过混淆IL指令的顺序以实现保护功能,导致经混淆后IL指令的抗分析性较差,容易被破解软件破解,进而影响转化为IL指令的可执行程序的安全性;后者基于硬件的保护方法中,由于转译后的代码需移植到保护装置中,导致所移植的代码数量易受硬件的空间限制,进而影响转化为IL指令的可执行程序的安全性。因此,现有技术中对转化为IL指令的可执行程序的保护效果较差,进而导致可执行程序的安全性易受到影响。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的可执行程序的保护方法及装置。为达到上述目的,本专利技术主要提供如下技术方案:一方面,本专利技术提供了一种可执行程序的保护方法,该方法包括:从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;混淆所述分组语句的分组顺序;根据特定规则对混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码;将所述包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。另一方面,本专利技术还提供一种可执行程序的保护装置,该装置包括:分组单元,用于从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;混淆单元,用于混淆所述分组单元进行过分组操作后的所述分组语句的分组顺序;操作单元,用于根据特定规则对所述混淆单元混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;生成单元,用于通过对所述操作单元操作后得到的秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及所述连接语句的代码;注入单元,用于将所述生成单元生成的包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。借由上述技术方案,本专利技术提供的一种可执行程序的保护方法及装置,与现有基于软件的保护方法相比,本专利技术通过在混淆可执行程序的待保护语句的语句顺序之后,继续对所述可执行程序的待保护语句进行相关的操作:其中,首先通过特定规则,将所述待保护语句进行加密操作并生成与所述混淆后的分组语句对应的秘钥数组,由于所述秘钥数组中记录了对应的所述分组语句的分组顺序,且秘钥数组根据特定规则生成,因此增加了在未知特定规则的前提下对秘钥数组进行分析的难度,进而提高了所述分组语句的抗分析能力;随后通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码,由于所述连接语句的连接逻辑由本地代码的种类决定,通过更换本地代码即可改变当前秘钥数组的连接关系,并且连接语句的生成是通过秘钥数组与本地代码交互运算后动态生成的,因此可以进一步提高所述包含秘钥数组及连接语句的代码的抗分析能力,进而克服了现有技术的保护方法中,仅混淆待保护语句的顺序导致可执行程序的抗分析性较差的问题,进而提高对可执行程序保护效果,进一步提高了安全性。此外,与现有基于硬件的保护方法相比,本专利技术通过本地代码中的连接语句,连接所述秘钥数组,生成包含所述秘钥数组及所述连接语句的代码,并将将所述代码注入到已提取待保护语句的可执行程序中。由于所述代码仍保存在可执行程序中,无需经过转译编码的过程,避免现有基于硬件保护方法中对待保护语句的转译过程,并且所述代码最后仍注入到可执行程序中,与所述可执行程序存储在一起,无需通过额外硬件空间存储,因此所述代码的数量不受硬件空间限制,可以根据需要进行增减,进而避免了现有技术中因转译后的代码数量受硬件空间限制进而影响可执行程序安全性的问题,进而改善了保护效果,进一步提高了可执行程序的安全性。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1为本专利技术实施例提供的一种可执行程序的保护方法流程图;图2为本专利技术实施例提供的另一种可执行程序的保护方法流程图;图3为本专利技术实施例提供的一种可执行程序的保护装置的组成框图;图4为本专利技术实施例提供的另一种可执行程序的保护装置的组成框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。为使本专利技术技术方案的优点更加清楚,下面结合附图和实施例对本专利技术作详细说明。本专利技术实施例提供了一种可执行程序的保护方法,如图1所示,所述方法包括:101、从可执行程序中提取待保护语句,并对待保护语句进行分组,得到分组语句。其中,所述的待保护语句可以为所述可执行程序中某一段语句、某几段语句或能够实现某个功能的语句集合。在计算机领域中,可执行程序由大量的语句构成,不同的语句之间根据不同语言环境形成完整的逻辑及功能。在此,以常见的编程语言C语言为例,选取一个带有测试功能的语句集合,如下所示:在上述的语句中,不同语句在C语言的语言环境下形成完整的测试功能。因此,在本专利技术实施例中,所述可执行程序的待保护语句可以是可执行程序的语句集合中某一段语句或本文档来自技高网
...
可执行程序的保护方法及装置

【技术保护点】
一种可执行程序的保护方法,其特征在于,包括:从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;混淆所述分组语句的分组顺序;根据特定规则对混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码;将所述包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。

【技术特征摘要】
1.一种可执行程序的保护方法,其特征在于,包括:从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;混淆所述分组语句的分组顺序;根据特定规则对混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组;通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码;将所述包含所述秘钥数组及所述连接语句的代码注入到已提取待保护语句的可执行程序中。2.根据权利要求1所述的方法,其特征在于,所述可执行程序中待保护语句为所述可执行程序在.NET平台下转化成IL指令集中对应的IL指令。3.根据权利要求2所述的方法,其特征在于,所述对所述待保护语句进行分组,得到分组语句,包括:根据所述待保护语句对应的IL指令,分析所述IL指令中不同指令对应的不同功能;根据所述不同指令对应的不同功能,将形成完整功能的IL指令分成一组。4.根据权利要求2所述的方法,其特征在于,所述根据特定规则对所述混淆后的分组语句进行操作,生成与所述混淆后的分组语句对应的秘钥数组,包括:选择一个二进制数字,所述二进制数字用于记录所述混淆后的分组IL指令的分组数量及分组顺序;根据特定规则将所述二进制数字的高位进行清零操作,并将所述混淆后分组IL指令的分组数量记录到所述清零后二进制数字的高位中;根据特定规则将所述二进制数字进行向左移位操作,并将所述混淆后分组IL指令的分组顺序记录到所述向左移位后二进制数字的低位中;将记录所述分组数量及所述分组顺序的二进制数存储至不同的秘钥数组;将所述不同的秘钥数组匹配给对应所述分组顺序的分组IL指令。5.根据权利要求2所述的方法,其特征在于,所述通过对所述秘钥数组和本地代码进行交互运算,生成包含所述秘钥数组及连接语句的代码,包括:根据本地代码的种类,编译调用函数,所述调用函数用于根据不同的秘钥数组调用对应的分组IL指令;根据所述秘钥数组对应的分组IL指令的功能,从所述本地代码中调用连接语句;判断所述本地代码的中连接语句的逻辑算法,并分析所述全部秘钥数组对应的分组IL指令整体功能;通过所述调用的连接语句和所述调用函数,结合所述全部秘钥数组对应的分组IL指令的整体功能及所述本地代码的中连接语句的逻辑算法,将所述秘钥数组连接起来,生成包含所述秘钥数组及所述连接语句的代码。6.一种可执行程序的保护装置,其特征在于,包括:分组单元,用于从可执行程序中提取待保护语句,并对所述待保护语句进行分组,得到分组语句;混淆单元,用于混淆所述分组单元进行过分组操...

【专利技术属性】
技术研发人员:孙吉平朱庆芬
申请(专利权)人:北京深思数盾科技股份有限公司
类型:发明
国别省市:北京,11

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

1