一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

代码保护方法、装置、电子设备及可读存储介质与流程

2022-11-28 12:50:10 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种代码保护方法、装置、电子设备及可读存储介质。


背景技术:

2.源代码是指未编译的按照一定的程序设计语言规范书写的文本文件。是一系列用户可读的计算机语言指令。源代码的最终目的是将用户可读的文本翻译成计算机可以执行的二进制指令。
3.由于源代码是用户可读的文本文件,因此很容易被窃取、抄袭或者篡改。所以在数据传输过程中,通常需要对源代码进行加密保护,以保证源代码的安全。现有的加密算法包括二进制加密算法以及混淆加密算法。其中,二进制加密算法是指将源代码转化为二进制文件,再将转化后的二进制文件进行传输。而混淆加密算法是指利用复杂字符将源代码中的变量进行替换,然后将替换后的代码文件进行传输。
4.在上述保护方案中,二进制文件容易被反编译,很容易将源代码还原出来。而混淆后的代码也可以通过调用的流程来定位变量位置,通过变量更换就可以还原源代码。因此上述两种方法的加密效果都很差,源代码的安全性难以保证。如何对源代码进行更有效且更有力的保护,提高源代码的传输安全性成为亟需解决的问题。


技术实现要素:

5.有鉴于此,本技术提供了一种代码保护方法、装置、电子设备及可读存储介质,首先生成与原始代码相似的混淆代码。然后利用混淆代码对源代码进行干扰,将混淆代码与原始代码进行组合得到组合代码。这样,原始代码可以在组合代码中实现伪装,提高了代码传输过程中原始代码的获取难度和篡改难度,实现对原始代码的安全保护。
6.本技术实施例第一方面提供了一种代码保护方法,该方法包括:
7.生成原始代码对应的至少一个混淆代码。其中,至少一个混淆代码中的每一个混淆代码均为对原始代码进行混淆后得到的代码。
8.为原始代码确定第一识别码。
9.将原始代码和至少一个混淆代码进行组合,得到组合代码。
10.响应组合代码的执行指令,根据第一识别码执行组合代码中的原始代码。
11.在一个可选的实施方式中,生成原始代码对应的至少一个混淆代码,包括:
12.确定原始代码对应的第一代码。其中,第一代码为原始代码或者原始代码中的函数片段。
13.对第一代码进行混淆处理,得到第一代码对应的混淆代码。
14.将第一代码对应的混淆代码确定为原始代码对应的混淆代码。
15.在一个可选的实施方式中,原始代码包括至少一个函数片段。生成原始代码对应的至少一个混淆代码,包括:
16.确定原始代码中的目标函数片段和其他函数片段。其他函数片段为原始代码中除目标函数片段之外的函数片段。
17.对目标函数片段进行混淆处理,得到目标函数片段对应的干扰函数片段。其中,干扰函数片段与目标函数片段之间的相似程度大于预设阈值。
18.将干扰函数片段和其他函数片段进行组合,得到混淆代码。
19.在一个可选的实施方式中,该方法还包括:
20.为至少一个混淆代码中的每个混淆代码分别确定第二识别码。
21.将原始代码和至少一个混淆代码进行组合,得到组合代码,包括:
22.利用条件分支语句将原始代码和至少一个混淆代码进行逻辑组合。其中,条件分支语句中的if语句对应第一识别码或第二识别码。条件分支语句中的else语句对应原始代码的函数语句或至少一个混淆代码的函数语句。
23.在一个可选的实施方式中,为至少一个混淆代码中的每个混淆代码分别确定第二识别码,包括:
24.利用随机数生成算法随机生成至少一个随机数。
25.确定每个混淆代码对应的目标随机数。其中,每个混淆代码与目标随机数一一对应。
26.将目标随机数确定为每个混淆代码对应的第二识别码。
27.在一个可选的实施方式中,该方法还包括:
28.在数据库中存储原始代码的标识与第一识别码的对应关系。其中,原始代码的标识为第一代码的标识。
29.在一个可选的实施方式中,该方法还包括:
30.对组合代码进行加密,并发送加密后的组合代码。
31.响应组合代码的执行指令,根据第一识别码执行组合代码中的原始代码,包括:
32.响应组合代码的执行指令,对加密后的组合代码进行解密。
33.根据解密后的组合代码,获取组合代码对应的原始代码的标识。
34.根据原始代码的标识,在数据库中获取第一识别码。
35.根据第一识别码,执行解密后的组合代码。
36.在一个可选的实施方式中,生成原始代码对应的至少一个混淆代码,包括:
37.将原始代码输入至训练好的代码生成模型。
38.根据代码生成模型生成原始代码对应的至少一个混淆代码。代码生成模型用于根据原始代码包括的函数语句和变量类型,生成混淆代码。
39.在一个可选的实施方式中,在将原始代码输入至代码生成模型之前,该方法还包括:
40.根据训练样本集对代码生成模型进行训练。
41.其中,代码生成模型的训练过程为:
42.获取训练样本集中的训练样本。训练样本为函数代码段。
43.将训练样本输入至代码生成模型中,得到训练样本对应的输出结果。输出结果为函数代码段对应的混淆代码。
44.确定训练样本的输出结果和函数代码段之间的相似程度,根据相似程度调节代码
生成模型的模型参数。
45.当达到预设训练条件时,结束对代码生成模型的训练。
46.在一个可选的实施方式中,预设训练条件包括:训练次数达到预设次数或者相似程度达到预设阈值。
47.本技术实施例第二方面提供了一种代码保护装置,该装置包括:
48.生成单元,用于生成原始代码对应的至少一个混淆代码。其中,至少一个混淆代码中的每一个混淆代码均为对原始代码进行混淆后得到的代码。
49.确定单元,用于为原始代码确定第一识别码。
50.处理单元,用于将原始代码和至少一个混淆代码进行组合,得到组合代码。
51.执行单元,用于响应组合代码的执行指令,根据第一识别码执行组合代码中的原始代码。
52.在一个可选的实施方式中,生成单元,具体用于确定原始代码对应的第一代码。其中,第一代码为原始代码或者原始代码中的函数片段。对第一代码进行混淆处理,得到第一代码对应的混淆代码。将第一代码对应的混淆代码确定为原始代码对应的混淆代码。
53.在一个可选的实施方式中,原始代码包括至少一个函数片段。生成单元,具体用于确定原始代码中的目标函数片段和其他函数片段。其他函数片段为原始代码中除目标函数片段之外的函数片段。对目标函数片段进行混淆处理,得到目标函数片段对应的干扰函数片段。其中,干扰函数片段与目标函数片段之间的相似程度大于预设阈值。将干扰函数片段和其他函数片段进行组合,得到混淆代码。
54.在一个可选的实施方式中,确定单元,还用于为至少一个混淆代码中的每个混淆代码分别确定第二识别码。
55.生成单元,具体用于利用条件分支语句将原始代码和至少一个混淆代码进行逻辑组合。其中,条件分支语句中的if语句对应第一识别码或第二识别码。条件分支语句中的else语句对应原始代码的函数语句或至少一个混淆代码的函数语句。
56.在一个可选的实施方式中,确定单元,具体用于利用随机数生成算法随机生成至少一个随机数。确定每个混淆代码对应的目标随机数。其中,每个混淆代码与目标随机数一一对应。将目标随机数确定为每个混淆代码对应的第二识别码。
57.在一个可选的实施方式中,该装置还包括存储单元。存储单元,用于在数据库中存储原始代码的标识与第一识别码的对应关系。其中,原始代码的标识为第一代码的标识。
58.在一个可选的实施方式中,处理单元,还用于对组合代码进行加密,并发送加密后的组合代码。
59.执行单元,具体用于响应组合代码的执行指令,对加密后的组合代码进行解密。根据解密后的组合代码,获取组合代码对应的原始代码的标识。根据原始代码的标识,在数据库中获取第一识别码。根据第一识别码,执行解密后的组合代码。
60.在一个可选的实施方式中,生成单元,具体用于将原始代码输入至训练好的代码生成模型。根据代码生成模型生成原始代码对应的至少一个混淆代码。代码生成模型用于根据原始代码包括的函数语句和变量类型,生成混淆代码。
61.在一个可选的实施方式中,该装置还包括训练单元。训练单元,用于根据训练样本集对代码生成模型进行训练。
62.其中,代码生成模型的训练过程为:
63.获取训练样本集中的训练样本。训练样本为函数代码段。将训练样本输入至代码生成模型中,得到训练样本对应的输出结果。输出结果为函数代码段对应的混淆代码。确定训练样本的输出结果和函数代码段之间的相似程度,根据相似程度调节代码生成模型的模型参数。当达到预设训练条件时,结束对代码生成模型的训练。
64.在一个可选的实施方式中,预设训练条件包括:训练次数达到预设次数或者相似程度达到预设阈值。
65.本技术实施例第三方面还提供了一种电子设备,包括:存储器和处理器,存储器和处理器耦合。
66.其中,存储器用于存储一条或多条计算机指令。
67.处理器用于执行一条或多条计算机指令,以实现上述第一方面所述的代码保护方法。
68.本技术实施例第四方面还提供了一种计算机可读存储介质,其上存储有一条或多条计算机指令,其特征在于,该指令被处理器执行以实现上述任意一种技术方案所述的代码保护方法。
69.本技术实施例所提供的技术方案,在对原始代码进行数据传输之前,先生成与原始代码相似的至少一个混淆代码。然后为原始代码确定第一识别码,接着将原始代码和混淆代码进行组合,得到组合代码。当需要执行原始代码时,则利用第一识别码执行组合代码中的原始代码片段。在该技术方案中,混淆代码对原始代码进行干扰,要被保护的原始代码在组合代码中实现了伪装。这样,在数据传输过程中,即使组合代码被窃取,也很难定位其中的原始代码,从而很难对原始代码进行抄袭和篡改。同时,在代码执行过程中,又能利用第一识别码精准定位组合代码中的原始代码,快速执行原始代码,实现原始代码功能。因此组合代码在不影响原始代码执行的前提下还能提高原始代码的获取难度和篡改难度,实现对原始代码的保护,提高了原始代码的安全性和保密性。
附图说明
70.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
71.图1是本技术实施例提供的一种代码保护方法的流程示意图;
72.图2本技术实施例提供的一种代码生成模型的训练方法的流程示意图;
73.图3为本技术实施例提供的另一种代码保护方法的流程示意图;
74.图4为本技术实施例提供的一种代码保护装置的结构示意图;
75.图5为本技术实施例提供的执行设备的一种结构示意图;
76.图6为本技术实施例提供的训练设备的一种结构示意图。
具体实施方式
77.本技术提供了一种代码保护方法、装置、电子设备及可读存储介质,首先生成与原
始代码相似的混淆代码。然后利用混淆代码对源代码进行干扰,将混淆代码与原始代码进行组合得到组合代码。这样,原始代码可以在组合代码中实现伪装,提高了代码传输过程中原始代码的获取难度和篡改难度,实现对原始代码的安全保护。
78.为了使本领域的技术人员能够更好的理解本技术的技术方案,下面结合本技术实施例中的附图,对本技术进行清楚、完整地描述。但本技术能够以很多不同于上述描述的其他方式进行实施,因此,基于本技术提供的实施例,本领域普通技术人员在不经过创造性劳动的情况下,所获得的所有其他实施例,都应属于本技术保护的范围。
79.需要说明的是,本技术的权利要求书、说明书及附图中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,并不用于描述特定的顺序或先后次序。这样使用的数据在适当情况下是可以互换的,以便于本文所描述的本技术的实施例,能够以除了在本文图示或描述的内容以外的顺序实施。此外,术语“包括”、“具有”以及他们的变形形式,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
80.源代码是指未编译的按照一定的程序设计语言规范书写的文本文件。是一系列用户可读的计算机语言指令。源代码主要有以下两种作用:一是通过编译过程将将用户可读的文本翻译成计算机可以执行的二进制指令。二是对软件进行说明,该类源代码被称为注释代码。注释代码对软件的学院、分享、维护和复用都具有巨大的用途。
81.源代码一般被分为自由代码和非自由代码。其中,自由代码一般不仅可以免费得到,而且还会公开源代码。而非自由代码则不会公开源代码,所有一切通过非正常手段获得非自由源代码的行为都将被视为违法。
82.由于源代码是用户可读的文本文件,因此很容易被窃取、抄袭或者篡改。为了对非自由源代码进行更好的保护,在数据传输过程中,通常需要对源代码进行加密保护,以保证源代码的安全性和可靠性。现有的加密算法包括二进制加密算法以及混淆加密算法。其中,二进制加密算法是指将源代码转化为二进制文件,再将转化后的二进制文件进行传输。而混淆加密算法是指利用复杂字符将源代码中的变量进行替换,然后将替换后的代码文件进行传输。
83.在上述技术方案中,二进制文件容易被反编译,因此很容易将源代码还原出来。而混淆后的代码也可以通过调用的流程来定位变量位置,通过变量更换就可以还原源代码。因此上述方法的加密效果都很差,源代码的安全性难以保证。如何对源代码进行更有效且更有力的加密,提高源代码的传输安全性成为亟需解决的问题。
84.针对上述问题,本技术提供了一种代码保护方法、装置、电子设备及可读存储介质,可以利用与原始代码相似的混淆代码对原始代码进行干扰混淆,利用将混淆代码和原始代码进行组合的方式来实现对原始代码的保护。这样原始代码可以在组合代码中实现伪装,从而提高原始代码的获取难度和篡改难度。下面结合具体实施例及附图对本技术所述的方法、装置、终端以及计算机可读存储介质做进一步详细说明。
85.图1为本技术实施例提供的一种代码保护方法的流程示意图。需要说明的是,该流程示意图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,同时,在某些情况下,可以以不同于该流程示意图中示出的逻辑顺序执行所示出的步骤。
86.如图1所示,该代码的保护方法包括以下几个步骤:
87.101、生成原始代码对应的至少一个混淆代码。
88.原始代码,可以是任意具有保护需求的完整代码或者代码片段,例如开发的程序产品的源代码或特定程序功能模块的代码片段。当需要对原始代码进行传输并执行时,为了防止原始代码在数据传输过程中因非法窃取而被抄袭和恶意篡改,就需要对原始代码进行安全保护后再输出。在对原始代码进行安全保护时,可以采用与原始代码相似的混淆代码来对其进行干扰和混淆。其中,混淆代码是指与原始代码结构或语句相似,但是实际功能却不同的代码。其中,混淆代码可以是正常代码,也可以是错误的代码,只需要能起到混淆和干扰作用即可,具体不做限定。
89.其中,在生成原始代码的混淆代码时,可以针对原始代码整体来确定混淆代码,也可以针对原始代码中的一部分函数片段来确定混淆代码。示例性的,原始代码由a函数语句和b函数语句构成。在生成原始代码的混淆代码时,可以先针对a函数语句进行变换,得到a函数语句对应的混淆函数语句,然后针对b函数语句进行变换,得到b函数语句对应的混淆函数语句。再按照原始代码的结构对两个混淆函数语句进行组合,将组合结果确定为原始代码的混淆代码。在上述例子中,还可以在a函数语句和b函数语句中进行挑选,选择其中的一个函数语句进行变换。比如选择了a函数语句进行变换,得到与a函数语句相似的函数片段,然后直接把该函数片段作为原始代码的混淆代码。
90.示例性的,在获得原始代码对应的混淆代码时,还可以先对原始代码中的函数片段进行分析,从多个函数片段中选择目标函数片段。然后待该目标函数片段进行变换,得到与目标函数片段非常相似的干扰函数片段。然后利用干扰函数片段去替换原始代码中的目标函数片段,将干扰函数片段与原始代码中的其他函数片段进行组合,得到原始代码对应的混淆代码。可以理解的,还可以根据实际的需求来确定相似程度阈值,即干扰函数片段与目标函数片段的相似程度要大于预设阈值,以提高混淆代码与原始代码的相似性,这样混淆代码就更具有干扰性。
91.示例性的,还可以采用人工智能的方式来获得原始代码的混淆代码。可以利用深度学习模型来训练一个生成混淆代码的代码生成模型。这样,只需将原始代码输入至代码生成模型中,代码生成模型就可以输出与原始代码相似度较高的相似代码。
92.其中,代码生成模型可以是卷积神经网络cnn模型,也可以是长短时记忆神经网络lstm模型等,具体不做限定。代码生成模型可以根据待查询源代码包括的函数语句和变量类型,生成与之相似的混淆代码,实现对原始代码的干扰和混淆。
93.102、为原始代码确定第一识别码。
94.其中,原始代码的第一识别码是执行代码时所需要的“钥匙”。在后续执行原始代码时,输入第一识别码就可以执行原始代码对应的函数语句。因此,在利用混淆代码对原始代码进行干扰之前,需要先确定原始代码对应的第一识别码。这样,在后续执行干扰后的代码时,可以利用第一识别码从干扰后的代码中精准定位到原始代码,从而起到快速执行原始代码的目的。这样,混淆代码才不会影响原始代码的执行和访问效率。
95.103、将原始代码和混淆代码进行组合,得到组合代码。
96.在得到原始代码的混淆代码后,就可以将原始代码和混淆代码进行组合,得到组合代码。这样,组合代码中就包括有正确的原始代码和起干扰作用的混淆代码。即原始代码
就可以伪装在混淆代码之间。可以理解的,组合代码中的混淆代码的数量越多,原始代码就越难以被查找和定位,其安全性也就越高。组合代码提高了原始代码的获取难度和篡改难度,实现了对原始代码的保护。
97.104、响应组合代码的执行指令,根据第一识别码执行组合代码中的原始代码。
98.在得到组合代码之后,就需要对将组合代码进行数据传输,以供各用户使用。由于在组合代码中,原始代码混迹在一众混淆代码之间,因此数据传输过程中原始代码就很难被获取以及篡改。原始代码的安全性和保密性进一步提高。示例性的,在输出组合代码时,仍然可以采用常规的加密算法对其再次进行加密。例如使用二进制加密算法将组合代码转化为二进制文件。或者利用混淆算法对组合代码进行变量更改等。这样就可以实现对源代码的二次保护,进一步提高源代码的传输安全性。
99.而用户在获取组合代码后,需要利用组合代码中的原始代码来完成对应的功能。此时,则需要原始代码对应的第一识别码在组合代码中快速定位原始代码,然后执行原始代码对应的函数语句即可,以实现原始代码对应的功能。
100.本技术实施例所提供的技术方案,在对原始代码进行数据传输之前,先生成与原始代码相似的至少一个混淆代码。然后为原始代码确定第一识别码,接着将原始代码和混淆代码进行组合,得到组合代码。当需要执行原始代码时,则利用第一识别码执行组合代码中的原始代码片段。在该技术方案中,混淆代码对原始代码进行干扰,要被保护的原始代码在组合代码中实现了伪装。这样,在数据传输过程中,即使组合代码被窃取,也很难定位其中的原始代码,从而很难对原始代码进行抄袭和篡改。同时,在代码执行过程中,又能利用第一识别码精准定位组合代码中的原始代码,快速执行原始代码,实现原始代码功能。因此组合代码在不影响原始代码执行的前提下还能提高原始代码的获取难度和篡改难度,实现对原始代码的保护,提高了原始代码的安全性和保密性。
101.下面对代码生成模型进行简单的介绍:
102.代码生成模型可以是卷积神经网络cnn模型,也可以是长短时记忆神经网络lstm模型等,具体不做限定。其中,代码生成模型的输入是一段代码,输出是与该段代码相似的混淆代码。代码生成模型可以根据输入代码包括的函数语句和变量类型等,生成与之相似的混淆代码。通过对代码生成模型各项参数进行调节,可以提高代码与混淆代码之间的相似度,使得代码生成模型的输出结果更符合干扰混淆需求。
103.下面对代码生成模型的训练过程进行简单的介绍:
104.图2本技术实施例提供的一种代码生成模型的训练方法的流程示意图。如图2所示,训练流程包括以下几个步骤:
105.201、获取训练样本集。
106.其中,训练样本集中包括海量的训练样本。具体的,可以使用开源代码库来获得大量的训练样本。示例性的,在开源代码库中下载不同函数类型的多个代码或不同变量类型的多个代码来作为训练样本。这样可以使得训练后的代码生成模型具有能生成不同类型代码相似的混淆代码的能力。示例性的,还可以将开源代码库中的源代码进行切分,得到大量的函数片段来作为训练样本集,具体不做限定。
107.202、根据训练样本集中的训练样本对代码生成模型进行训练。
108.其中,训练过程具体为:先将训练样本输入至代码生成模型,然后通过代码生成模
型对代码的函数结构、变量类型等的分析和计算,得到一个输出结果。该输出结果即为代码生成模型生成的与训练样本相似的混淆代码。然后需要将输出结果和输入的训练样本进行比对,得到两者的相似程度。接着根据相似程度反向调整代码生成模型的模型参数,使得代码生成模型的输出结果与输入的训练样本具有更高的相似程度。这样,代码生成模型的输出结果才能实现对训练样本的干扰和混淆,最终才能让原始代码更好的伪装在混淆代码之间,实现对原始代码的有效保护。
109.203、待训练达到预设训练条件时,停止对代码生成模型的训练。
110.可以理解的,需要利用大量的训练样本对代码生成模型进行训练,当训练达到预设训练条件后,停止对代码生成模型的训练。最后可以利用训练好的代码生成模型来进行混淆代码的获取。
111.示例性的,预设训练条件可以是代码生成模型的训练次数已经达到预设次数,或者是代码生成模型的输出结果与输入的相似程度已经达到预设的阈值等。可以根据不同的干扰需求来确定预设训练条件,在此不做赘述。
112.基于上述对代码生成模型的介绍,图3为本技术实施例提供的另一种代码保护方法的流程示意图。如图3所示,该代码保护方法包括以下几个步骤:
113.301、确定原始代码对应的干扰系数。
114.其中,干扰系数用来反映对原始代码的干扰程度。可以根据具体的代码保护需求来调节干扰系数。可以理解的,如果原始代码的安全性要求越高,那么就更多的混淆代码来干扰原始代码。这样,原始代码才更不容易被定位和发现,才能对原始代码进行更好的伪装和隐匿。因此,示例性的,干扰系数则可以用来指示混淆代码的数量。用于干扰的相似代码的数量越大,组合代码中的真实源代码越能实现伪装。
115.302、根据干扰系数生成原始代码对应的混淆代码。
116.在确定好干扰系数后,就可以根据干扰系数来确定混淆代码的数量。然后可以利用代码生成模型得到该数量的混淆代码。可以理解的,混淆代码的数量越多,意味着最后由原始代码和混淆代码形成的组合代码就越复杂,其安全性也越高。但是这也意味着组合代码的体积越大,为数据传输带来困难。因此,应该合理确定混淆代码的数量,在保证数据传输质量的前提下尽可能多的生成混淆代码。
117.在确定好混淆代码的数量之后,就可以利用代码生成模型来获得原始代码对应的多个混淆代码。其中,混淆代码是指与原始代码结构或语句相似,但是实际功能却不同的代码。其中,混淆代码可以是正常代码,也可以是错误的代码,只需要能起到混淆和干扰作用即可,具体不做限定。
118.303、为原始代码和混淆代码分别确定识别码。
119.其中,识别码可以是通用唯一识别码uuid值,而uuid值是使用函数时所需要的“钥匙”。在执行代码函数时,输入uuid值就可以执行该uuid值对应的函数语句。当原始代码和混淆代码均对应有唯一的uuid值时,只有输入准确的原始代码对应的第一识别码时,才能对原始代码进行访问和执行。而输入混淆代码对应的第二识别码时,只能访问和执行错误的混淆代码。因此,第二识别码也能对第一识别码进行干扰,更加提高原始代码的访问安全性。
120.示例性的,可以利用随机数生成算法来确定每一个代码对应的uuid值。首先根据
随机数生成算法随机生成多个随机数,然后将多个随机数分给原始代码和混淆代码。即将随机数作为原始代码或混淆代码的唯一识别码。其中,原始代码和混淆代码分别对应多个随机数中的一个随机数。示例性的,还可以对随机数进行二次数据处理,将数据处理后的值作为其对应的uuid值,具体不做限定。
121.可以理解的,基于随机数生成的uuid值的保密性更高,难以通过推理计算的方式被非法获取,这样对待查询源代码的保护度更高,进一步增加了原始代码的访问难度。
122.304、在数据库中存储原始代码的标识与原始代码对应的第一识别码的对应关系。
123.可以理解的,需要将原始代码对应的uuid值(第一识别码)进行存储记录。这样,合法的用户才能通过查询数据库的方式获取到准确的第一识别码,从而实现对原始待码的合法访问和使用。其中,数据库中存储有原始代码的标识和原始代码对应的uuid值的对应关系表。具有合法身份的用户才有查询数据库的权限。通过查询对应关系表来获得各原始代码对应的uuid值,最终实现对原始代码的合法利用。
124.305、利用条件语句将原始代码和混淆代码进行组合,得到组合代码。
125.条件语句是指if-else语句。在利用if-else语句对原始代码和混淆代码进行组合时,可以生成多个条件分支。其中,条件语句中的if语句对应原始代码对应的uuid值或者混淆代码对应的uuid值。else语句则对应原始代码的函数语句或者混淆代码的函数语句。可以理解的,第一条件分支中若if语句对应的是原始代码对应的uuid值,那么该分支中的else语句对应的是原始代码的函数语句。而若if语句对应的是混淆代码对应的uuid值,那么该分支中的else语句对应的是混淆代码的函数语句。即原始代码和混淆代码被放置在不同的条件分支中,只有获取到正确的uuid值,才能访问和执行原始代码对应的条件分支。否则将执行混淆代码。这样,就需要先获取到准确的uuid值,然后才能访问和执行原始代码。组合代码将原始代码藏匿于混淆代码中,增加了原始代码的访问查询难度,提高了原始代码的安全性。
126.306、对组合代码进行加密,并传输加密后的组合代码。
127.在得到组合代码之后,就需要响应各用户的代码请求,输出组合代码。示例性的,在输出组合代码时,仍然可以采用常规的加密算法对其进行加密。例如使用二进制加密算法将组合代码转化为二进制文件。或者利用混淆算法对组合代码进行变量的更换等。这样就可以实现对源代码的二次保护,进一步提高源代码的传输安全性。
128.307、响应组合代码的执行指令,获取组合代码对应的原始代码的标识。
129.当组合代码被传输给各用户时,当需要执行原始代码得到相关功能时,就需要响应组合代码的执行指令,对加密的组合代码进行解密。然后根据解密后的组合代码获得原始代码的标识。该标识用于用户查询数据库,获得原始代码对应的第一识别码。
130.308、根据原始代码的标识,在数据库中获取第一识别码。
131.合法用户在认证完成后,就可以访问数据库获取相关信息。因此,可以根据原始代码的标识,在数据库中获得原始代码的第一识别码。然后利用第一识别码去执行组合代码。
132.309、根据第一识别码执行组合代码中的原始代码。
133.具体的,合法用户将获取到的uuid值输入至组合代码中,组合代码跳转至正确的程序分支中,执行原始代码。
134.本技术实施例所提供的技术方案,首先根据安全需求确定干扰系数,然后根据干
扰系数确定用于对源代码进行干扰的混淆代码。最后利用if-else语句将原始代码和混淆代码进行组合,得到组合代码。最后将组合代码输出。在该技术方案中,混淆代码增大了对原始代码的干扰力度,要被保护的原始代码在组合代码中实现了伪装。同时,需要获取到准确的uuid值,才能实现对原始代码的访问执行。这样,在数据传输过程中,即使组合代码被窃取,也很难定位其中的原始代码,从而很难对原始代码进行抄袭和篡改。组合代码提高了原始代码的获取难度和篡改难度,实现了对原始代码的保护,提高了原始代码的安全性和保密性。
135.图4为本技术实施例提供的一种代码保护装置的结构示意图,以下结合图4对本实施例提供的进行详细描述。以下描述所涉及的实施例用于解释本技术的技术方案,并不是实际使用的限定。
136.该代码保护装置包括:
137.生成单元401,用于生成原始代码对应的至少一个混淆代码。其中,至少一个混淆代码中的每一个混淆代码均为对原始代码进行混淆后得到的代码。
138.确定单元402,用于为原始代码确定第一识别码。
139.处理单元403,用于将原始代码和至少一个混淆代码进行组合,得到组合代码。
140.执行单元404,用于响应组合代码的执行指令,根据第一识别码执行组合代码中的原始代码。
141.在一个可选的实施方式中,生成单元401,具体用于确定原始代码对应的第一代码。其中,第一代码为原始代码或者原始代码中的函数片段。对第一代码进行混淆处理,得到第一代码对应的混淆代码。将第一代码对应的混淆代码确定为原始代码对应的混淆代码。
142.在一个可选的实施方式中,原始代码包括至少一个函数片段。生成单元401,具体用于确定原始代码中的目标函数片段和其他函数片段。其他函数片段为原始代码中除目标函数片段之外的函数片段。对目标函数片段进行混淆处理,得到目标函数片段对应的干扰函数片段。其中,干扰函数片段与目标函数片段之间的相似程度大于预设阈值。将干扰函数片段和其他函数片段进行组合,得到混淆代码。
143.在一个可选的实施方式中,确定单元402,还用于为至少一个混淆代码中的每个混淆代码分别确定第二识别码。
144.生成单元401,具体用于利用条件分支语句将原始代码和至少一个混淆代码进行逻辑组合。其中,条件分支语句中的if语句对应第一识别码或第二识别码。条件分支语句中的else语句对应原始代码的函数语句或至少一个混淆代码的函数语句。
145.在一个可选的实施方式中,确定单元402,具体用于利用随机数生成算法随机生成至少一个随机数。确定每个混淆代码对应的目标随机数。其中,每个混淆代码与目标随机数一一对应。将目标随机数确定为每个混淆代码对应的第二识别码。
146.在一个可选的实施方式中,该装置还包括存储单元405。存储单元405,用于在数据库中存储原始代码的标识与第一识别码的对应关系。其中,原始代码的标识为第一代码的标识。
147.在一个可选的实施方式中,处理单元403,还用于对组合代码进行加密,并发送加密后的组合代码。
access memory,nvram)。存储器804存储有处理器和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。
158.处理器803控制执行设备的操作。具体的应用中,执行设备的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
159.上述本技术实施例揭示的方法可以应用于处理器803中,或者由处理器803实现。处理器803可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器803中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器803可以是通用处理器、数字信号处理器(digital signal processing,dsp)、微处理器或微控制器,还可进一步包括专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该处理器803可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器804,处理器803读取存储器804中的信息,结合其硬件完成上述方法的步骤。
160.接收器801可用于接收输入的数字或字符信息,以及产生与执行设备的相关设置以及功能控制有关的信号输入。发射器802可用于通过第一接口输出数字或字符信息;发射器802还可用于通过第一接口向磁盘组发送指令,以修改磁盘组中的数据;发射器802还可以包括显示屏等显示设备。
161.本技术实施例中,处理器803中的应用处理器8031,用于执行图1至图3对应实施例中的代码保护方法。需要说明的是,应用处理器8031执行各个步骤的具体方式,与本技术中图1至图3对应的各个方法实施例基于同一构思,其带来的技术效果与本技术中图1至图3对应的各个方法实施例相同,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。
162.本技术实施例还提供了一种训练设备,请参阅图6,图6是本技术实施例提供的训练设备一种结构示意图,训练设备900上可以部署有图4对应实施例中所描述的代码保护装置,用于实现图2对应实施例中训练设备的功能。具体的,训练设备900由一个或多个服务器实现,训练设备900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)922(例如,一个或一个以上处理器)和存储器932,一个或一个以上存储应用程序942或数据944的存储介质930(例如一个或一个以上海量存储设备)。其中,存储器932和存储介质930可以是短暂存储或持久存储。存储在存储介质930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对训练设备中的一系列指令操作。更进一步地,中央处理器922可以设置为与存储介质930通信,在训练设备900上执行存储介质930中的一系列指令操作。
163.训练设备900还可以包括一个或一个以上电源926,一个或一个以上有线或无线网
络接口950,一个或一个以上输入输出接口958,和/或,一个或一个以上操作系统941,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等等。
164.本技术实施例中,在一种情况下,中央处理器922,用于执行图2对应实施例中所描述的训练装置执行的步骤。中央处理器922执行前述各个步骤的具体方式,与本技术中图2对应的各个方法实施例基于同一构思,其带来的技术效果与本技术中图2对应的各个方法实施例相同,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。
165.本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质包括计算机指令,计算机指令在被处理器执行时用于实现本技术实施例中任意一种代码保护方法的技术方案。
166.本技术实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图1至图3所示实施例描述的方法中的步骤。
167.本技术实施例提供的执行设备以及训练设备具体可以为芯片,芯片包括:处理单元和通信单元,处理单元例如可以是处理器,通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使芯片执行上述图1至图3所示实施例描述的方法。可选地,存储单元为芯片内的存储单元,如寄存器、缓存等,存储单元还可以是无线接入设备端内的位于芯片外部的存储单元,如只读存储器(read-only memory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,ram)等。
168.本技术虽然以较佳实施例公开如上,但其并不是用来限定本技术,任何本领域技术人员在不脱离本技术的精神和范围内,都可以做出可能的变动和修改,因此本技术的保护范围应当以本技术权利要求所界定的范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献