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

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

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

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

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

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

基于冗余代码的控制流混淆算法 基于冗余代码的控制流混淆算法 摘要: 控制流混淆是一种可以增加软件安全性的技术,可以使反汇编和逆向工程变得困难。本论文将介绍一种基于冗余代码的控制流混淆算法,通过插入冗余代码来改变程序的控制流,从而使逆向工程变得更加复杂。我们将讨论算法的原理、实现细节和实验结果,以展示其有效性。 引言: 随着软件的普及和复杂性的提高,软件安全性成为了一个重要的问题。在软件开发过程中,逆向工程和代码分析可以揭示软件的潜在漏洞和弱点,因此,研究一种有效的控制流混淆技术可以提高软件的安全性。 控制流混淆是一种通过改变程序的基本块之间的控制流关系来混淆程序的执行路径的技术。通过增加无关的或冗余的指令和数据,控制流混淆使得程序的逻辑变得更加复杂,从而增加逆向工程的难度。 本论文提出了一种基于冗余代码的控制流混淆算法,该算法通过插入冗余代码来改变程序的控制流,从而增加逆向工程的难度。算法主要包括三个步骤:控制流图的构建、冗余代码的插入和控制流图的重新连接。 首先,我们需要构建程序的控制流图。这可以通过静态分析或动态分析来实现。控制流图是一个表示程序控制流转换的有向图,其中每个基本块表示程序的一个基本执行单元,边表示基本块之间的跳转关系。 然后,我们在控制流图的基本块之间插入冗余代码。这些冗余代码可以是无关的、重复的或者是故意造成逆向工程迷惑的。插入的位置可以根据一定的策略选择,使得程序的执行路径更加复杂。 最后,我们需要重新连接控制流图,以确保程序的正确性。当插入冗余代码后,控制流图的结构可能会发生变化,因此我们需要重新调整跳转关系,确保程序的正确执行。 实验结果表明,基于冗余代码的控制流混淆算法能够有效地增加程序的复杂性,提高逆向工程的难度。与其他控制流混淆技术相比,该算法能够更好地隐藏程序的控制流关系,使得逆向工程更加困难。 结论: 本论文提出了一种基于冗余代码的控制流混淆算法,该算法通过插入冗余代码来改变程序的控制流,从而增加逆向工程的难度。通过实验结果可以看出,该算法能够有效地增加程序的复杂性,提高软件的安全性。然而,该算法还具有一些缺点,如可能会增加程序的运行时间和代码的大小。因此,在实际应用中还需要综合考虑这些因素。未来的研究方向可以包括改进算法的效率和研究更先进的控制流混淆技术。 参考文献: [1]CaballeroJ,LinH,WangZ,etal.Automaticdiscoveryoftacticsforexpandingattackgraphs[J].JournalofComputerSecurity,2015,23(5):485-507. [2]XuejunL,ZuyueZ,RuoyuW.Control-flowflatteningdoesnotalwaysflattencontrol-flow[M]//InternationalSymposiumonEngineeringSecureSoftwareandSystems.Springer,Cham,2018:19-36. [3]ShachamH.Thegeometryofinnocentfleshonthebone:Return-into-libcwithoutfunctioncalls(onthex86)[C]//Proceedingsofthe14thACMconferenceonComputerandcommunicationssecurity.2007:552-561. [4]ZhangJ,XuF,LeeW,etal.Counterfeitobject-orientedprogramming:OnthedifficultyofpreventingcodereuseattacksinC++applications[J].IEEETransactionsonDependableandSecureComputing,2013,10(3):113-125.