CN111177663B - 编译器的代码混淆改进方法及装置、存储介质、电子装置 - Google Patents
编译器的代码混淆改进方法及装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN111177663B CN111177663B CN201911330990.4A CN201911330990A CN111177663B CN 111177663 B CN111177663 B CN 111177663B CN 201911330990 A CN201911330990 A CN 201911330990A CN 111177663 B CN111177663 B CN 111177663B
- Authority
- CN
- China
- Prior art keywords
- branch information
- path branch
- path
- information
- code
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012545 processing Methods 0.000 claims abstract description 38
- 238000004590 computer program Methods 0.000 claims description 18
- 238000012549 training Methods 0.000 claims description 17
- 238000010801 machine learning Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 18
- 238000005336 cracking Methods 0.000 description 8
- 230000006872 improvement Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种编译器的代码混淆改进方法及装置、存储介质、电子装置,其中上述方法包括:获取编译器中待进行编码的代码中的第一路径分支信息;至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同,采用上述技术方案,解决了相关技术中,在发布可执行文件时,存储路径信息的代码可能会被泄露,从而使攻击者容易通过泄露的代码来识别并收集路径分支信息,进而获取代码的内部逻辑关系,给代码带来安全威胁等问题。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种编译器的代码混淆改进方法及装置、存储介质、电子装置。
背景技术
在发布可执行文件时,存储路径信息的代码可能会被泄露,从而使攻击者容易通过泄露的代码来识别并收集路径分支信息,进而获取代码的内部逻辑关系,给代码带来安全威胁。
目前,在发布可执行文件时,存储路径信息的代码可能会被泄露,从而使得攻击者可以从二进制代码的路径信息中识别并收集路径分支信息,进而抽象成谓词逻辑,并通过逆向分析技术来获取代码的内部逻辑关系。由此可知,现有技术需要一种对路径分支信息的保护方法,以通过减少路径信息的泄露来增加程序的安全性。
针对相关技术中,在发布可执行文件时,存储路径信息的代码可能会被泄露,从而使攻击者容易通过泄露的代码来识别并收集路径分支信息,进而获取代码的内部逻辑关系,给代码带来安全威胁等问题,尚未提出有效的技术方案。
发明内容
本发明实施例提供了一种编译器的代码混淆改进方法及装置、存储介质、电子装置,以至少解决相关技术中,在发布可执行文件时,存储路径信息的代码可能会被泄露,从而使攻击者容易通过泄露的代码来识别并收集路径分支信息,进而获取代码的内部逻辑关系,给代码带来安全威胁等问题。
根据本发明的一个实施例,提供了一种编译器的代码混淆改进方法,包括:获取编译器中待进行编码的代码中的第一路径分支信息;至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同。
可选的,至少通过以下方式之一对路径分支信息进行代码混淆处理:将路径分支信息对应的二叉树转换为森林图或有向图,在路径分支信息中增加无用分支,上述方法包括:使用第一模型对第一路径分支信息进行代码混淆处理,确定第一路径分支信息所对应的第二路径分支信息,其中,第一模型为使用多组数据通过机器学习训练出的,多组数据中的每组数据均包括:第一路径分支信息和第二路径分支信息;在确定出第一路径分支信息所对应的第二路径分支信息的情况下,对路径分支信息进行代码混淆处理,以得到第二路径分支信息。
可选的,使用第一模型对第一路径分支信息进行代码混淆处理,确定第一路径分支信息所对应的第二路径分支信息之前,上述方法还包括:通过目标对象的设置指令确定第二路径分支信息;根据第一路径分支信息和根据设置指令确定的第二路径分支信息对第一模型进行训练。
可选的,至少通过以下方式之一对第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将第一路径分支信息对应的二叉树转换为森林图或有向图、在第一路径分支信息中增加无用分支之前,上述方法还包括:通过以下方式确定第一路径分支信息增加无用分支的方式:在增加的无用分支上的内容为空;和/或在增加的无用分支上的内容不为空,且无用分支上的内容不影响第二路径分支信息的输出结果。
根据本发明的另一个实施例,提供了一种编译器的代码混淆改进装置,包括:获取模块,用于获取编译器中待进行编码的代码中的第一路径分支信息;确定模块,用于至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同。
可选的,上述确定模块还用于使用第一模型对第一路径分支信息进行代码混淆处理,确定第一路径分支信息所对应的第二路径分支信息,其中,第一模型为使用多组数据通过机器学习训练出的,多组数据中的每组数据均包括:第一路径分支信息和第二路径分支信息;在确定出第一路径分支信息所对应的第二路径分支信息的情况下,对路径分支信息进行代码混淆处理,以得到第二路径分支信息。
可选的,上述确定模块还用于通过目标对象的设置指令确定第二路径分支信息;根据第一路径分支信息和根据设置指令确定的第二路径分支信息对第一模型进行训练。
可选的,上述确定模块还用于通过以下方式确定第一路径分支信息增加无用分支的方式:在增加的无用分支上的内容为空;和/或在增加的无用分支上的内容不为空,且无用分支上的内容不影响第二路径分支信息的输出结果。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,获取编译器中待进行编码的代码中的第一路径分支信息;至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同,采用上述技术方案,解决了相关技术中,在发布可执行文件时,存储路径信息的代码可能会被泄露,从而使攻击者容易通过泄露的代码来识别并收集路径分支信息,进而获取代码的内部逻辑关系,给代码带来安全威胁等问题,进而可以通过增加路径分支信息的破解难度来减少路径分支信息的泄露风险,从而可以有效增加代码的安全性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种编译器的代码混淆改进方法的计算机终端的硬件结构框图;
图2是根据本发明实施例的编译器的代码混淆改进方法的流程图;
图3是根据本发明可选实施例的二叉树转换的示意图;
图4是根据本发明可选实施例的增加路径分支的复杂度的示意图;
图5是根据本发明可选实施例的路径分支样本的结构示意图;
图6是根据本发明可选实施例的设置的混淆样本的结构示意图;
图7是根据本发明可选实施例的路径分支代码的结构示意图;
图8是根据本发明可选实施例的设置了混淆分支的结构示意图(一);
图9是根据本发明可选实施例的设置了混淆分支的结构示意图(二);
图10是根据本发明可选实施例的编译器采用混淆模型后的工作流程;
图11是根据本发明实施例的一种编译器的代码混淆改进装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例所提供的方法实施例可以在计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种编译器的代码混淆改进方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的编译器的代码混淆改进方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
为了更好的理解本发明实施例中对编译器的代码混淆改进流程,以下对本发明实施例中可能出现的技术方案进行举例说明如下:
在本发明可选实施例中,代码混淆技术属于一类能够保留语义的代码变换过程,该技术可以提高逆向工程分析难度,使代码逻辑不易被其他人所理解,以此来实现对代码逻辑的保护。
本发明实施例的技术方案,提出了一种基于编译器的代码保护方法,可以通过增加路径分支信息的破解难度来减少路径分支信息的泄露风险,从而可以有效增加代码的安全性。
在本实施例中提供了一种编译器的代码混淆改进方法,图2是根据本发明实施例的编译器的代码混淆改进方法的流程图,如图2所示,该流程包括如下步骤:
步骤202,获取编译器中待进行编码的代码中的第一路径分支信息;
步骤204,至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同。
通过本发明,获取编译器中待进行编码的代码中的第一路径分支信息;至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同,采用上述技术方案,解决了相关技术中,在发布可执行文件时,存储路径信息的代码可能会被泄露,从而使攻击者容易通过泄露的代码来识别并收集路径分支信息,进而获取代码的内部逻辑关系,给代码带来安全威胁等问题,进而可以通过增加路径分支信息的破解难度来减少路径分支信息的泄露风险,从而可以有效增加代码的安全性。
可选的,至少通过以下方式之一对路径分支信息进行代码混淆处理:将路径分支信息对应的二叉树转换为森林图或有向图,在路径分支信息中增加无用分支,上述方法包括:使用第一模型对第一路径分支信息进行代码混淆处理,确定第一路径分支信息所对应的第二路径分支信息,其中,第一模型为使用多组数据通过机器学习训练出的,多组数据中的每组数据均包括:第一路径分支信息和第二路径分支信息;在确定出第一路径分支信息所对应的第二路径分支信息的情况下,对路径分支信息进行代码混淆处理,以得到第二路径分支信息。通过机器训练得到包括第一路径分支信息和第二路径分支信息的多组数据,第一模型根据多组数据对第一路径分支信息进行代码混淆处理,通过第一路径分支信息确定第一路径分支信息所对应的第二路径分支信息并对路径分支信息进行代码混淆处理。
可选的,使用第一模型对第一路径分支信息进行代码混淆处理,确定第一路径分支信息所对应的第二路径分支信息之前,上述方法还包括:通过目标对象的设置指令确定第二路径分支信息;根据第一路径分支信息和根据设置指令确定的第二路径分支信息对第一模型进行训练。目标对象通过指令设置需要进行确定的第二路径分支信息,第一模型通过第一路径分支信息和目标对象的设置指令进行机器学习训练。
可选的,至少通过以下方式之一对第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将第一路径分支信息对应的二叉树转换为森林图或有向图、在第一路径分支信息中增加无用分支之前,上述方法还包括:通过以下方式确定第一路径分支信息增加无用分支的方式:在增加的无用分支上的内容为空;和/或在增加的无用分支上的内容不为空,且无用分支上的内容不影响第二路径分支信息的输出结果。在路径分支信息的基础上,增加无用分支,不对运行结果造成影响,却可以增加路径分支的复杂度。通过上述可选实施例,可以有效提升路径分支信息的破解难度,从而可以有效提升代码的安全性。
以下结合另一示例对上述的编译器的代码混淆改进方法的技术方案进行解释说明,但不用于限定本发明实施例的技术方案。
本发明实施例中,编译器在编译代码时,可以对代码中的路径分支信息进行代码混淆,以提升路径分支信息的破解难度。在对路径分支信息进行代码混淆时,主要通过两方面来进行代码混淆:
1、将路径分支信息由二叉树转换为复杂度更高的树、森林以及有向图等(如图3所示),当输入相同时,图3中的二叉树的输出结果,与森林的输出结果相同;
2、在路径分支信息的基础上,增加无用分支,不对运行结果造成影响,却可以增加路径分支的复杂度(如图4所示)。当输入相同时,图4中箭头上面森林的输出结果,与箭头下面森林的输出结果相同,图4中的X可以为混淆路径分支,可以对应为空,或者对应为不影响路径分支输出结果的无效内容,本发明实施例不再赘述。
为实现上述两个方面的内容,本发明可选实施例采用了深度学习模型,并通过训练完成的混淆模型来对路径分支信息进行代码混淆。下面,从混淆模型的训练过程,以及混淆模型的使用过程来分别进行说明。
一、混淆模型的训练过程
首先,先构建一个初始模型,在构建初始模式时,可以基于现有的随机森林算法来构建,该部分的实现方案可以采用现有技术中的任何一种实现方式,本发明实施例不再赘述。
在构建了初始模型后,可以确定训练样本。其中,训练样本主要包括两部分内容:路径分支样本,以及相关技术人员设置的混淆样本。本发明实施例中,混淆样本可以包括根据路径分支样本对应的树、森林、有向图等,本发明可选实施例对此不作限定。
在一个示例中,路径分支样本可以如图5所示,则相关人员设置的混淆样本可以如图6所示。需要注意的是,图5中二叉树的输出结果,与图6中森林的输出结果相同,图6中的X可以由相关技术人员预先设定,本发明可选实施例对此不作限定。
需要说明的是,在设置用于混淆的无效分支时,相关人员可以在有效路径上设置无用代码,也可以在无效路径上设置代码,以实现在增加路径复杂度的同时,不对路径分支的输出结果造成影响,例如,路径分支代码可以如图7所示,则设置了混淆分支后可以如图8或图9所示,由图7、图8以及图9可知,当输入相同时,输出相同,但是,图8以及图9的复杂度明显高于图7,将路径样本作为输入,以及将路径混淆样本作为输出,输入到构建的初始模型中进行训练。
在本发明可选实施例中,用于训练的路径样本以及路径混淆样本可以分为两部分,一部分可以用于混淆模型进行学习,另一部分可以用于对学习完成的混淆模型进行验证。其中,在验证时,若混淆模型的输出结果与预设的路径混淆样本不同,则可以对混淆模型中的学习参数进行调整,以实现对混淆模型准确度的调整。
二、混淆模型的使用过程
以混淆模型作为路径分支混淆算法,可以有效提升路径分支信息的混淆效率。图10示出了编译器采用混淆模型后的工作流程。
由图10可知,本发明实施例中,编译器在编译代码时,可以先从代码中获取路径分支代码,然后,通过训练完成的混淆模型来对路径分支代码进行代码混淆,在混淆后,可以将混淆后的路径分支代码与其他代码进行代码合成,并对合成后的代码进行编译。由于已经对代码中的路径分支代码进行了混淆,增加了复杂度,因此,可以有效提升路径分支信息的破解难度,从而可以有效提升代码的安全性。
综上所述,本发明实施例提出了一种基于编译器的代码保护方法,通过将路径分支信息由二叉树转换为复杂度更高的树、森林以及有向图等;在路径分支信息的基础上,增加无用分支;通过混淆模型来实现对路径分支信息的混淆;减少了路径分支信息的泄露风险,从而可以有效增加代码的安全性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种编译器的代码混淆改进装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图11是根据本发明实施例的一种编译器的代码混淆改进装置的结构框图,如图11所示,该装置包括:
(1)获取模块32,用于获取编译器中待进行编码的代码中的第一路径分支信息;
(2)确定模块34,用于至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同。
通过本发明,获取编译器中待进行编码的代码中的第一路径分支信息;至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同,采用上述技术方案,解决了相关技术中,在发布可执行文件时,存储路径信息的代码可能会被泄露,从而使攻击者容易通过泄露的代码来识别并收集路径分支信息,进而获取代码的内部逻辑关系,给代码带来安全威胁等问题,进而可以通过增加路径分支信息的破解难度来减少路径分支信息的泄露风险,从而可以有效增加代码的安全性。
可选的,上述确定模块还用于使用第一模型对第一路径分支信息进行代码混淆处理,确定第一路径分支信息所对应的第二路径分支信息,其中,第一模型为使用多组数据通过机器学习训练出的,多组数据中的每组数据均包括:第一路径分支信息和第二路径分支信息;在确定出第一路径分支信息所对应的第二路径分支信息的情况下,对路径分支信息进行代码混淆处理,以得到第二路径分支信息。通过机器训练得到包括第一路径分支信息和第二路径分支信息的多组数据,第一模型根据多组数据对第一路径分支信息进行代码混淆处理,通过第一路径分支信息确定第一路径分支信息所对应的第二路径分支信息并对路径分支信息进行代码混淆处理。
可选的,上述确定模块还用于通过目标对象的设置指令确定第二路径分支信息;根据第一路径分支信息和根据设置指令确定的第二路径分支信息对第一模型进行训练。目标对象通过指令设置需要进行确定的第二路径分支信息,第一模型通过第一路径分支信息和目标对象的设置指令进行机器学习训练。
可选的,上述确定模块还用于通过以下方式确定第一路径分支信息增加无用分支的方式:在增加的无用分支上的内容为空;和/或在增加的无用分支上的内容不为空,且无用分支上的内容不影响第二路径分支信息的输出结果。在路径分支信息的基础上,增加无用分支,不对运行结果造成影响,却可以增加路径分支的复杂度。通过上述可选实施例,可以有效提升路径分支信息的破解难度,从而可以有效提升代码的安全性。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取编译器中待进行编码的代码中的第一路径分支信息;
S2,至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取编译器中待进行编码的代码中的第一路径分支信息;
S2,至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种编译器的代码混淆改进方法,其特征在于,包括:
获取编译器中待进行编码的代码中的第一路径分支信息;
至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同;
其中,至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理:将所述第一路径分支信息对应的二叉树转换为森林图或有向图,在所述第一路径分支信息中增加无用分支,包括:
使用第一模型对所述第一路径分支信息进行代码混淆处理,确定所述第一路径分支信息所对应的第二路径分支信息,其中,所述第一模型为使用多组数据通过机器学习训练出的,所述多组数据中的每组数据均包括:第一路径分支信息和第二路径分支信息;
在确定出所述第一路径分支信息所对应的第二路径分支信息的情况下,对所述第一路径分支信息进行代码混淆处理,以得到所述第二路径分支信息。
2.根据权利要求1所述的方法,其特征在于,使用第一模型对所述第一路径分支信息进行代码混淆处理,确定所述第一路径分支信息所对应的第二路径分支信息之前,所述方法还包括:
通过目标对象的设置指令确定第二路径分支信息;
根据所述第一路径分支信息和根据设置指令确定的第二路径分支信息对所述第一模型进行训练。
3.根据权利要求1所述的方法,其特征在于,至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支之前,所述方法还包括:
通过以下方式确定所述第一路径分支信息增加无用分支的方式:
在增加的无用分支上的内容为空;和/或
在增加的无用分支上的内容不为空,且无用分支上的内容不影响所述第二路径分支信息的输出结果。
4.一种编译器的代码混淆改进装置,其特征在于,包括:
获取模块,用于获取编译器中待进行编码的代码中的第一路径分支信息;
确定模块,用于至少通过以下方式之一对所述第一路径分支信息进行代码混淆处理,得到第二路径分支信息:将所述第一路径分支信息对应的二叉树转换为森林图或有向图、在所述第一路径分支信息中增加无用分支,其中,所述第一路径分支信息和所述第二路径分支信息对于相同输入的输出结果相同;
其中,所述确定模块,还用于使用第一模型对所述第一路径分支信息进行代码混淆处理,确定所述第一路径分支信息所对应的第二路径分支信息,其中,所述第一模型为使用多组数据通过机器学习训练出的,所述多组数据中的每组数据均包括:第一路径分支信息和第二路径分支信息;在确定出所述第一路径分支信息所对应的第二路径分支信息的情况下,对所述路径分支信息进行代码混淆处理,以得到所述第二路径分支信息。
5.根据权利要求4所述的装置,其特征在于,所述确定模块,还用于通过目标对象的设置指令确定第二路径分支信息;根据所述第一路径分支信息和根据设置指令确定的第二路径分支信息对所述第一模型进行训练。
6.根据权利要求4所述的装置,其特征在于,所述确定模块,还用于通过以下方式确定所述第一路径分支信息增加无用分支的方式:
在增加的无用分支上的内容为空;和/或
在增加的无用分支上的内容不为空,且无用分支上的内容不影响所述第二路径分支信息的输出结果。
7.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至3任一项中所述的方法。
8.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至3任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911330990.4A CN111177663B (zh) | 2019-12-20 | 2019-12-20 | 编译器的代码混淆改进方法及装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911330990.4A CN111177663B (zh) | 2019-12-20 | 2019-12-20 | 编译器的代码混淆改进方法及装置、存储介质、电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177663A CN111177663A (zh) | 2020-05-19 |
CN111177663B true CN111177663B (zh) | 2023-03-14 |
Family
ID=70655625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911330990.4A Active CN111177663B (zh) | 2019-12-20 | 2019-12-20 | 编译器的代码混淆改进方法及装置、存储介质、电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177663B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297095B (zh) * | 2021-06-30 | 2024-07-05 | 中国工商银行股份有限公司 | 一种子程序调用路径分支的确定方法及装置 |
CN114880537B (zh) * | 2022-05-13 | 2023-06-30 | 深圳宏鹏数字供应链管理有限公司 | 一种企业风险评估方法、系统及存储介质 |
CN115659169A (zh) * | 2022-09-20 | 2023-01-31 | 华为技术有限公司 | 模型的处理方法、基于模型的数据处理方法及相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101427223A (zh) * | 2005-06-01 | 2009-05-06 | 英特尔公司 | 用于基于关键路径的分析的性能监视体系结构的增强 |
CN101847194A (zh) * | 2009-03-24 | 2010-09-29 | 安全网络公司 | 混淆技术 |
CN103488463A (zh) * | 2005-02-24 | 2014-01-01 | 高通股份有限公司 | 通过循环结束分支来抑制分支历史寄存器的更新 |
CN110297633A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 代码转换方法、装置、设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8751823B2 (en) * | 2011-08-01 | 2014-06-10 | Apple Inc. | System and method for branch function based obfuscation |
-
2019
- 2019-12-20 CN CN201911330990.4A patent/CN111177663B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488463A (zh) * | 2005-02-24 | 2014-01-01 | 高通股份有限公司 | 通过循环结束分支来抑制分支历史寄存器的更新 |
CN101427223A (zh) * | 2005-06-01 | 2009-05-06 | 英特尔公司 | 用于基于关键路径的分析的性能监视体系结构的增强 |
CN101847194A (zh) * | 2009-03-24 | 2010-09-29 | 安全网络公司 | 混淆技术 |
CN110297633A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 代码转换方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111177663A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177663B (zh) | 编译器的代码混淆改进方法及装置、存储介质、电子装置 | |
US20150020205A1 (en) | Method and apparatus for detecting security vulnerability for animation source file | |
CN104298921B (zh) | 动画源文件安全漏洞检查方法及装置 | |
CN103716308B (zh) | 一种多协议平台通信方法及多协议平台 | |
CN108108436A (zh) | 数据存储方法、装置、存储介质及电子设备 | |
CN106484453B (zh) | 一种实现系统升级的方法及装置 | |
CN106933645A (zh) | 一种Apk安全风险自动化静态审计系统以及方法 | |
CN105446741B (zh) | 一种基于api比对的移动应用程序辨识方法 | |
CN109359084A (zh) | 区块链信息处理中异常诊断方法、装置、设备及存储介质 | |
WO2022096574A1 (en) | Scalable source code vulnerability remediation | |
CN108021369A (zh) | 一种数据集成处理方法及相关装置 | |
CN106709290A (zh) | 一种应用安全性分析方法及装置 | |
CN109658065A (zh) | 一种人力资源管理系统 | |
CN115757745A (zh) | 基于人工智能的业务场景控制方法、系统及云平台 | |
CN109041064A (zh) | 一种伪基站的识别方法、装置及移动终端 | |
CN105468981A (zh) | 基于漏洞识别技术的插件安全扫描装置及扫描方法 | |
CN110321144A (zh) | 下线源代码的识别方法、装置、设备及存储介质 | |
CN110532267A (zh) | 字段的确定方法、装置、存储介质及电子装置 | |
CN107145342B (zh) | 应用的渠道信息的处理方法和装置 | |
CN109002715A (zh) | 一种基于卷积神经网络的恶意软件识别方法及系统 | |
CN113342647A (zh) | 一种测试数据的生成方法及装置 | |
CN117332374A (zh) | 一种ai芯片的计算和通信的融合方法、装置及ai芯片 | |
CN110990381B (zh) | 服务器的处理方法及装置、存储介质和电子装置 | |
CN112613075A (zh) | 权限的确定方法及装置、存储介质及电子装置 | |
CN111131324A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |