CN111475152A - 一种代码处理方法及装置 - Google Patents
一种代码处理方法及装置 Download PDFInfo
- Publication number
- CN111475152A CN111475152A CN202010289686.6A CN202010289686A CN111475152A CN 111475152 A CN111475152 A CN 111475152A CN 202010289686 A CN202010289686 A CN 202010289686A CN 111475152 A CN111475152 A CN 111475152A
- Authority
- CN
- China
- Prior art keywords
- code
- instruction
- compiling
- library
- preset
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种代码处理方法及装置,通过获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度;将所述源代码编译为目标代码;分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。因此,本发明无需构建复杂的异构等价的系统架构即可获得具有很强的动态性、异构性和随机性等不确定性特点的异构功能等价执行文件,节省了技术人员设计软件的时间,进而提升了软件设计的效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码处理方法及装置。
背景技术
随着网络技术的不断发展和进步,人们在享受网络技术进步带来便利的同时,也越来越重视网络安全。当前,攻击者可以通过软件的设计缺陷或后门对软件进行攻击,进而导致软件用户的隐私泄露、系统感染病毒等严重后果。由于技术人员在实际设计软件时无法彻底避免设计缺陷或完全杜绝后门,因此,如何增加攻击者利用设计缺陷或后门进行攻击的难度,成为相关技术人员在设计软件时需要思考的问题。
当前,技术人员可以基于网络空间拟态防御理论,通过搭建异构等价的系统架构,在该系统架构中设计软件,使设计出的软件具有很强的动态性、异构性和随机性等不确定性特点,提升该软件的抗攻击能力。然而,搭建异构等价的系统架构的难度非常高,需要技术人员花费相当长的时间进行搭建和测试,这无疑影响了技术人员设计软件的效率。
发明内容
鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的一种代码处理方法及装置,技术方案如下:
一种代码处理方法,包括:
获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度;
将所述源代码编译为目标代码;
分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。
可选的,所述编译方式包括编译选项参数,所述将所述源代码编译为目标代码包括:
将所述源代码按照与所述编译选项参数对应的编译等级编译为目标代码。
可选的,在所述编译选项参数对应的所述编译等级包括控制流级和指令级时,所述将所述源代码按照与所述编译选项参数对应的编译等级编译为目标代码,包括:
将所述源代码映射为初始中间代码;
对所述初始中间代码进行与所述控制流级对应的控制流伪造处理,获得加密中间代码;
将所述加密中间代码转化为目标语言的初始汇编指令;
对所述初始汇编指令中的至少一个预设指令类型的目标指令进行与所述指令级对应的随机化置换操作,获得随机化汇编指令并确定与所述随机化汇编指令对应的目标代码。
可选的,所述将所述源代码映射为初始中间代码,包括:
对所述源代码中的指定字符串进行异构加密,获得异构加密代码;
将所述异构加密代码映射为初始中间代码。
可选的,所述对所述初始中间代码进行与所述控制流级对应的控制流伪造处理,获得加密中间代码,包括:
对所述初始中间代码进行控制流平展化,获得加密中间代码。
可选的,所述对所述初始中间代码进行与所述控制流级对应的控制流伪造处理,获得加密中间代码,包括:
对所述初始中间代码进行控制流平展化,获得加密中间初始代码;
在所述加密中间初始代码中添加预设伪造控制流和/或预设伪造指令,获得加密中间代码。
可选的,所述对所述初始中间代码进行控制流平展化,包括:
将所述初始中间代码中的控制语句随机转化为switch分支选择语句;
和/或,将所述初始中间代码中的跳转语句和分支语句随机添加条件跳转指令。
可选的,所述对所述初始汇编指令中的至少一个预设指令类型的目标指令进行与所述指令级对应的随机化置换操作,包括:
对所述初始汇编指令中的任一指令:确定该指令的操作码,在预设操作码数据库中查询是否存在所述操作码,如果存在,则确定该指令为预设指令类型的目标指令,对该目标指令进行随机化置换操作,其中,所述随机化置换操作包括如下操作方式中的至少一种操作方式:
操作方式一:使用多个替换指令替换该目标指令;
操作方式二:调换该目标指令在所述初始汇编指令中的位置;
操作方式三:在与该目标指令相邻的位置插入干扰指令。
可选的,所述方法应用在云服务端,所述云服务端与web端通信连接,在所述分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件之后,所述方法还包括:
将各异构功能等价执行文件发送至所述web端。
一种代码处理装置,包括:输入获得单元、编译单元和执行文件生成单元,
所述输入获得单元,用于获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度;
所述编译单元,用于将所述源代码编译为目标代码;
所述执行文件生成单元,用于分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。
借由上述技术方案,本发明提供的一种代码处理方法及装置,通过获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度;将所述源代码编译为目标代码;分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。因此,本发明实施例无需构建复杂的异构等价的系统架构即可获得具有很强的动态性、异构性和随机性等不确定性特点的异构功能等价执行文件,节省了技术人员设计软件的时间,进而提升了软件设计的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种代码处理方法的流程示意图;
图2示出了本发明实施例提供的另一种代码处理方法的流程示意图;
图3示出了本发明实施例提供的另一种代码处理方法的流程示意图;
图4示出了本发明实施例提供的另一种代码处理方法的流程示意图;
图5示出了本发明实施例提供的另一种代码处理方法的流程示意图;
图6示出了本发明实施例提供的另一种代码处理方法的流程示意图;
图7示出了本发明实施例提供的另一种代码处理方法的流程示意图;
图8示出了本发明实施例提供的一种代码处理装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,本发明实施例提供的一种代码处理方法,所述方法包括:
S100、获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度。
其中,源代码可以是未编译且按照一定程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。例如:源代码可以为Java语言的代码,或者为C++语言的代码。其中,异构度可以是技术人员预先指定生成异构功能等价执行文件的个数。
此外,本发明实施例在获得用户输入的源代码之后,可以对进行安全检测。具体的,本发明实施例可以使用现有的源代码检测工具对源代码进行安全检测。源代码检测工具可以包括:Fortify Source Code Analysis、Checkmarx CxSuite。可以理解的是,本发明实施例也可以使用本领域技术人员自行设计的源代码检测工具对源代码进行安全检测。本发明实施例对源代码进行安全检测,主要是对源代码进行病毒扫描,防止由于源代码是病毒或木马,从而使本发明实施例所提供的技术方案的应用系统或应用环境受到破坏。
S200、将所述源代码编译为目标代码。
其中,本发明实施例中的编译方式还可以包括编译选项参数,基于图1所示的方法,如图2所示,本发明实施例提供的另一种代码处理方法,步骤S200可以包括:
S210、将所述源代码按照与所述编译选项参数对应的编译等级编译为目标代码。
其中,编译选项参数可以是技术人员预先对不同的编译等级分别指定的标识,该标识可以为数字、文字或符号等。编译等级可以为在源代码的编译过程中的不同阶段由低到高划分的编译处理层次。编译等级可以包括:指令级(即在汇编过程中对指令进行随机化置换操作)、控制流级(即对中间代码进行控制流处理)和库函数级(即在链接时使用异构等价的库函数)。例如:当编译选项参数为“p=0”时,该编译选项参数对应的编译等级为指令级;当编译选项参数为“p=3”时,该编译选项参数对应的编译等级为指令级和库函数级的组合。本发明实施例将按照编译选项参数对应的编译等级将源代码构建为异构功能等价执行文件。需要注意的是,在本发明实施例中,用户选择的编译等级默认包括库函数级。
在本发明实施例中,用户可以根据需求确定编译方式中编译选项参数和异构度的数值。例如,用户可以在默认编译方式中修改默认编译方式的编译选项参数和异构度,将修改后的编译方式作为输入的编译方式。
在所述编译选项参数对应的所述编译等级包括控制流级和指令级时,基于图2所示的方法,如图3所示,本发明实施例提供的一种代码处理方法,步骤S210可以包括:
S211、将所述源代码映射为初始中间代码。
本发明实施例可以使用逆波兰表示、四元式、三元式和树表示中任一种中间语言,将源代码映射为初始中间代码。本发明实施例在此不对中间语言进一步限定。
可选的,基于图3所示的方法,如图4所示,本发明实施例提供的另一种代码处理方法,步骤S211可以具体包括:
S211a、对所述源代码中的指定字符串进行异构加密,获得异构加密代码。
需要进行说明的是:用户可以在编辑源代码时,对某些字符串编辑添加对应的指定标识。本发明实施例可以识别出指定标识,并将该指定标识对应的字符串确定为指定字符串。
本发明实施例可以对确定出的指定字符串采用至少两种现有的字符串加密方式进行异构加密。现有的字符串加密方式可以包括:Base64位加密、AES加密以及RSA加密等加密方式。可以理解的是,本发明实施例也可以采用本领域技术人员自行设计的两种以上的字符串加密方式对指定字符串进行异构加密。
S211b、将所述异构加密代码映射为初始中间代码。
具体的,本发明实施例可以将异构加密代码按照指定的中间语言映射为初始中间代码。本发明实施例通过对源代码中的指定字符串进行异构加密,避免了攻击者通过关键词等技术手段猜测出源代码的逻辑,进而有效提升了由该源代码构建的异构功能等价执行文件的安全性。
S212、对所述初始中间代码进行与所述控制流级对应的控制流伪造处理,获得加密中间代码。
其中,控制流包括For-In循环、While循环和条件语句等。控制流伪造处理可以是对初始中间代码中的某些语句进行伪造变形处理,对初始中间代码进行变形,获得安全性更高的加密中间代码,进一步提高代码的安全性。
本发明实施例可以提供包含以下两种控制流伪造处理的方式:
方式一、对所述初始中间代码进行控制流平展化,获得加密中间代码,获得加密中间代码。
其中,控制流平展化的原理是首先将高级语言控制结构拆分为等价if-then-goto结构,然后通过用switch语句来替代goto语句。在此基础上,本发明实施例对初始中间代码进行控制流平展化的具体过程可以包括:将所述初始中间代码中的控制语句随机转化为switch分支选择语句;和/或,将所述初始中间代码中的跳转语句和分支语句随机添加条件跳转指令。其中,控制语句可以包括循环语句、跳转语句和分支语句,其中,循环语句可以包括:for、while和do…while等,跳转语句可以包括:break、continue和return等,分支语句可以包括:if和switch等。条件跳转指令包括:JZ、JNZ、JC、JNC、JO和JNO等。本发明实施例通过对初始中间代码进行控制流平展处理,使得相对初始中间代码而言,攻击者更加难以理解加密中间代码,进而使加密中间代码与初始中间代码相比更具安全性。
方式二、对所述初始中间代码进行控制流平展化,获得加密中间初始代码;在所述加密中间初始代码中添加预设伪造控制流和/或预设伪造指令,获得加密中间代码。
方式二中的控制流平展化说明可参照方式一中的相关内容,此处不再赘述。为了进一步混淆攻击者对代码的理解,本发明实施例在对初始中间代码进行控制流平展化的基础上,还可以添加预设伪造控制流和/或预设伪造指令。
伪造控制流可以是技术人员预先编辑设计具有控制流数据结构,但不代表任何可执行程序的控制流,即伪造控制流不表示任何实际执行过程。伪造指令可以是技术人员预先编辑设计的无实际指示或无实际命令的计算机指令。本发明实施例通过添加预设伪造控制流和/或预设伪造指令的方式,对攻击者识别加密中间代码中的真正控制流产生误导,有效避免攻击者通过逆向工程技术或破解技术获得代码的控制流信息,进而防止代码的控制流的信息泄露以及代码的控制流信息被攻击者分析的安全问题。
S213、将所述加密中间代码转化为目标语言的初始汇编指令。
其中,目标语言可以是某一机器可识别的机器代码。在实际应用过程中,技术人员可以根据实际使用的机器,指定该机器可识别的机器代码为目标语言。本发明实施例通过将加密中间代码映射到目标语言上,可以将加密中间代码翻译为能够完成与加密中间代码完成相同任务的机器指令序列,即初始汇编指令。
S214、对所述初始汇编指令中的至少一个预设指令类型的目标指令进行与所述指令级对应的随机化置换操作,获得随机化汇编指令并确定与所述随机化汇编指令对应的目标代码。
其中,预设指令类型可以是技术人员预先设置指定的指令类型,例如,预设指令类型可以包括分支指令、跳转指令和访存指令等。当预设指令类型为跳转指令时,本发明实施例可以将初始汇编指令中的所有跳转指令确定为目标指令,并对各目标指令进行随机化置换。随机化置换是在保证目标指令所对应的功能能够实现的前提下,对目标指令进行包括等价替换、位置调换和插入干扰指令在内的至少一种置换操作方式。
可选的,本发明实施例中的步骤S214可以具体包括:对所述初始汇编指令中的任一指令:确定该指令的操作码,在预设操作码数据库中查询是否存在所述操作码,如果存在,则确定该指令为预设指令类型的目标指令,对该目标指令进行随机化置换操作。
其中,本发明实施例可以通过初始汇编指令中指令的偏移和预先规定的操作码长度,确定该指令的操作码。技术人员将需要进行随机化置换操作的指令的操作码作为预设指令类型的目标指令的操作码保存至预设操作码数据库中,在实际使用时,本发明实施例可以在预设操作码数据库中遍历匹配初始汇编指令中任一指令的操作码,当初始汇编指令中的某一指令的操作码与预设操作码数据库中的某一操作码相同时,则确定该指令为预设指令类型的目标指令。
其中,所述随机化置换操作包括如下操作方式中的至少一种操作方式:
操作方式一:使用多个替换指令替换该目标指令。
需要进行说明的是,当该多个替换指令组合时可以实现与目标指令相同的功能,即多个替换指令可以等价替换目标指令。本发明实施例可以预先根据各目标指令的指令类型,对不同的目标指令类型分别设置等价替换该指令类型的目标指令的多个替换指令。
操作方式二:调换该目标指令在所述初始汇编指令中的位置。
本发明实施例可以预先根据各目标指令的指令类型,在不存在数据依赖和控制流依赖的前提下,移动目标指令的位置,使得后续生成的异构功能等价执行文件在执行该目标指令时,相对于未移动目标指令的位置生成的异构功能等价执行文件而言,提前或者延后执行该目标指令。
操作方式三:在与该目标指令相邻的位置插入干扰指令。
本发明实施例可以预先根据各目标指令的指令类型,在不破坏目标指令执行结果一致性的前提下,在目标指令前后添加包括nop空指令、mov指令、修改无关寄存器的值在内的至少一种干扰指令。
在实际使用中,本发明实施例可以随机采用以上三种操作方式中的其中一种操作方式对目标指令进行随机化置换操作,获得随机化汇编指令。本发明实施例也可以预先对某一预设指令类型的目标指令:指定以上三种操作方式中的至少一种操作方式作为对该预设指令类型的目标指令进行随机化置换操作的操作方式,以便按照指定的随机化操作方式对目标指令进行随机化置换操作,获得随机化汇编指令。本发明实施例可以通过随机化汇编指令与目标代码一一对应的指令集,将随机化汇编指令转化为目标代码。本发明实施例通过对初始汇编指令中目标指令进行随机化置换操作获得随机化汇编指令,使得攻击者难以通过随机化汇编指令转化的目标代码中的漏洞进行代码注入攻击,保证目标代码的安全性。
可以理解的是,当所述编译选项参数对应的编译等级包括指令级但不包括控制流级时,本发明实施例可以在将源代码映射为初始中间代码之后,不对该初始中间代码进行控制流伪造处理,直接将该初始中间代码转化为目标语言的初始汇编指令。
同理,当所述编译选项参数对应的编译等级包括控制流级但不包括指令级时,无需对初始汇编指令中的至少一个预设指令类型的目标指令进行随机化置换操作,直接确定初始汇编指令对应的目标代码。
需要注意的是,当所述编译选项参数对应的编译等级即不包括指令级也不包括控制流级时,本发明实施例可以将直接将源代码映射为中间代码,接着将该中间代码转化为目标语言的汇编指令,最后确定与该汇编指令对应的目标代码。
S300、分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。
其中,库函数是技术人员预先编辑好的函数放在一个库文件里,以便相关程序可以调用该函数。其中,库文件分为静态库文件和动态库文件,静态库文件的文件名后缀为“.lib”,动态库文件的文件名后缀为“.dll”。在预设函数库中存在多个库函数,在预设函数库中的各库函数互为异构等价关系,即各库函数的组成结构不同,但实现的功能相同。本发明实施例根据用户输入的异构度,在预设函数库中调用预设数量的库函数,将目标代码分别与各库函数构建为异构功能等价执行文件,获得预设数量的异构功能等价执行文件。
本发明实施例提供的一种代码处理方法,可以通过获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度;将所述源代码编译为目标代码;分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。因此,本发明实施例无需构建复杂的异构等价的系统架构即可获得具有很强的动态性、异构性和随机性等不确定性特点的异构功能等价执行文件,节省了技术人员设计软件的时间,进而提升了软件设计的效率。
可选的,本发明实施例可以根据步骤S100至S300的过程,生成编译日志并将该编译日志发送给用户。
可选的,为了测试目标代码与各库函数构建的异构功能等价执行文件所具备的功能性和安全性,基于图1所示方法,如图5所示,本发明实施例提供的另一种代码处理方法,在步骤S300之后,还可以包括:
S400、在预设的执行体调度池中获得数量为所述预设数量的执行体。
其中,执行体可以是通过拟态构造web服务器提供存储和执行异构功能等价执行文件服务的实体。本发明实施例可以根据预设数量的异构功能等价执行文件对执行体进行调度,在预设的执行体调度池中获得与异构功能等价执行文件数量相同的执行体。
S500、控制各执行体均运行一个所述异构功能等价执行文件,其中,各执行体之间运行的所述异构功能等价执行文件不同。
S600、对运行所述异构功能等价执行文件的各执行体进行测试,获得各执行体输出的测试结果。
本发明实施例可以使用预先准备好的测试程序输入至运行异构功能等价执行文件的执行体中进行测试,以测试异构功能等价执行文件是否可以正常执行程序以及是否可以正确识别出攻击行为等功能。
具体的,如图6所示,本发明实施例提供的另一种代码处理方法,步骤S600可以包括:
S610、将功能测试程序分别输入至运行所述异构功能等价执行文件的各执行体中,获得各执行体输出的功能测试结果。
其中,功能测试程序是技术人员设计用于测试运行异构功能等价执行文件的执行体是否可以正确实现程序功能。例如,功能测试程序可以测试运行异构功能等价执行文件的执行体是否存在常规错误导致无法正确实现程序功能,其中常规错误可以包括功能错误或遗漏、界面错误、数据结构或外部数据库访问错误、初始化错误和性能错误在内的至少一个错误。如果某一运行异构功能等价执行文件的执行体的功能测试没有常规错误,则确定该运行异构功能等价执行文件的执行体的功能测试结果为通过,反之,则确定该运行异构功能等价执行文件的执行体的功能测试结果为不通过。本发明实施例通过功能测试程序对运行异构功能等价执行文件的各执行体进行功能测试,可以获得各执行体的功能测试结果。
S620、根据各执行体输出的功能测试结果,判断功能测试是否通过,如果通过,则执行步骤S630。
本发明实施例可以根据各执行体输出的功能测试结果,当各执行体输出的功能测试结果均为通过时,则可以确定功能测试通过,反之,则可以确定功能测试不通过。本发明实施例可以根据各执行体输出的功能测试结果,确定以目标代码为基础构建出的各异构功能等价执行文件是否可以正确实现程序功能。
可选的,当确定功能测试不通过时,本发明实施例可以向用户提示功能测试不通过的信息。
S630、将安全测试程序分别输入至运行所述异构功能等价执行文件的各执行体中,获得各执行体输出的安全测试结果。
其中,安全测试程序的类型可以分为正常行为类型和攻击行为类型。正常行为类型的安全测试程序不对执行体进行攻击操作,而攻击行为类型的安全测试程序会对执行体进行攻击操作。一般而言,当使用正常行为类型的安全测试程序对运行异构功能等价执行文件的各执行体进行测试时,各执行体输出的安全测试结果相同,当使用攻击行为类型的安全测试程序对运行异构功能等价执行文件的各执行体进行测试时,各执行体输出的安全测试结果不同或部分不同。
可选的,本发明实施例可以根据各执行体输出的安全测试结果以及预设的程序类型识别条件,确定程序类型识别结果。程序类型识别结果为各执行体对安全测试程序进行表决后确定的该安全测试程序的识别类型。例如:各执行体包括执行体A、执行体B和执行体C,执行体A输出的安全测试结果为“0”,执行体B输出的安全测试结果为“1”,执行体C输出的安全测试结果为“0”,当预设的程序类型识别条件为“半数以上的执行体是输出的安全测试结果相同时,确定安全测试结果的识别类型为正常行为类型,否则,确定安全测试结果的识别类型为攻击行为类型”时,程序类型识别结果中对安全测试程序识别的识别类型为正常行为类型。可以理解的是,预设的程序类型识别条件可以根据技术人员的需求进行设置,本发明实施例在此不作进一步的限定。
可选的,本发明实施例可以通过判断程序类型识别结果中对安全测试程序的识别类型与该安全测试程序的实际类型是否相同,确定安全测试是否通过。当识别类型与安全测试程序的实际类型相同时,安全测试通过,当识别类型与安全测试程序的实际类型不相同时,安全测试不通过。本发明实施例可以通过程序类型识别结果中对安全测试程序的识别类型与该安全测试程序的实际类型进行比较,确定以目标代码为基础构建的各异构功能等价执行文件是否能够正确识别出攻击者的攻击行为,进而确定以目标代码为基础构建的各异构功能等价执行文件的安全性。
可选的,本发明实施例可以根据包括各执行体输出的功能测试结果、功能测试是否通过的结果、各执行体输出的安全测试结果、安全测试程序的实际类型、程序类型识别结果中至少一种信息,生成测试日志并将测试日志发送给用户。
可选的,基于图1所示的方法,如图7所示,本发明实施例提供的另一种代码处理方法,可以应用在云服务端,所述云服务端与web端通信连接,在步骤S300之后,所述方法还可以包括:
S700、将各异构功能等价执行文件发送至所述web端。
具体的,本发明实施例可以在web端为用户提供编辑和输入源代码和编译方式的输入界面,用户可以在该输入界面中对源代码进行编辑,以及确定编译方式中的编译选项参数和异构度。在用户编辑完成源代码以及确定编译方式之后,可以通过web端将源代码和编译方式发送至云服务端,当云服务端处理完毕之后,将获得的各异构功能等价执行文件发送至所述web端,用户可以在web端上获得该各异构功能等价执行文件。本发明实施例利用云服务端的计算能力大于同等配置独立服务器的特点,提升代码处理速度,节省技术人员设计软件的时间。可选的,本发明实施例也可以将编译日志和测试日志发送至web端,以使用户可以获得可以在web端查看编译日志和测试日志。
与上述方法实施例相对应,本发明实施例还提供一种代码处理装置,其结构如图8所示可以包括:输入获得单元100、编译单元200和执行文件生成单元300。
所述输入获得单元100,用于获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度;
所述编译单元200,用于将所述源代码编译为目标代码;
所述执行文件生成单元300,用于分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。
本发明实施例提供的一种代码处理装置,可以通过获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度;将所述源代码编译为目标代码;分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。因此,本发明实施例无需构建复杂的异构等价的系统架构即可获得具有很强的动态性、异构性和随机性等不确定性特点的异构功能等价执行文件,节省了技术人员设计软件的时间,进而提升了软件设计的效率。
可选的,所述编译方式包括编译选项参数,所述编译单元200可以具体用于将所述源代码按照与所述编译选项参数对应的编译等级编译为目标代码。
可选的,所述编译单元200可以包括:代码映射子单元、控制流伪造处理子单元、代码转化子单元和随机化置换子单元,在所述编译选项参数对应的所述编译等级包括控制流级和指令级时:
所述代码映射子单元,用于将所述源代码映射为初始中间代码;
所述控制流伪造处理子单元,用于对所述初始中间代码进行与所述控制流级对应的控制流伪造处理,获得加密中间代码;
所述代码转化子单元,用于将所述加密中间代码转化为目标语言的初始汇编指令;
所述随机化置换子单元,用于对所述初始汇编指令中的至少一个预设指令类型的目标指令进行与所述指令级对应的随机化置换操作,获得随机化汇编指令并确定与所述随机化汇编指令对应的目标代码。
可选的,所述代码映射子单元可以具体用于对所述源代码中的指定字符串进行异构加密,获得异构加密代码;将所述异构加密代码映射为初始中间代码。
可选的,所述控制流伪造处理子单元可以具体用于对所述初始中间代码进行控制流平展化,获得加密中间代码。
可选的,所述控制流伪造处理子单元可以具体用于对所述初始中间代码进行控制流平展化,获得加密中间初始代码;在所述加密中间初始代码中添加预设伪造控制流和/或预设伪造指令,获得加密中间代码。
可选的,所述控制流伪造处理子单元可以具体用于将所述初始中间代码中的控制语句随机转化为switch分支选择语句;和/或,将所述初始中间代码中的跳转语句和分支语句随机添加条件跳转指令。
可选的,所述随机化置换子单元可以具体用于对所述初始汇编指令中的任一指令:确定该指令的操作码,在预设操作码数据库中查询是否存在所述操作码,如果存在,则确定该指令为预设指令类型的目标指令,对该目标指令进行随机化置换操作,其中,所述随机化置换操作包括如下操作方式中的至少一种操作方式:
操作方式一:使用多个替换指令替换该目标指令;
操作方式二:调换该目标指令在所述初始汇编指令中的位置;
操作方式三:在与该目标指令相邻的位置插入干扰指令。
可选的,本发明实施例提供的另一种代码处理装置,还可以包括:执行体获得单元、文件运行控制单元和测试结果获得单元。
所述执行体获得单元,用于在预设的执行体调度池中获得数量为所述预设数量的执行体。
所述文件运行控制单元,用于控制各执行体均运行一个所述异构功能等价执行文件,其中,各执行体之间运行的所述异构功能等价执行文件不同。
所述测试结果获得单元,用于对运行所述异构功能等价执行文件的各执行体进行测试,获得各执行体输出的测试结果。
可选的,本发明实施例提供的另一种代码处理装置,所述测试结果获得单元可以包括:功能测试结果获得子单元、功能测试结果判断子单元和安全测试结果获得子单元。
所述功能测试结果获得子单元,用于将功能测试程序分别输入至运行所述异构功能等价执行文件的各执行体中,获得各执行体输出的功能测试结果。
所述功能测试结果判断子单元,用于根据各执行体输出的功能测试结果,判断功能测试是否通过,如果通过,则触发所述安全测试结果获得子单元。
所述安全测试结果获得子单元,用于将安全测试程序分别输入至运行所述异构功能等价执行文件的各执行体中,获得各执行体输出的安全测试结果。
可选的,本发明实施例提供的另一种代码处理装置,还可以包括发送单元。
所述装置应用在云服务端,所述云服务端与web端通信连接,当所述执行文件生成单元300分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件之后,触发所述发送单元用于将各异构功能等价执行文件发送至所述web端。
所述代码处理装置包括处理器和存储器,上述输入获得单元100、编译单元200和执行文件生成单元300等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来获得异构功能等价执行文件。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述代码处理方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述代码处理方法。
本发明实施例提供了一种设备,设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执行上述的代码处理方法。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有上述代码处理方法步骤的程序。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种代码处理方法,其特征在于,包括:
获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度;
将所述源代码编译为目标代码;
分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。
2.根据权利要求1所述的方法,其特征在于,所述编译方式包括编译选项参数,所述将所述源代码编译为目标代码包括:
将所述源代码按照与所述编译选项参数对应的编译等级编译为目标代码。
3.根据权利要求2所述的方法,其特征在于,在所述编译选项参数对应的所述编译等级包括控制流级和指令级时,所述将所述源代码按照与所述编译选项参数对应的编译等级编译为目标代码,包括:
将所述源代码映射为初始中间代码;
对所述初始中间代码进行与所述控制流级对应的控制流伪造处理,获得加密中间代码;
将所述加密中间代码转化为目标语言的初始汇编指令;
对所述初始汇编指令中的至少一个预设指令类型的目标指令进行与所述指令级对应的随机化置换操作,获得随机化汇编指令并确定与所述随机化汇编指令对应的目标代码。
4.根据权利要求3所述的方法,其特征在于,所述将所述源代码映射为初始中间代码,包括:
对所述源代码中的指定字符串进行异构加密,获得异构加密代码;
将所述异构加密代码映射为初始中间代码。
5.根据权利要求3所述的方法,其特征在于,所述对所述初始中间代码进行与所述控制流级对应的控制流伪造处理,获得加密中间代码,包括:
对所述初始中间代码进行控制流平展化,获得加密中间代码。
6.根据权利要求3所述的方法,其特征在于,所述对所述初始中间代码进行与所述控制流级对应的控制流伪造处理,获得加密中间代码,包括:
对所述初始中间代码进行控制流平展化,获得加密中间初始代码;
在所述加密中间初始代码中添加预设伪造控制流和/或预设伪造指令,获得加密中间代码。
7.根据权利要求5至6中任一所述的方法,其特征在于,所述对所述初始中间代码进行控制流平展化,包括:
将所述初始中间代码中的控制语句随机转化为switch分支选择语句;
和/或,将所述初始中间代码中的跳转语句和分支语句随机添加条件跳转指令。
8.根据权利要求2所述的方法,其特征在于,所述对所述初始汇编指令中的至少一个预设指令类型的目标指令进行与所述指令级对应的随机化置换操作,包括:
对所述初始汇编指令中的任一指令:确定该指令的操作码,在预设操作码数据库中查询是否存在所述操作码,如果存在,则确定该指令为预设指令类型的目标指令,对该目标指令进行随机化置换操作,其中,所述随机化置换操作包括如下操作方式中的至少一种操作方式:
操作方式一:使用多个替换指令替换该目标指令;
操作方式二:调换该目标指令在所述初始汇编指令中的位置;
操作方式三:在与该目标指令相邻的位置插入干扰指令。
9.根据权利要求1所述的方法,其特征在于,所述方法应用在云服务端,所述云服务端与web端通信连接,在所述分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件之后,所述方法还包括:
将各异构功能等价执行文件发送至所述web端。
10.一种代码处理装置,其特征在于,包括:输入获得单元、编译单元和执行文件生成单元,
所述输入获得单元,用于获得用户输入的源代码和编译方式,其中,所述编译方式包括异构度;
所述编译单元,用于将所述源代码编译为目标代码;
所述执行文件生成单元,用于分别调用预设函数库中预设数量的各库函数,对所述各库函数中每一个库函数:与目标代码构建为一个异构功能等价执行文件,其中,所述预设数量等于所述异构度的数值,所述预设函数库中的库函数之间互为异构等价关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010289686.6A CN111475152B (zh) | 2020-04-14 | 2020-04-14 | 一种代码处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010289686.6A CN111475152B (zh) | 2020-04-14 | 2020-04-14 | 一种代码处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475152A true CN111475152A (zh) | 2020-07-31 |
CN111475152B CN111475152B (zh) | 2023-03-14 |
Family
ID=71751992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010289686.6A Active CN111475152B (zh) | 2020-04-14 | 2020-04-14 | 一种代码处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475152B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113741875A (zh) * | 2021-09-14 | 2021-12-03 | 郑州昂视信息科技有限公司 | 一种拟态化程序执行装置、方法、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441569A (zh) * | 2008-11-24 | 2009-05-27 | 中国人民解放军信息工程大学 | 基于异构可重构体系结构面向任务流的新型编译方法 |
US20100153934A1 (en) * | 2008-12-12 | 2010-06-17 | Peter Lachner | Prefetch for systems with heterogeneous architectures |
WO2012056023A1 (en) * | 2010-10-28 | 2012-05-03 | Innowake Gmbh | Method and system for generating code |
CN103116513A (zh) * | 2012-07-13 | 2013-05-22 | 北京时代民芯科技有限公司 | 一种异构多核处理器编译器 |
US20130185704A1 (en) * | 2012-01-18 | 2013-07-18 | International Business Machines Corporation | Providing performance tuned versions of compiled code to a cpu in a system of heterogeneous cores |
CN104820613A (zh) * | 2015-05-27 | 2015-08-05 | 中国科学院自动化研究所 | 一种异构多核程序的编译方法 |
US20160179484A1 (en) * | 2013-09-03 | 2016-06-23 | Huawei Technologies Co., Ltd. | Code Generating Method, Compiler, Scheduling Method, Scheduling Apparatus and Scheduling System |
US20160357530A1 (en) * | 2015-06-05 | 2016-12-08 | Apple Inc. | Method and apparatus for intermediate representation of applications |
CN109101237A (zh) * | 2018-08-01 | 2018-12-28 | 北京顶象技术有限公司 | 代码的加密编译方法及装置 |
CN110059456A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 代码保护方法、代码保护装置、存储介质与电子设备 |
US20190324755A1 (en) * | 2019-06-27 | 2019-10-24 | Intel Corporation | Methods and apparatus for intentional programming for heterogeneous systems |
US20200104106A1 (en) * | 2018-09-30 | 2020-04-02 | Shanghai Denglin Technologies Co., Ltd | Joint compilation method and system for heterogeneous hardware architecture |
-
2020
- 2020-04-14 CN CN202010289686.6A patent/CN111475152B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441569A (zh) * | 2008-11-24 | 2009-05-27 | 中国人民解放军信息工程大学 | 基于异构可重构体系结构面向任务流的新型编译方法 |
US20100153934A1 (en) * | 2008-12-12 | 2010-06-17 | Peter Lachner | Prefetch for systems with heterogeneous architectures |
WO2012056023A1 (en) * | 2010-10-28 | 2012-05-03 | Innowake Gmbh | Method and system for generating code |
US20130185704A1 (en) * | 2012-01-18 | 2013-07-18 | International Business Machines Corporation | Providing performance tuned versions of compiled code to a cpu in a system of heterogeneous cores |
CN103116513A (zh) * | 2012-07-13 | 2013-05-22 | 北京时代民芯科技有限公司 | 一种异构多核处理器编译器 |
US20160179484A1 (en) * | 2013-09-03 | 2016-06-23 | Huawei Technologies Co., Ltd. | Code Generating Method, Compiler, Scheduling Method, Scheduling Apparatus and Scheduling System |
CN104820613A (zh) * | 2015-05-27 | 2015-08-05 | 中国科学院自动化研究所 | 一种异构多核程序的编译方法 |
US20160357530A1 (en) * | 2015-06-05 | 2016-12-08 | Apple Inc. | Method and apparatus for intermediate representation of applications |
CN109101237A (zh) * | 2018-08-01 | 2018-12-28 | 北京顶象技术有限公司 | 代码的加密编译方法及装置 |
US20200104106A1 (en) * | 2018-09-30 | 2020-04-02 | Shanghai Denglin Technologies Co., Ltd | Joint compilation method and system for heterogeneous hardware architecture |
CN110968320A (zh) * | 2018-09-30 | 2020-04-07 | 上海登临科技有限公司 | 针对异构硬件架构的联合编译方法和编译系统 |
CN110059456A (zh) * | 2019-04-19 | 2019-07-26 | 同盾控股有限公司 | 代码保护方法、代码保护装置、存储介质与电子设备 |
US20190324755A1 (en) * | 2019-06-27 | 2019-10-24 | Intel Corporation | Methods and apparatus for intentional programming for heterogeneous systems |
Non-Patent Citations (4)
Title |
---|
RAFAEL SOUSA等: ""Data Coherence Analysis and Optimization for Heterogeneous Computing"", 《2017 29TH INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE AND HIGH PERFORMANCE COMPUTING (SBAC-PAD)》 * |
RALPH DUNCAN等: ""Mapping Exceptions to High-Level Source Code on a Heterogeneous Architecture"", 《2018 9TH INTERNATIONAL SYMPOSIUM ON PARALLEL ARCHITECTURES, ALGORITHMS AND PROGRAMMING (PAAP)》 * |
刘勤让等: ""面向拟态安全防御的异构功能等价体调度算法"", 《通信学报》 * |
李雁冰等: ""一种面向异构众核处理器的并行编译框架"", 《软件学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113741875A (zh) * | 2021-09-14 | 2021-12-03 | 郑州昂视信息科技有限公司 | 一种拟态化程序执行装置、方法、电子设备及存储介质 |
CN113741875B (zh) * | 2021-09-14 | 2024-05-03 | 郑州昂视信息科技有限公司 | 一种拟态化程序执行装置、方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111475152B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107229848A (zh) | 一种代码加固方法和装置 | |
Zhao et al. | “TrustDroid™”: Preventing the use of SmartPhones for information leaking in corporate networks through the used of static analysis taint tracking | |
CN110414261B (zh) | 一种数据脱敏方法、装置、设备及可读存储介质 | |
CN111259395A (zh) | 智能合约的利用程序获取方法、装置及存储介质 | |
CN105760787B (zh) | 用于检测随机存取存储器中的恶意代码的系统及方法 | |
KR101861341B1 (ko) | 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법 | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
CN101853200A (zh) | 一种高效动态软件漏洞挖掘方法 | |
CN114996126A (zh) | 一种针对eosio智能合约的漏洞检测方法及系统 | |
US20240143739A1 (en) | Intelligent obfuscation of mobile applications | |
Tsankov | Security analysis of smart contracts in datalog | |
CN112419057A (zh) | 智能合约的日志生成及保存方法、装置、设备和存储介质 | |
CN111475152B (zh) | 一种代码处理方法及装置 | |
CN112767155B (zh) | 智能合约安全交易序列生成方法、装置、介质和设备 | |
Argañaraz et al. | Detection of vulnerabilities in smart contracts specifications in ethereum platforms | |
Son et al. | A smart contract weakness and security hole analyzer using virtual machine based dynamic monitor | |
CN111475168A (zh) | 一种代码编译方法及装置 | |
Baradaran et al. | A unit-based symbolic execution method for detecting memory corruption vulnerabilities in executable codes | |
CN115168861A (zh) | 数据安全验证方法、装置、设备及存储介质 | |
Arnatovich et al. | Empirical Comparison of Intermediate Representations for Android Applications. | |
Zhang et al. | BiAn: Smart Contract Source Code Obfuscation | |
Scherer et al. | I/o interaction analysis of binary code | |
CN109460640A (zh) | 一种Java程序保护方法、装置、设备及可读存储介质 | |
Ziadia et al. | K-Smali: An Executable Semantics for Program Verification of Reversed Android Applications | |
CN113946804B (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 |