论文部分内容阅读
目前计算机安全领域内一个重要的研究内容就是对抗恶意主机攻击的软件保护技术。软件保护技术包括基于硬件的保护方式和基于软件的保护方式,代码混淆是一种有效实用的基于软件的保护技术。代码混淆是指对代码进行语义保留的转换,使得转换后的程序可读性差,攻击者从中难以获取有价值的信息,从而达到软件保护、防止软件盗版的目的。目前对代码混淆技术的研究主要集中在控制混淆和数据混淆上,这两种混淆方式具有较好的混淆强度和耐受性,但同时会增加混淆后程序的执行开销。本文提出了一种基于控制流平整的代码混淆算法,在提高程序的复杂度和抗攻击能力的同时,保证其执行开销,使混淆强度与执行开销有机结合。同时设计并实现了一种C#源代码混淆工具。本文主要工作如下:(1)研究当前代码混淆技术,针对现有控制流平整混淆算法高混淆强度下执行开销过载的缺陷做出新的改进。改进后的算法主要采用随机化的混淆技术实现了代码混淆的多样性,从而大幅度提高已有控制流平整混淆算法的混淆强度。此外,算法还通过控制混淆深度实现了混淆强度与执行开销的平衡,确保程序在实现高强度混淆的同时,降低其执行开销。(2)设计并实现了一种C#源代码混淆工具——CFFO(Control Flow Flattening Obfuscator),对CFFO的设计目标、系统结构、工作流程等内容进行详细介绍,并给出系统运行实例,通过实例进一步论证了新算法的有效性和准确性。(3)对CFFO进行功能和性能测试,白盒测试结果表明CFFO不存在影响混淆变换功能正确性的Bug,并通过具体的对比分析实验确定了CFFO的混淆深度阈值。在性能上,分别从CFFO混淆变换的正确性、混淆强度、耐受性和执行开销4个方面对CFFO进行攻击分析与测试,结合实验数据验证了CFFO混淆变换的正确性,同时表明CFFO具有较高的混淆强度、较强的耐受性、较低的性能过载。最后,将CFFO与另一款.NET混淆工具Xencode进行分析对比,通过实验数据表明CFFO的混淆强度高于Xencode。