代码段保护方法、装置、计算机设备和存储介质与流程

文档序号:18466231发布日期:2019-08-17 02:29阅读:160来源:国知局
代码段保护方法、装置、计算机设备和存储介质与流程

本申请涉及计算机技术领域,特别是涉及一种代码段保护方法、装置、计算机设备和存储介质。



背景技术:

随着计算机技术的发展,需要开发越来越多的应用程序,而对应用程序进行开发之后,为了避免应用程序中的核心程序段被盗用,则会对核心程序段进行混淆。

传统地,在混淆过程中,是统一对待保护程序段进行混淆,而当待保护程序段中包含有通用程序段时,需要根据通用程序段实现相应的反射机制,而若对通用程序段进行了混淆则无法正常实现反射机制,因此通用程序段则无法进行混淆,导致整个待保护程序段均无法进行混淆,导致对代码段进行混淆而得到保护的灵活性差。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够提高混淆灵活性的代码段保护方法、装置、计算机设备和存储介质。

一种代码段保护方法,所述方法包括:

获取待保护代码段,所述待保护代码段携带有代码段标识;

查询所述待保护代码段对应的复杂等级,所述复杂等级为预先设定的,用于表征所述待保护代码段的复杂度的参考指标;

当所述复杂等级超过预设等级时,则从所述代码段标识中选取核心标识,根据所述核心标识从所述待保护代码段中提取核心代码段;

将所述核心代码段按照混淆逻辑进行混淆得到混淆代码段;

根据所述混淆代码段得到所述待保护代码段对应的目标代码段。

在一个实施例中,所述将所述核心代码段按照混淆逻辑进行混淆得到混淆代码段,包括:

获取混淆逻辑,根据所述混淆逻辑从所述核心代码段中查询所包含的待混淆信息;

根据所述混淆逻辑查询与所述待混淆信息对应的替换信息;

采用所述替换信息对所述待混淆信息进行替换得到混淆代码段。

在一个实施例中,所述采用所述替换信息对所述待混淆信息进行替换得到目标代码段之后,包括;

将所述混淆代码段存储至加密文件夹,并获取所述加密文件夹对应的第一存储路径;

查询所述待保护代码段中与所述核心代码段关联的第二存储路径;

将所述第二存储路径更改为所述第一存储路径。

在一个实施例中,所述根据所述混淆代码段得到所述待保护代码段对应的目标代码段之后,包括:

查询所述混淆代码段对应的第一子代码段标识;

并查询所述核心代码段对应的第二子代码段标识;

将所述第一子代码段标识与所述第二子代码段标识建立映射关系。

在一个实施例中,所述将所述第一子代码段标识与所述第二子代码段标识建立映射关系之后,包括:

接收运行所述目标代码段的运行指令,根据所述运行指令运行所述目标代码段得到运行结果;

查询所述运行结果中是否包含运行错误状态标识,当包含有所述运行错误状态标识时,则查询与所述运行错误状态标识对应的第二子代码段标识;

根据所述映射关系,查询所述第二子代码段标识关联的第一子代码段标识,并将所述第一子代码段标识与第二子代码段标识输出。

在一个实施例中,所述查询所述待保护代码段对应的复杂等级之后,包括:

当所述复杂等级未超过预设等级时,则根据所述代码段标识查询过滤字段;

将所述过滤字段添加至所述待保护代码段中;

对添加了所述过滤字段的待保护代码段采用混淆逻辑进行混淆得到目标代码段。

一种代码段保护装置,所述装置包括:

获取模块,用于获取待保护代码段,所述待保护代码段携带有代码段标识;

查询模块,用于查询所述待保护代码段对应的复杂等级,所述复杂等级为预先设定的,用于表征所述待保护代码段的复杂度的参考指标;

提取模块,用于当所述复杂等级超过预设等级时,则根据所述代码段标识从所述待保护代码段中提取核心代码段;

第一混淆模块,用于将所述核心代码段按照混淆逻辑进行混淆得到混淆代码段;

生成模块,用于根据所述混淆代码段得到所述待保护代码段对应的目标代码段。

在一个实施例中,所述第一混淆模块,包括:

第一查询单元,用于获取混淆逻辑,根据所述混淆逻辑从所述核心代码段中查询所包含的待混淆信息;

第二查询单元,用于根据所述混淆逻辑查询与所述待混淆信息对应的替换信息;

替换单元,用于采用所述替换信息对所述待混淆信息进行替换得到混淆代码段。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取待保护代码段,所述待保护代码段携带有代码段标识;

查询所述待保护代码段对应的复杂等级,所述复杂等级为预先设定的,用于表征所述待保护代码段的复杂度的参考指标;

当所述复杂等级超过预设等级时,则从所述代码段标识中选取核心标识,根据所述核心标识从所述待保护代码段中提取核心代码段;

将所述核心代码段按照混淆逻辑进行混淆得到混淆代码段;

根据所述混淆代码段得到所述待保护代码段对应的目标代码段。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取待保护代码段,所述待保护代码段携带有代码段标识;

查询所述待保护代码段对应的复杂等级,所述复杂等级为预先设定的,用于表征所述待保护代码段的复杂度的参考指标;

当所述复杂等级超过预设等级时,则从所述代码段标识中选取核心标识,根据所述核心标识从所述待保护代码段中提取核心代码段;

将所述核心代码段按照混淆逻辑进行混淆得到混淆代码段;

根据所述混淆代码段得到所述待保护代码段对应的目标代码段。

上述代码段保护方法、装置、计算机设备和存储介质,当待保护代码段中存在有通用代码段时,无需对整体的代码段均不进行混淆,可以查询待保护代码段的复杂等级,当复杂等级超过预设等级时,从代码段标识中选取核心标识,根据核心标识从待保护代码段中提取到对应的核心代码段,进而对提取到的核心代码段进行混淆得到混淆代码段,根据混淆代码段得到待保护代码段对应的目标代码段,从而可以提高代码保护的灵活性。

附图说明

图1为一个实施例中代码段保护方法的应用场景图;

图2为一个实施例中代码段保护方法的流程示意图;

图3为一个实施例中代码段混淆步骤的流程示意图;

图4为一个实施例中代码段保护装置的结构框图;

图5为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的代码段保护方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。服务器104从终端102获取到待保护代码段,待保护代码段携带有代码段标识,服务器104查询待保护代码段对应的复杂等级,当复杂等级超过预设等级时,则服务器104从代码段标识中选取核心标识,根据核心标识从待保护代码段中提取核心代码段,服务器104将提取到的核心代码段按照混淆逻辑进行混淆得到混淆代码段,服务器104根据混淆代码段得到待保护代码段对应的目标代码段。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种代码段保护方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:

s202:获取待保护代码段,待保护代码段携带有代码段标识。

具体地,待保护代码段是指需要全部或者部分进行混淆的代码段,也即可以是采用对应的混淆规则将相应的代码段中包含的信息进行替换,得到功能上等价但是难于理解的形式,例如,可以对待保护代码段中不同的子代码段的格式或者名称等进行替换等。代码段标识是指包含在待保护代码段中的不同子代码段的标志,可以是代码段中的类标识,方法标识,参数标识等,例如,代码段标识是代码段中包含的类名称、方法名称、参数类型、参数名称等。具体地,服务器接收到终端发送的待保护代码段,且待保护代码段上携带有相应的代码段标识。可以是,服务器接收到终端发送的待保护代码段,待保护代码段中携带有相应的类名称、方法名称、具体参数名称,根据代码段标识可以查询到是否存在有过待滤代码段,当存在有待过滤代码段时,由于若对待过滤代码段也进行混淆时,则无法实现相应的反射机制,因此,待过滤代码段不能进行混淆,则当服务器根据代码段标识查找到待过滤代码段时,则待保护代码段不能进行整体混淆。

需要说明的是,待过滤代码段是指包含在待保护代码段中不能进行混淆的代码段。反射机制是指运行状态中,对于任意一个类,均可获取到该类中的所有属性和方法。查询待过滤代码段还可以获取到相应的配置文件夹,查询配置文件夹中是否包含有相应的待过滤代码段对应的代码段标识,当存在有待过滤代码段对应的代码段标识时,则待保护代码段中包含有待过滤代码段,配置文件夹是指在对不同的代码段进行混淆之前,存储有无需进行混淆的代码段的文件夹。

s204:查询待保护代码段对应的复杂等级,复杂等级为预先设定的,用于表征待保护代码段的复杂度的参考指标。

具体地,复杂等级是指表征待保护代码段的复杂程度的参考指标,可以是,当复杂等级越高则核心代码段越复杂。具体地,当服务器获取到待保护代码段,则根据复杂度判断逻辑查询待保护代码段的复杂等级。可以是,服务器获取到待保护代码段时,则查询待保护代码段的代码行数,根据代码行数,获取到预存储的与代码行数对应的复杂等级,其中根据代码行数预设的复杂等级可以是当代码行数越多,则代码的复杂等级越高;还可以是查询待保护代码是否添加有重要度标签,当重要度标签显示越重要,则复杂等级越高。。

s206:当所述复杂等级超过预设等级时,则从所述代码段标识中选取核心标识,根据所述核心标识从所述待保护代码段中提取核心代码段。

具体地,核心标识是指预存储的,待保护代码段中包含的表征实现核心功能的子代码段的标志,可以是待保护代码段中包含的实现核心功能的代码段的类标识,方法标识,参数标识等,例如,核心标识是待保护代码段中包含的核心代码段对应的类名称、方法名称、参数类型、参数名称等。核心代码段是指包含在待保护代码段中实现相应核心功能的代码段,例如,在应用程序中,核心功能为采集图像功能,则核心代码段为采集相应的图像的代码段。

具体地,服务器当获取到待保护代码段的复杂等级时,则获取预存储的预设等级,将获取到的待保护代码段的复杂等级与预设等级进行比较,当复杂等级超过预设等级时,则获取到代码段标识,将代码段标识与预设的待比对核心标识进行比对,当比对成功时,则比对成功代码段标识作为核心标识,该核心标识所对应的子代码段为核心代码段。

可以是,服务器得到待保护代码段对应的复杂等级时,则将获取到的复杂等级与预设等级进行比较,当复杂等级超过预设等级时,则服务器获取到预设的核心代码标识,将代码段标识与预设的待比对核心标识进行比对,当比对成功时,则该代码段标识为核心标识,因此该核心标识与下一代码段标识之间对应的子代码段即为核心代码段,将核心代码段进行提取,从而仅仅保留核心代码段对应的简单框架,如相应的参数设定的框架,也即被保留下的框架可以作为框架核心代码段,进而将提取的核心代码段生成单独的核心代码段,该单独的核心代码段可以作为代理核心代码段,也即在执行该待保护代码段时,执行至框架核心代码段时则可以跳转至代理核心代码段,从而直接执行代理核心代码段,该代理核心代码段具有新的代码标识也即代理代码段标识,如相应的代码段名称等,而将框架核心代码段对应的代码段标识仍不变,也即是未提取出来的核心代码段对应的代码段标识仍不变。

s208:将核心代码段按照混淆逻辑进行混淆得到混淆代码段。

具体地,混淆逻辑是指对代码段进行混淆,也即将代码段中相应的代码格式等进行替换,从而得到不易查找的代码段的相关逻辑规则。混淆代码段是指按照混淆逻辑进行替换后的得到的难于理解,但是功能上与核心代码段等价的代码段。当服务器将核心代码段进行提取,则查询预存储的混淆逻辑,进而服务器将提取到的核心代码段按照混淆逻辑进行混淆,也即可以是按照混淆逻辑将提取到的核心代码段进行相应的格式等进行替换从而得到混淆代码段。可以是,服务器提取到核心代码段,是将核心代码段作为代理核心代码段,从而获取到对应的混淆逻辑,如混淆逻辑是将代理核心代码段对应的核心代码标识,如代理核心代码段的代码段名称进行替换,也可以是将代理核心代码段中进行大小写替换等。

s210:根据混淆代码段得到待保护代码段对应的目标代码段。

具体地,目标代码段是指对待保护代码段中包含的核心功能对应的代码段进行混淆,而对不能进行混淆的代码段不进行混淆的代码段。当服务器得到混淆代码段时,则将混淆代码段,框架核心代码段以及待保护代码段中包含的待过滤代码段作为目标代码段。可以是,服务器将核心代码段进行提取生成代理核心代码段,且待保护代码段中保留有框架核心代码段,则将代理核心代码段与框架核心代码段进行关联,且将将待过滤代码段与核心代理代码段进行关联,从而得到目标代码段,从而该目标代码段中包含有可以进行混淆的实现核心功能的代码段以及不能进行混淆的代码段。

本实施例中,服务器在获取到待保护代码段时,无需对待保护代码段整体进行混淆,从而避免当待保护代码段中存在不能进行混淆的代码段时则整体待保护代码段均无法进行混淆,从而可以提高混淆的灵活性,且可以对核心代码段进行提取并进行混淆,从而提高代码段的安全性。

在一个实施例中,请参见图3,提供一代码段混淆步骤的流程示意图,代码段混淆步骤,也即将核心代码段按照混淆逻辑进行混淆得到混淆代码段,包括:获取混淆逻辑,根据混淆逻辑从核心代码段中查询所包含的待混淆信息;提取待混淆信息对应的混淆特征,根据混淆特征查询与待混淆信息对应的替换信息;采用替换信息对待混淆信息进行替换得到混淆代码段。

具体地,混淆逻辑是指预设的选取到待混淆信息的逻辑,混淆逻辑中可以预设有相应的与代码段相关联的标识,可以是,混淆逻辑可以预设有相应的代码名称、类名称、变量名称或者待转换大小写的相关代码标识。待混淆信息是指包含在待保护代码段中可以采用混淆逻辑进行混淆的相关信息,可以是根据混淆逻辑对应的核心代码段对应的代码段标识,如代码段名称等,也可以是替换代码行中的大小写等。替换信息是指可以替换混淆信息的详细信息,可以是,采用通用的字符替换原有的代码段名称等。具体地,服务器提取到核心代码段,从而将提取到的核心代码段作为代理核心代码段,服务器获取到混淆逻辑,根据混淆逻辑查询代理核心代码段中包含的不同待混淆信息,进而服务器根据的核心代码段对应的代码段标识查询到替换信息,采用替换信息将待混淆信息进行替换得到混淆代码段。可以是,当服务器提取到核心代码段,将该核心代码段作为代理核心代码段,获取到混淆逻辑,根据混淆逻辑对应的不同标识与代理核心代码段对应的不同标识进行比对,并根据混淆逻辑选择相应的代码行,从而将比对成功的标识以及代码行作为待混淆信息,进而服务器根据混淆逻辑,查询到待混淆信息对应的替换信息,如通用的字符标识,转换字符等,将核心代码段对应的比对成功的标识以及代码行按照替换信息进行替换,如将代码段对应的比对成功的标识按照通用的字符标识进行替换,将代码行中包含的不同代码进行大小写的替换,从而替换得到混淆代码段,其中,比对成功的标识可以是核心代码段对应的代码段名称,参数名称等。

本实施例中,服务器在从核心代码段中查询包含的待混淆信息时,则可以查询到待混淆信息对应的替换信息,进而采用替换信息对待混淆信息进行替换得到混淆代码段,对核心代码段进行混淆简单易行,混淆效率高。

在一个实施例中,采用替换信息对待混淆信息进行替换得到目标代码段之后,包括;将混淆代码段存储至加密文件夹,并获取加密文件夹对应的第一存储路径;查询待保护代码段中与核心代码段关联的第二存储路径;将第二存储路径更改为第一存储路径。

具体地,加密文件夹是指存储有所有的待保护代码段中的混淆代码段的文件夹。第一存储路径是指可以查找到加密文件夹的查询路径,从而根据该查询路径可以查询到混淆代码段。第二存储路径是指待保护代码段中未经混淆的核心代码段关联的查询路径,通常该查询路径可以是与待保护代码段相同的存储路径。具体地,当服务器得到混淆代码段时,通常混淆代码段是与待保护代码段保存至相同的路径,为了进一步提高安全性,则服务器获取到加密文件夹,将混淆代码段存储至加密文件夹,进而获取到存储到与加密文件夹对应的第一存储路径,服务器从待保护代码段查询与核心代码段关联的第二存储路径,进而将第二存储路径更改为第一存储路径,也即可以保证在执行对待保护代码段进行混淆后得到的目标代码段时,当执行至核心代码段时,由于核心代码段在进行混淆后仅仅保留了框架核心代码段,从而可以跳转到加密文件夹准确查找到混淆代码段,从而执行对应的混淆代码段。

本实施例中,服务器可以将混淆代码段单独存储至加密文件夹,可以进一步提高核心代码的安全性,且服务器可以获取到加密文件夹对应的第一存储路径,并查询代码段中与核心代码段关联的第二存储路径,将第二存储路径更改为第一存储路径,保证执行混淆代码段正确。

在一个实施例中,根据混淆代码段得到待保护代码段对应的目标代码段之后,包括:查询混淆代码段对应的第一子代码段标识;并查询核心代码段对应的第二子代码段标识;将第一子代码段标识与第二子代码段标识建立映射关系。

具体地,第一子代码段标识是指混淆代码段对应的代码段标识,可以是混淆代码段所对应的代码段名称等。第二子代码段标识是指核心代码段所对应的代码段标识,可以是未进行混淆时的核心代码段对应代码段名称等。具体地,服务器对核心代码段进行混淆之后得到混淆代码段,进而从混淆代码段中查询得到第一子代码标识,进而服务器再查询到核心代码段对应的第二子代码标识,进而将第一子代码标识与第二子代码标识进行关联得到映射关系,也即服务器可以通过映射关系直接查询到对应的子代码段标识。可以是,服务器得到混淆代码段时,则从混淆代码段中查询是否包含有相应的预设代码段名称,该预设代码段名称可以是包含在替换信息中的包含的代码段名称等,当查询到包含有预设代码段名称时,则该预设代码段名称为第一子代码段标识,进而服务器从核心代码段中查询第二子代码段标识,也即服务器可以直接获取到预设的代码段名称,该代码段名称即为第二子代码段标识,进而服务器将第一子代码标识与第二子代码标识建立映射关系。

本实施例中,当服务器获取到混淆代码段的第一子代码段标识,并获取到核心代码段对应的第二子代码段标识,则可以将第一子代码段标识与第二子代码段标识建立映射关系,从而可以通过混淆代码段直接查找到核心代码段,当混淆代码段出现错误时方便查询,提高查询效率。

在一个实施例中,将第一子代码段标识与第二子代码段标识建立映射关系之后,包括:接收运行目标代码段的运行指令,根据运行指令运行保护代码段得到运行结果;查询运行结果中是否包含运行错状态标识,当包含有运行错误状态标识时,则查询与运行错误状态标识对应的第二子代码段标识;根据映射关系,查询第二子代码段标识关联的第一代码标识,并将第一代码标识输出。

具体地,运行错误状态标识是指当运行目标代码段出现错误时对应的错误提示信息,且该错误状态标识可以显示目标代码段对应的运行错误原因,以及对应运行错误的代码行。

具体地,当对待保护代码段中的核心代码段进行混淆得到目标代码段之后,还可以先对目标代码段进行运行。服务器接收到运行目标代码段的运行指令,服务器根据运行指令逐行运行得到的目标代码段从而得到运行结果,当服务器查询得到运行结果为无错误时,则将相应的运行通过结果输出。另外,当运行结果中包含有错误状态标识,则查询错误状态标识对应的代码行,查询代码行所对应的混淆代码段的第二子代码段标识,进而根据映射关系,服务器查询到与第二子代码段标识所对应的第一子代码段标识,并将第一子代码段标识与第二子代码段标识进行输出,从而排查运行出现运行错误的原因,可以查询是否是未混淆的核心代码段出现问题,是否是混淆逻辑导致混淆出错从而对目标代码混淆出错。

可以是,服务器在显示界面上显示有相应的运行按钮,用户点击运行按钮则生成运行指令,进而服务器根据生成的运行指令逐行运行目标代码段,当运行至混淆代码段时,则通过存储的第一存储路径查找到混淆代码段,从而完成目标代码段的运行,进而服务器生成运行结果,当运行结果为无错误时,则输出运行通过的运行结果;当运行结果中出现错误时,则查询运行错误状态标识,根据运行错误状态标识查询对应的代码行,进而根据该代码行查询到包含有该代码行的混淆代码段,从而查找到包含该代码行的混淆代码段对应的第二子代码段标识,由于该第二子代码段标识对应的为混淆代码段,则为了查询目标代码段运行出现运行错误状态标识的原因,则可以查询到混淆代码段对应的核心代码段,也即可以根据第二子代码段标识以及映射关系,查询到第一子代码段标识,将第一子代码段标识与第二子代码段标识输出。

本实施例中,在服务器生成目标代码段之后,可以对目标代码段进行预先运行,从而得到运行结果,从而可以预先验证目标代码段的运行结果,避免直接使用目标代码段导致运行失败,从而可以保证目标代码段的准确性,进而当运行结果为运行错误时,则查询运行错误状态标识,根据运行错误状态标识,查询第二子代码段标识,并根据映射关系查询第二子代码段标识对应的第一子代码段标识,保证在目标代码段出现错误时查询错误全面并准确。

在一个实施例中,查询待保护代码段对应的复杂等级之后,包括:当复杂等级未超过预设等级时,则根据代码段标识查询过滤字段;将过滤字段添加至待保护代码段中;对添加了过滤字段的待保护代码段采用混淆逻辑进行混淆得到目标代码段。

具体地,过滤字段是指添加有相应的注释字段,从而在对待保护代码段进行混淆时,则跳过添加了注释字段的代码段,从而不对添加了注释字段的代码段进行混淆。具体地,当服务器查询到待保护代码段对应的复杂等级未超过预设等级时,则逐行查询待保护代码段中是否包含有无需进行过滤的代码段则简单易行,从而服务器比较待保护代码段的复杂等级,该复杂等级未超过预设等级时,则服务器获取到相应的过滤字段,进而服务器根据代码段标识,查询待保护代码段中包含的过滤代码段,进而服务器对过滤代码段添加有过滤字段,服务器则可以根据混淆逻辑对待保护代码段中未添加有过滤字段的代码段直接进行混淆得到的为混淆代码段,将混淆代码段以及添加了过滤字段的待过滤代码段关联作为目标代码段。

可以是,服务器获取到过滤代码段对应的代码段标识,将过滤代码段标识与包含在待保护代码段中的相应标识进行匹配,当匹配成功时,则该匹配成功的代码段标识所对应的子代码段为过滤代码段,进而获取到相应的过滤字段,如相应的注释字段,将注释字段添加至过滤代码段中,服务器获取到相应的混淆逻辑,可以是对相应的子代码段的代码段名称进行替换,或者对代码行进行大小写替换等,从而可以得到混淆代码段,进而将混淆代码段与过滤代码段进行关联得到目标代码段,且当服务器得到相应的目标代码段时,则可以将混淆代码段与未经过混淆的代码段建立相应的映射关系,进而可以运行相应的目标代码段,查询运行结果是否有错误,当不存在错误时,则可以直接输出运行成功的提示信息,当运行失败时,则查询到具体失败的子代码段,并将相关的子代码段标识进行输出。

本实施例中,当服务器查询到待保护代码段的复杂等级未超过预设等级时,则可以直接获取到相应的过滤字段,并将过滤字段添加至待保护代码段中,从而采用混淆逻辑对待保护代码段进行混淆得到目标代码段,则由于复杂等级未超过预设等级,则直接对待保护代码段添加相应的过滤字段简单易行,则可以提高代码段进行保护的效率。

在一个实施例中,以待保护代码段为在应用程序中的拍摄功能的代码段为例进行举例说明,当服务器接收到待保护代码段为采集图像功能的代码段,、,进而服务器查询该待保护代码段的复杂度等级,可以是查询代码段的代码行数,或者是否携带有重要等级表示,进而确定复杂等级,可以是代码行数越多则越复杂,或者是携带的重要等级越重要,则复杂等级越高,服务器当得到复杂等级时,则获取到预设等级,将复杂等级与预设等级进行比较,当复杂等级超过预设等级时,则该待保护代码段逐行查询是否有待过滤代码段则耗时较长,因此,根据相应的代码段标识,如相应的代码段名称查询到相应的核心代码段,如核心代码段为代码段名称为cameraactivity的代码段,进而将该代码段进行提取建立代理核心代码段,如生成一个类名称为cameraapiproxy的代理代码段,该代理代码段也即为生成的代理核心代码段,而代码段名称为cameraactivity中仅仅是保留相应的框架,进而将类名称为cameraapiproxy的代码段进行混淆,如进行代码段名称的替换,替换为相应的通识字符,如a,b,c的通识字符,或者将相应的代码行进行大小写替换等,进而得到混淆代码段,并将混淆代码段与类名称为cameraactivity中保留的框架的代码段进行关联,且与待保护代码段中未经过混淆的代码段进行关联得到目标代码段。

另外,服务器可以将类名称为cameraapiproxy的代码段进行混淆得到的混淆代码段添加至存储有不同的混淆代码段的加密文件夹中,并获取到加密文件夹中的第一存储路径,进而将类名称为cameraactivity的代码段关联的第二存储路径更改为第一存储路径,从而使得在执行相应的目标代码段时可以准确查找到对应的混淆代码段,且服务器将混淆后的类名称为cameraapiproxy的代码段的代码段标识,与未经混淆的类名称为cameraactivity的代码段的代码段标识进行关联,可以是将两者的类名称进行关联,从而得到映射关系,进而服务器可以接收运行指令,根据运行指令,运行得到的目标代码段,当目标代码段运行正确时,则直接输出运行正确的提示信息,当运行出现错误时,则从运行结果中查询到运行错误状态标识,如提示具体代码行的错误原因,则根据运行错误的代码行查询该代码行是否是包含在类名称为cameraapiproxy的代码段中,当为包含在该代码段中,则通过映射关系也查询到类名称为cameraactivity的代码段,从而将两个代码标识均进行输出,便于查询具体错误。

另外,当服务器接收到待保护代码段的复杂等级未超过预设等级时,则可以直接将待保护代码段中无需进行混淆的代码段,也即过滤代码段添加相应的过滤字段,过滤字段可以是,如待保护代码段中某个字段不混淆.则添加@keepfromproguardpublicclassuser{},待保护代码段中某个属性不混淆,则添加@keepfromproguardpublicintid,待保护代码段中单个方法不混淆,择天记啊@keepfromproguardpublicbooleanisvalid(){},从而添加了上述的过滤字段,则可以对待保护代码段整体进行混淆,也即在混淆过程中,会跳过添加了上述过滤字段的代码段,从而提高待保护代码段混淆的效率。

应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种代码段保护装置,包括:获取模块410、查询模块420、第一混淆模块430和生成模块440,其中:

获取模块410,用于获取待保护代码段,待保护代码段携带有代码段标识。

查询模块420,用于查询待保护代码段对应的复杂等级,复杂等级为预先设定的,用于表征待保护代码段的复杂度的参考指标;

提取模块430,用于当复杂等级超过预设等级时,则从代码段标识中选取核心标识,根据核心标识从待保护代码段中提取核心代码段。

第一混淆模块440,用于将提取到的核心代码段按照混淆逻辑进行混淆得到混淆代码段。

生成模块450,用于根据混淆代码段得到待保护代码段对应的目标代码段。

在一个实施例中,第一混淆模块440,包括:

第一查询单元,用于获取混淆逻辑,根据所述混淆逻辑从核心代码段中查询所包含的待混淆信息。

第二查询单元,用于根据所述混淆逻辑查询与待混淆信息对应的替换信息。

替换单元,用于采用替换信息对待混淆信息进行替换得到混淆代码段。

在一个实施例中,代码段保护装置400,包括。

存储模块,用于将混淆代码段存储至加密文件夹,并获取加密文件夹对应的第一存储路径。

路径提取模块,用于查询待保护代码段中与核心代码段关联的第二存储路径。

更改模块,用于将第二存储路径更改为第一存储路径。

在一个实施例中,代码段保护装置400,包括:

第一标识查询单元,用于查询混淆代码段对应的第一子代码段标识。

第二标识查询单元,用于并查询核心代码段对应的第二子代码段标识。

建立模块,用于将第一子代码段标识与第二子代码段标识建立映射关系。

在一个实施例中,代码段保护装置400,包括:

接收模块,用于接收运行目标代码段的运行指令,根据运行指令运行目标代码段得到运行结果。

第三标识查询模块,用于查询运行结果中是否包含运行错误状态标识,当包含有运行错误状态标识时,则查询与运行错误状态标识对应的第二子代码段标识。

输出模块,用于根据映射关系,查询第二子代码段标识关联的第一子代码段标识,并将第一子代码段标识与第二子代码段标识输出。

在一个实施例中,代码段保护装置400,包括:

过滤字段查询模块,用于当复杂等级未超过预设等级时,则根据代码段标识查询过滤字段。

添加模块,用于将过滤字段添加至待保护代码段中。

第二混淆模块,用于对添加了过滤字段的待保护代码段采用混淆逻辑进行混淆得到目标代码段。

关于代码段保护装置的具体限定可以参见上文中对于代码段保护方法的限定,在此不再赘述。上述代码段保护装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储代码段保护数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码段保护方法。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取待保护代码段,待保护代码段携带有代码段标识;查询待保护代码段对应的复杂等级,复杂等级为预先设定的,用于表征待保护代码段的复杂度的参考指标;当复杂等级超过预设等级时,则从代码段标识中选取核心标识,根据核心标识从待保护代码段中提取核心代码段;将核心代码段按照混淆逻辑进行混淆得到混淆代码段;根据混淆代码段得到待保护代码段对应的目标代码段。

在一个实施例中,处理器执行计算机程序时实现将核心代码段按照混淆逻辑进行混淆得到混淆代码段,包括:获取混淆逻辑,根据所述混淆逻辑从核心代码段中查询所包含的待混淆信息;根据所述混淆逻辑查询与待混淆信息对应的替换信息;采用替换信息对待混淆信息进行替换得到混淆代码段。

在一个实施例中,处理器执行计算机程序时实现采用替换信息对待混淆信息进行替换得到目标代码段之后,包括;将混淆代码段存储至加密文件夹,并获取加密文件夹对应的第一存储路径;查询待保护代码段中与核心代码段关联的第二存储路径;将第二存储路径更改为第一存储路径。

在一个实施例中,处理器执行计算机程序时实现根据混淆代码段得到待保护代码段对应的目标代码段之后,包括:查询混淆代码段对应的第一子代码段标识;并查询核心代码段对应的第二子代码段标识;将第一子代码段标识与第二子代码段标识建立映射关系。

在一个实施例中,处理器执行计算机程序时实现将第一子代码段标识与第二子代码段标识建立映射关系之后,包括:接收运行目标代码段的运行指令,根据运行指令运行目标代码段得到运行结果;查询运行结果中是否包含运行错误状态标识,当包含有运行错误状态标识时,则查询与运行错误状态标识对应的第二子代码段标识;根据映射关系,查询第二子代码段标识关联的第一子代码段标识,并将第一子代码段标识与第二子代码段标识输出。

在一个实施例中,处理器执行计算机程序时实现查询待保护代码段对应的复杂等级之后,包括:当复杂等级未超过预设等级时,则根据代码段标识查询过滤字段;将过滤字段添加至待保护代码段中;对添加了过滤字段的待保护代码段采用混淆逻辑进行混淆得到目标代码段。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取待保护代码段,待保护代码段携带有代码段标识;查询待保护代码段对应的复杂等级,所述复杂等级为预先设定的,用于表征所述待保护代码段的复杂度的参考指标;当复杂等级超过预设等级时,则从所述代码段标识中选取核心标识,根据所述核心标识从待保护代码段中提取核心代码段;将核心代码段按照混淆逻辑进行混淆得到混淆代码段;根据混淆代码段得到待保护代码段对应的目标代码段。

在一个实施例中,计算机程序被处理器执行时实现将核心代码段按照混淆逻辑进行混淆得到混淆代码段,包括:获取混淆逻辑,根据所述混淆逻辑从核心代码段中查询所包含的待混淆信息;根据所述混淆逻辑查询与待混淆信息对应的替换信息;采用替换信息对待混淆信息进行替换得到混淆代码段。

在一个实施例中,计算机程序被处理器执行时实现采用替换信息对待混淆信息进行替换得到目标代码段之后,包括;将混淆代码段存储至加密文件夹,并获取加密文件夹对应的第一存储路径;查询待保护代码段中与核心代码段关联的第二存储路径;将第二存储路径更改为第一存储路径。

在一个实施例中,计算机程序被处理器执行时实现根据混淆代码段得到待保护代码段对应的目标代码段之后,包括:查询混淆代码段对应的第一子代码段标识;并查询核心代码段对应的第二子代码段标识;将第一子代码段标识与第二子代码段标识建立映射关系。

在一个实施例中,计算机程序被处理器执行时实现将第一子代码段标识与第二子代码段标识建立映射关系之后,包括:接收运行目标代码段的运行指令,根据运行指令运行目标代码段得到运行结果;查询运行结果中是否包含运行错误状态标识,当包含有运行错误状态标识时,则查询与运行错误状态标识对应的第二子代码段标识;根据映射关系,查询第二子代码段标识关联的第一子代码段标识,并将第一子代码段标识与第二子代码段标识输出。

在一个实施例中,计算机程序被处理器执行时实现查询待保护代码段对应的复杂等级之后,包括:当复杂等级未超过预设等级时,则根据代码段标识查询过滤字段;将过滤字段添加至待保护代码段中;对添加了过滤字段的待保护代码段采用混淆逻辑进行混淆得到目标代码段。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1