论文部分内容阅读
多年来,软件已经从硬件附带的免费代码演变成了有独立价值的产物,几乎支持所有电子设备和系统的自动化。互联网时代的到来使得越来越多的软件分布于移动端,软件在人们生活中的地位进一步增强。与此同时,软件分析技术和工具也相应发展。软件分析工具的发展曾一度帮助软件开发者们分析并完善他们的软件程序,但不幸的是,随着软件重要性和价值的提升,相同的软件分析技术恶意地用于逆向软件系统,带来极大的经济损失。代码混淆技术是一种新兴的,能有效阻滞逆向工程的软件保护方法,它将程序转换成一种更为难读、更难修改的形式,故而选择代码混淆作为研究对象。本文以Linux平台上的可执行程序的软件保护为研究目的,在调研代码混淆背景,并且简要总结具有代表性的代码混淆技术的主要内容及其优缺点的基础上,重点针对二进制混淆算法性能损失较大及需消耗过多资源的不足创新性地提出一种结合白盒密码算法的动态自修改代码混淆技术。本文完成的工作主要包括:1、研究代码混淆相关技术,其中包含对代码混淆概念的阐述、从不同角度对代码混淆进行分类并且讨论如何评估混淆算法的有效性。2、分析实现基于白盒密码的动态自修改混淆所需要的关键技术。针对二进制程序的静态和动态逆向分析技术的特点,研究了ELF文件格式的组织结构、基于查找表的白盒DES算法以及动态自修改算法的中心思想。3、设计并实现结合白盒密码算法的动态自修改混淆算法。给出了该算法的设计思想和整体框架,详细阐述了该框架下混淆器以及动态解混淆这两部分的设计实现过程,并进一步应用自修改状态机算法增强安全性,在Linux平台上使用C语言实现该针对二进制代码的代码混淆技术。4、定义软件威胁模型,在该模型下设计相关实验测试本文提出的代码混淆技术的强度、适应性、开销以及隐蔽性指标,最后依据测试结果对算法进行性能评估。5、总结全文工作,讨论本文提出的混淆算法的待改进部分并展望未来应用场景。实验结果表明,本文提出的算法能够有效地抵御静态和动态攻击。同时,混淆后的程序额外增加的时间和空间不大,揭示了这种混淆开销较小。