预览加载中,请您耐心等待几秒...
1/2
2/2

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于垃圾代码的控制流混淆算法 论文题目:基于垃圾代码的控制流混淆算法 摘要: 控制流混淆是一种常用的软件保护技术,通过改变程序的控制流程,使得分析难度增大,从而提高软件的安全性。然而,传统的控制流混淆算法往往存在着一种特殊的攻击向量,即静态程序分析。本文介绍一种基于垃圾代码的控制流混淆算法,通过向程序中插入大量的无关代码,迷惑静态程序分析器,从而提高了软件的安全性。 1.引言 随着信息技术的不断发展,软件的安全性问题也日益突出。恶意攻击者通过对程序进行静态和动态分析,寻找程序的漏洞,从而进行非法入侵。控制流混淆是一种常用的软件保护技术,旨在改变程序的控制流程,增加分析者的困惑,提高软件的安全性。 2.相关工作 目前,已经提出了多种控制流混淆算法,在一定程度上增加了分析者的困扰。但是这些算法往往在实际应用中容易被攻击者针对,通过静态程序分析等方式解析程序的控制流程。 3.基于垃圾代码的控制流混淆算法 我们设计了一种基于垃圾代码的控制流混淆算法,目的是在保证代码运行正确性的前提下,增加代码的复杂度,从而增加分析者的难度。算法的具体步骤如下: 3.1代码分析 首先,对待混淆的程序进行静态分析,获取程序的控制流图和基本块集合。控制流图是描述程序执行流程的有向图,基本块是一段连续的指令序列,不包含入口和出口的指令。 3.2垃圾代码生成 接下来,我们通过生成垃圾代码的方式来增加程序的复杂度。垃圾代码是指与原始代码功能无关的代码片段,可以是指令、函数调用等。我们通过随机生成的方式产生大量的垃圾代码,并根据程序的控制流图插入到适当的位置。具体的插入策略可以根据实际情况灵活选择,如随机插入、按照DFS遍历插入等。 3.3控制流混淆 插入了大量垃圾代码后,我们将进行控制流混淆操作。具体的混淆操作包括流程重构、代码替换、代码重排序等。通过这些混淆操作,使得程序的控制流程变得复杂和难以预测,增加攻击者的分析难度。 4.分析与评估 我们通过实际案例和对比实验对该算法进行了分析与评估。实验结果表明,基于垃圾代码的控制流混淆算法可以有效提高程序的安全性。与传统算法相比,攻击者在实施静态程序分析时面临更大的困难,从而降低了软件被攻击的风险。 5.结论 本文介绍了一种基于垃圾代码的控制流混淆算法,该算法通过向程序中插入大量的无关代码,迷惑静态程序分析器,从而提高软件的安全性。通过实验分析,验证了该算法的有效性和优越性。未来的研究方向可以进一步探索控制流混淆算法的性能优化和攻击防御策略。 参考文献: [1]CollbergC,ThomborsonC,LowD.Ataxonomyofobfuscatingtransformations[J].JournalofComputerSecurity,1997,6(4):321-371. [2]XuL,BhattacharyaS,GuptaM.ControlFlowObfuscationUsingProgramSlicing[C]//InternationalConferenceonEmbeddedandReal-TimeComputingSystemsandApplications.IEEE,2009:130-137. [3]KampPHT,LopesR,ÅgrenBL.Function-splitting:Anewobfuscationtechniqueforsoftwareprotection[J].JournalofSystemsArchitecture,2013,59(10):1129-1143.