CN114185766A - 一种代码检测方法、装置、电子设备及存储介质 - Google Patents

一种代码检测方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114185766A
CN114185766A CN202111334087.2A CN202111334087A CN114185766A CN 114185766 A CN114185766 A CN 114185766A CN 202111334087 A CN202111334087 A CN 202111334087A CN 114185766 A CN114185766 A CN 114185766A
Authority
CN
China
Prior art keywords
code block
code
detected
encryption
encrypted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111334087.2A
Other languages
English (en)
Inventor
马义虎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202111334087.2A priority Critical patent/CN114185766A/zh
Publication of CN114185766A publication Critical patent/CN114185766A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/243Classification techniques relating to the number of classes
    • G06F18/24323Tree-organised classifiers

Abstract

本申请实施例提供一种代码检测方法、装置、电子设备及存储介质,方法包括:获取待检测代码块,提取待检测代码块的加密特征,加密特征用于判断待检测代码块是否加密,将加密特征输入预先训练好的加密识别模型,输出与待检测代码块对应的识别结果,识别结果表示待检测代码块是加密代码块或未加密代码块。采用本方案进行代码检测,无需人为参与,提高了代码检测的效率,并且基于模型对代码进行识别,相比于人为识别提高了识别准确度。

Description

一种代码检测方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种代码检测方法、装置、电子设备及存储介质。
背景技术
目前,在对客户端进行分析时,通常需要获取客户端的内容消费数据和内容品类等数据,上述数据通常需要从客户端的请求接口中抓取。但是目前有一些客户端的请求接口设置有基于一定加密规则设置的签名校验,而针对此类客户端通常无法抓取相关数据。因此,目前在对客户端进行分析时,通常会先确定客户端是否设置有签名校验。
目前,确定客户端是否设置有签名校验的方式,通常是对客户端的安装包进行反编译,得到反编译代码,然后人为的一个一个去查找代码文件并查看是不是包含加密代码,若确定包含加密代码,则确定该客户端设置有签名校验,此种方式需要人为的对代码文件逐个进行查看,因此效率较低。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种代码检测方法、装置、电子设备及存储介质。
第一方面,本申请提供了一种代码检测方法,包括:
获取待检测代码块;
提取所述待检测代码块的加密特征,所述加密特征用于判断所述待检测代码块是否加密;
将所述加密特征输入预先训练好的加密识别模型,输出与所述待检测代码块对应的识别结果,所述识别结果表示所述待检测代码块是加密代码块或未加密代码块。
作为一种可能的实现方式,所述加密特征包括下述特征中的至少一种:
方法名、方法返回值和加密算法内容。
作为一种可能的实现方式,所述获取待检测代码块,包括:
获取安装包;
对所述安装包进行反编译,得到反编译代码;
从所述反编辑代码中提取至少一个代码块,同一代码块中的代码属于同一函数方法,不同代码块中的代码属于不同函数方法;
选取任一所述代码块作为待检测代码块。
作为一种可能的实现方式,所述加密识别模型采用下述方式训练:
获取多个代码块样本和所述代码块样本的标注结果,其中,所述标注结果用于指示所述代码块样本是否为加密代码块;
获取多个所述代码块样本的加密特征;
以多个所述代码块样本的加密特征作为样本数据,生成样本数据集;
从所述样本数据集中划分出训练集;
确定初始模型;
利用所述训练集对所述初始模型进行迭代训练直至训练满足预设的结束条件,输出训练好的初始模型;
将训练好的初始模型作为加密识别模型。
作为一种可能的实现方式,所述初始模型为梯度提升树模型。
第二方面,本申请实施例还提供了一种代码检测装置,包括:
获取模块,用于获取待检测代码块;
特征提取模块,用于提取所述待检测代码块的加密特征,所述加密特征用于判断所述待检测代码块是否加密;
识别模块,用于将所述加密特征输入预先训练好的加密识别模型,输出与所述待检测代码块对应的识别结果,所述识别结果表示所述待检测代码块是加密代码块或未加密代码块。
作为一种可能的实现方式,所述获取模块具体用于:
获取安装包;
对所述安装包进行反编译,得到反编译代码;
从所述反编辑代码中提取至少一个代码块,同一代码块中的代码属于同一函数方法,不同代码块中的代码属于不同函数方法;
选取任一所述代码块作为待检测代码块。
作为一种可能的实现方式,所述加密识别模型采用下述方式训练:
获取多个代码块样本和所述代码块样本的标注结果,其中,所述标注结果用于指示所述代码块样本是否为加密代码块;
获取多个所述代码块样本的加密特征;
以多个所述代码块样本的加密特征作为样本数据,生成样本数据集;
从所述样本数据集中划分出训练集;
确定初始模型;
利用所述训练集对所述初始模型进行迭代训练直至训练满足预设的结束条件,输出训练好的初始模型;
将训练好的初始模型作为加密识别模型。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据处理程序,以实现第一方面任一所述的代码检测方法。
第四方面,本申请实施例还提供了一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面任一所述的代码检测方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的一种代码检测方法,获取待检测代码块,提取待检测代码块的加密特征,加密特征用于判断待检测代码块是否加密,将加密特征输入预先训练好的加密识别模型,输出与待检测代码块对应的识别结果,识别结果表示待检测代码块是加密代码块或未加密代码块。采用本方案进行代码检测,无需人为参与,提高了代码检测的效率,并且基于模型对代码进行识别,相比于人为识别提高了识别准确度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据一示例性实施例示出的一种代码检测方法的流程图。
图2是根据另一示例性实施例示出的一种代码检测方法的流程图。
图3是根据一示例性实施例示出的一种代码检测装置的框图。
图4是根据一示例性实施例示出的一种电子设备的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
参见图1,为本申请实施例提供的一种代码检测方法的流程图,如图1所示,该方法可以包括如下步骤:
S11.获取待检测代码块。
本申请实施例提供的代码检测方法主要用于检测代码块是否为加密代码块,其中待检测代码块即为需要检测是否为加密代码块的代码块。
作为一个实施例,在对客户端进行分析的场景下,可以获取客户端的安装包,然后对安装包进行反编译,得到反编译代码,从反编辑代码中提取至少一个代码块,然后选取其中的任一代码块作为待检测代码块。
作为一个实施例,从反编译代码中提取代码块时,可以基于代码中的函数方法进行提取。具体的,从反编辑代码中解析出函数方法,然后将每个函数方法对应的代码分别作为一个代码块,若此得到的每个代码块分别对应一个函数方法,同一代码块中的属于同一函数方法,不同代码块中的代码属于不同函数方法。
通常一个函数方法实现一个功能,以函数方法为粒度进行代码块提取和识别,可以提高代码检测的精度。
S12.提取待检测代码块的加密特征。
在本申请实施例中,加密特征为用于判断待检测代码块是否加密的特征。
作为一个实施例,加密特征包括下述特征中的至少一种:方法名、方法返回值和加密算法。
作为一种可选的实现方式,在提取代码块中的加密特征时,可以对代码块进行解析,提取其中的方法名作为加密特征。其中,方法名指代码块对应的函数方法的名称。通常若代码块的方法名为专属方法名,则其为加密算法的可能性就相对较高。其中专属方法名通常为一些与加密算法相关的名称例如sign、password等。因此,将方法名作为加密特征可以使得基于加密特征判断代码块是否为加密算法代码。
在实际应用中,可以通过调用预设的用于提取方法名的函数来提取代码块的方法名。
作为另一种可选的实现方式,可以提取代码块中的方法返回值作为加密特征,从而可以基于加密特征判断代码块有加密字符串。一般加密规则就是一串字符,比如aDEC&fdkjEk-,或是一串长数字,比如7141139589932323,如果代码块返回的数据是上述类型,则其为加密算法的概率就会很大。
在实际应用中,可以通过预设的用于获取方法返回值的函数来提取代码块中的加密返回值。通常,函数中可以通过return关键字来返回函数的值,也可以通过echo关键字来返回函数的值。在函数中使用return返回函数值时,可以通过调用echo$?函数来捕获函数返回值也即方法返回值。在函数中使用echo返回函数值时,可以通过调用$(func_namearg1 arg2…)函数来捕获函数返回值。
作为又一种可选的实现方式,还可以提取代码块中包含的加密算法内容作为加密特征,从而可以基于加密特征确定代码块是否依赖其他成熟的加密算法。其中,加密算法内容指与特定加密算法相关的内容,比如特定加密算法的代码段、算法名等,而特定加密算法可以是一些成熟加密算法,比如DES加密算法、AES加密算法、RSA加密算法、BASE加密算法、MD5加密算法和/或SHA1加密算法等。通常在代码中很少使用原创的加密算法,因为设计原创加密算法通常需要具备一些很专业的知识,而且如果设计的不好就会很容易被破解,同时业界已经有很多成熟的加密算法,因此,代码中的加密算法通常是现有的成熟加密算法,或在成熟加密算法的基础上加入开发者的设计方案后生成的加密算法,此种方式在保证加密效果的情况下,减少了开发周期。而不管是成熟加密算法,还是基于成熟加密算法设计的加密算法其中通常都包含有成熟加密算法的一些内容,利用这点,可以提取代码块中的加密算法内容作为加密特征,以确定代码块是否依赖了成熟加密算法。
作为一个实施例,可以采用模糊匹配的方式从代码块中提取与特定加密算法相关的内容作为加密算法内容,例如可以预先基于特定加密算法建立加密内容库,加密内容库中可以包括特定加密算法的一些代码段、算法名等内容,然后采用模糊匹配的方式将待检测代码块与加密内容库中的内容进行匹配,从而从待检测代码中提取出与加密内容库中的内容相匹配的内容,作为加密算法内容。通常如果检索到代码块里包含这些成熟加密算法的加密算法内容,则其为加密代码块的概率就较大。
S13.将加密特征输入预先训练好的加密识别模型,输出与待检测代码块对应的识别结果,识别结果表示待检测代码块是加密代码块或未加密代码块。
其中加密识别模型是预先训练好的,以加密特征为输入,以识别结果为输出的模型,通过将待检测代码块的加密特征输入到加密识别模型中即可直接得到表示该代码块是否为加密代码块的识别结果。
至于加密识别模型是如何训练的将在下面结合附图2进行说明,此处先不详述。
本申请实施例提供的一种代码检测方法,获取待检测代码块,提取待检测代码块的加密特征,加密特征用于判断待检测代码块是否加密,将加密特征输入预先训练好的加密识别模型,输出与待检测代码块对应的识别结果,识别结果表示待检测代码块是加密代码块或未加密代码块。采用本方案进行代码检测,无需人为参与,提高了代码检测的效率,并且基于模型对代码进行识别,相比于人为识别提高了识别准确度。
参见图2,为本申请另一实施例提供的一种代码检测方式的流程图,如图2所示,在图1所示的代码检测方法的基础上,训练加密识别模型可以包括如下步骤:
S21.获取多个代码块样本和代码块样本的标注结果。
其中,标注结果用于指示代码块样本是否为加密代码块。
作为一个实施例,可以从预设的反编译代码库中获取代码块样本。其中反编译代码库是指从客户端安装包文件中,解析出来函数方法代码,把这些函数方法代码存储起来,例如存在mysql中,从而形成的的代码库,反编译代码库中存储的主要数据就是一个个独立的函数方法代码。
而代码块的标注结果可以是人为根据代码块的加密特征标注的。
作为一个实施例,标注结果可以为0或1,其中1表示代码块为加密代码块,0表示代码块为未加密代码块。
S22.获取多个代码块样本的加密特征。
作为一个实施例,可以提取代码块样本的方法名、方法返回值和/或加密算法内容作为加密特征,具体提取方式可以参见上述对S12的描述,此处不再赘述。
S23.以多个代码块样本的加密特征作为样本数据,生成样本数据集。
作为一个实施例,针对每个代码块样本,可以对该代码块样本的加密特征进行整合,将整合后的内容作为一个样本数据,然后将多个代码块样本的样本数据组合成样本数据集。
进一步的,在生成样本数据集之前,还可以先基于多个代码块样本的加密特征对多个代码块样本进行清洗,去掉其中不合理的代码块样本,基于剩下的代码块样本的样本数据生成样本数据集。
S24.从样本数据集中划分出训练集。
作为一个实施例,可以按照预设的比例将样本数据集划分为训练集、验证集和测试集,其中预设比例可以根据实际需求设置,例如可以为6:2:2。
S25.确定初始模型。
作为一个实施例,可以根据实际需求选取深度学习模型作为初始模型。例如,可以将梯度提升树模型作为初始模型。梯度提升树模型是基于GBDT(Gradient BoostingDecision Tree,提升决策树)算法构建的模型,GBDT是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力较强的算法。GBDT中的树是回归树(不是分类树),GBDT用来做回归预测,调整后也可以用于分类。GBDT的思想使其具有天然优势可以发现多种有区分性的特征以及特征组合。
S26.利用训练集对所述初始模型进行迭代训练直至训练满足预设的结束条件,输出训练好的初始模型。
作为一个实施例,结束条件可以为迭代训练的次数达到预设值,或模型的正确率超过预设正确率,其中预设值和预设正确率可以根据实际需求设置。
作为一个可选的实现方式,若结束条件为迭代训练的次数达到预设值,则可以在训练过程中获取迭代训练的次数,当迭代训练的次数达到预设值之后,停止训练并输出训练好的初始模型。
作为另一个可选的实现方式,若结束条件为模型的正确率超过预设正确率,则可以在每次训练后基于验证集对训练后的模型进行验证,并基于验证结果计算模型的正确率,在模型的正确率超过预设正确率后停止训练,并输出训练好的初始模型。
在实际应用中,在基于训练集对初始模型进行迭代训练时,可以通过预留的验证集和测试集对训练后的模型进行诊断调优,通过观察误差样本,分析产生误差的原因是参数问题、特征的问题还是数据本身的问题,若确定诊断后的模型需要进行调优,则重新执行基于训练集进行训练的步骤,生成新的模型,新模型需要重新进行诊断,如此反复迭代直至达到模型的最优状态。
S27.将训练好的初始模型作为加密识别模型。
至此完成对加密识别模型的训练。
下面以采用梯度提升树模型作为初始模型为例,对加密识别模型的训练过程进行详细说明。
在实际应用中,若初始模型为梯度提升树模型,训练结束条件为迭代训练次数达到预设值,则在基于训练集对初始模型进行训练时可以包括如下步骤:
步骤1:获取设置的参数,其中参数包括迭代次数,上述参数都可以根据实际需求设置。
步骤2:初始化第一弱学习器F0(x):
Figure BDA0003349984290000101
其中,P(Y=1|x)是训练集中样本数据x的预测结果为1的概率。
步骤3:建立M棵分类回归树,其中M的值为迭代次数。
作为一个实施例,针对第m(m=1,……,m)棵分类回归树,计算对应的负梯度(即伪残差、近似残差)。
在损失函数为对数损失时,负梯度采用下式计算:
Figure BDA0003349984290000102
对于i=1,2,……,N,利用CART回归树拟合数据(xi,rm,i),得到第m棵回归树,其对应的叶子节点区域为Rm,j,其中j=1,2,……,Jm,Jm为第m棵回归树叶子节点的个数。
对于Jm个叶子节点区域中j=1,2,……,Jm,计算出最佳拟合值:
Figure BDA0003349984290000103
步骤4:更新强学习器Fm(x):
Figure BDA0003349984290000104
步骤5:得到最终的强学习器FM(x)的表达式:
Figure BDA0003349984290000105
步骤6:输出如下加密识别模型:
Figure BDA0003349984290000106
由上述内容可知,基于上述训练方式得到的加密识别模型,其输出的识别结果为输入数据的标注结果为1的概率,也即待检测代码块为加密代码块的概率。基于此,可以在得到待检测代码块的识别结果后,若识别结果为大于阈值的值,则确定待检测代码块为加密代码块,若识别结果为小于或等于阈值的值,则确定待检测代码块为未加密代码块,如此便完成对待检测代码的识别。其中阈值为根据实际需求设定的值。
作为一个实施例,可以采用验证集对于每次训练得到的初始模型进行验证,得到验证结果,基于验证结果计算训练后的初始模型的正确率,然后将多次训练得到的初始模型的正确率的平均值作为阈值。
例如,在对加密识别模型进行训练时,设定迭代训练次数为5次,针对每次迭代训练后得到的模型分别进行验证,得到各训练后的模型对应的验证结果,然后针对每个训练后的模型,将其对应的验证结果中正确结果的数量与验证结果的总数量的比值作为该训练后的模型的准确率,比如针对一个模型采用10个样本数据进行验证,得到10个验证结果,其中有8个正确,则该模型的正确率就是80%,以此类推,计算出各训练后的模型的正确率,假设各训练后的模型的正确率分别为0.5、0.6、0.7、0.8和0.9,则阈值就是0.7。
将梯度提升树模型作为初始模型模型进行模型训练得到的加密识别模型具有识别精度高的优点。
参见图3,图3是本申请实施例提供的一种代码检测装置的框图。如图3所示,该装置可以包括:
获取模块301,用于获取待检测代码块;
特征提取模块302,用于提取所述待检测代码块的加密特征,所述加密特征用于判断所述待检测代码块是否加密;
识别模块303,用于将所述加密特征输入预先训练好的加密识别模型,输出与所述待检测代码块对应的识别结果,所述识别结果表示所述待检测代码块是加密代码块或未加密代码块。
作为一个实施例,所述加密特征包括下述特征中的至少一种:
方法名、方法返回值和加密算法内容。
作为一个实施例,所述获取模块具体用于:
获取安装包;
对所述安装包进行反编译,得到反编译代码;
从所述反编辑代码中提取至少一个代码块,同一代码块中的代码属于同一函数方法,不同代码块中的代码属于不同函数方法;
选取任一所述代码块作为待检测代码块。
作为一个实施例,所述加密识别模型采用下述方式训练:
获取多个代码块样本和所述代码块样本的标注结果,其中,所述标注结果用于指示所述代码块样本是否为加密代码块;
获取多个所述代码块样本的加密特征;
以多个所述代码块样本的加密特征作为样本数据,生成样本数据集;
从所述样本数据集中划分出训练集;
确定初始模型;
利用所述训练集对所述初始模型进行迭代训练直至训练满足预设的结束条件,输出训练好的初始模型;
将训练好的初始模型作为加密识别模型。
作为一个实施例,所述初始模型为梯度提升树模型。
参见图4,图4是本申请实施例提供的一种电子设备的结构示意图。
如图4所示,本实施例提供的电子设备包括:至少一个处理器401、存储器402、至少一个网络接口403和其他用户接口404。电子设备400中的各个组件通过总线系统405耦合在一起。可理解,总线系统405用于实现这些组件之间的连接通信。总线系统405除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统405。
其中,用户接口404可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
可以理解,本发明实施例中的存储器402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本文描述的存储器402旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器402存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统4021和第二应用程序4022。
其中,操作系统4021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。第二应用程序4022,包含各种第二应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在第二应用程序4022中。
在本发明实施例中,通过调用存储器402存储的程序或指令,具体的,可以是第二应用程序4022中存储的程序或指令,处理器401用于执行各方法实施例所提供的方法步骤,例如包括:
获取待检测代码块;
提取所述待检测代码块的加密特征,所述加密特征用于判断所述待检测代码块是否加密;
将所述加密特征输入预先训练好的加密识别模型,输出与所述待检测代码块对应的识别结果,所述识别结果表示所述待检测代码块是加密代码块或未加密代码块。
上述本发明实施例揭示的方法可以应用于处理器401中,或者由处理器401实现。处理器401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器402,处理器401读取存储器402中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文功能的单元来实现本文的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在电子设备侧执行的代码检测方法。
处理器用于执行存储器中存储的代码检测程序,以实现以下在电子设备侧执行的代码检测方法的步骤:
获取待检测代码块;
提取所述待检测代码块的加密特征,所述加密特征用于判断所述待检测代码块是否加密;
将所述加密特征输入预先训练好的加密识别模型,输出与所述待检测代码块对应的识别结果,所述识别结果表示所述待检测代码块是加密代码块或未加密代码块。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种代码检测方法,其特征在于,包括:
获取待检测代码块;
提取所述待检测代码块的加密特征,所述加密特征用于判断所述待检测代码块是否加密;
将所述加密特征输入预先训练好的加密识别模型,输出与所述待检测代码块对应的识别结果,所述识别结果表示所述待检测代码块是加密代码块或未加密代码块。
2.根据权利要求1所述的方法,其特征在于,所述加密特征包括下述特征中的至少一种:
方法名、方法返回值和加密算法内容。
3.根据权利要求1所述的方法,其特征在于,所述获取待检测代码块,包括:
获取安装包;
对所述安装包进行反编译,得到反编译代码;
从所述反编辑代码中提取至少一个代码块,同一代码块中的代码属于同一函数方法,不同代码块中的代码属于不同函数方法;
选取任一所述代码块作为待检测代码块。
4.根据权利要求1所述的方法,其特征在于,所述加密识别模型采用下述方式训练:
获取多个代码块样本和所述代码块样本的标注结果,其中,所述标注结果用于指示所述代码块样本是否为加密代码块;
获取多个所述代码块样本的加密特征;
以多个所述代码块样本的加密特征作为样本数据,生成样本数据集;
从所述样本数据集中划分出训练集;
确定初始模型;
利用所述训练集对所述初始模型进行迭代训练直至训练满足预设的结束条件,输出训练好的初始模型;
将训练好的初始模型作为加密识别模型。
5.根据权利要求4所述的方法,其特征在于,所述初始模型为梯度提升树模型。
6.一种代码检测装置,其特征在于,包括:
获取模块,用于获取待检测代码块;
特征提取模块,用于提取所述待检测代码块的加密特征,所述加密特征用于判断所述待检测代码块是否加密;
识别模块,用于将所述加密特征输入预先训练好的加密识别模型,输出与所述待检测代码块对应的识别结果,所述识别结果表示所述待检测代码块是加密代码块或未加密代码块。
7.根据权利要求6所述的装置,其特征在于,所述获取模块具体用于:
获取安装包;
对所述安装包进行反编译,得到反编译代码;
从所述反编辑代码中提取至少一个代码块,同一代码块中的代码属于同一函数方法,不同代码块中的代码属于不同函数方法;
选取任一所述代码块作为待检测代码块。
8.根据权利要求6所述的装置,其特征在于,所述加密识别模型采用下述方式训练:
获取多个代码块样本和所述代码块样本的标注结果,其中,所述标注结果用于指示所述代码块样本是否为加密代码块;
获取多个所述代码块样本的加密特征;
以多个所述代码块样本的加密特征作为样本数据,生成样本数据集;
从所述样本数据集中划分出训练集;
确定初始模型;
利用所述训练集对所述初始模型进行迭代训练直至训练满足预设的结束条件,输出训练好的初始模型;
将训练好的初始模型作为加密识别模型。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据处理程序,以实现权利要求1-5任一所述的代码检测方法。
10.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1-5任一所述的代码检测方法。
CN202111334087.2A 2021-11-11 2021-11-11 一种代码检测方法、装置、电子设备及存储介质 Pending CN114185766A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111334087.2A CN114185766A (zh) 2021-11-11 2021-11-11 一种代码检测方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111334087.2A CN114185766A (zh) 2021-11-11 2021-11-11 一种代码检测方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114185766A true CN114185766A (zh) 2022-03-15

Family

ID=80601509

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111334087.2A Pending CN114185766A (zh) 2021-11-11 2021-11-11 一种代码检测方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114185766A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114660245A (zh) * 2022-05-19 2022-06-24 湖南维益智信智能科技有限公司 在线分析仪表自检测控制方法及系统
CN116366375A (zh) * 2023-06-02 2023-06-30 北京华科海讯科技股份有限公司 基于人工智能的安全运算方法及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114660245A (zh) * 2022-05-19 2022-06-24 湖南维益智信智能科技有限公司 在线分析仪表自检测控制方法及系统
CN116366375A (zh) * 2023-06-02 2023-06-30 北京华科海讯科技股份有限公司 基于人工智能的安全运算方法及系统
CN116366375B (zh) * 2023-06-02 2023-08-15 北京华科海讯科技股份有限公司 基于人工智能的安全运算方法及系统

Similar Documents

Publication Publication Date Title
CN108073519B (zh) 测试用例生成方法和装置
CN107729227B (zh) 应用程序测试范围确定方法、系统、服务器和存储介质
CN112860841B (zh) 一种文本情感分析方法、装置、设备及存储介质
US20100274755A1 (en) Binary software binary image analysis
CN114185766A (zh) 一种代码检测方法、装置、电子设备及存储介质
CN109783785B (zh) 生成实验检测报告的方法、装置和计算机设备
CN111079841A (zh) 目标识别的训练方法、装置、计算机设备和存储介质
CN111797629B (zh) 医疗文本数据的处理方法、装置、计算机设备和存储介质
CN113656547B (zh) 文本匹配方法、装置、设备及存储介质
CN113538070B (zh) 用户生命价值周期检测方法、装置和计算机设备
CN113938408B (zh) 一种数据流量测试方法、装置、服务器及存储介质
CN112052160A (zh) 一种代码的用例获取方法、装置、电子设备及介质
CN116991711A (zh) 一种测试用例的生成方法、装置、终端设备及存储介质
CN115222443A (zh) 客户群体划分方法、装置、设备及存储介质
CN113535582A (zh) 接口测试方法、装置、设备及计算机可读存储介质
CN108304289B (zh) 终端指纹测试方法、装置、计算机设备及存储介质
CN114693011A (zh) 一种政策匹配方法、装置、设备和介质
CN112437022A (zh) 网络流量识别方法、设备及计算机存储介质
CN111639903A (zh) 一种针对架构变更的评审处理方法及相关设备
CN111651500A (zh) 用户身份识别方法、电子设备及存储介质
CN110717037A (zh) 对用户分类的方法和装置
CN110598115A (zh) 一种基于人工智能多引擎的敏感网页识别方法及系统
CN116168403A (zh) 医疗数据分类模型训练方法、分类方法、装置及相关介质
CN115145928A (zh) 模型训练方法及装置、结构化摘要获取方法及装置
CN112631905A (zh) 执行过程数据管理方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination