论文部分内容阅读
反汇编和反编译等逆向技术的不断发展,对二进制程序代码的分析和理解产生了重大影响,在一定程度上解决了系统漏洞查找、程序代码优化等诸多难题。但是逆向技术的快速发展同时也带来了消极的一面,即全球软件盗版率逐年上升。作为最直接,也是最有效的对抗软件盗版的措施——软件保护技术也得到了长足的发展。在软件保护的研究领域当中,代码混淆技术能够在不改变被保护程序运行行为的前提下,能够有效的提高逆向分析的难度,因而该技术在近年的研究当中受到诸多关注。本文以目前研究最为广泛的基于源代码以及目标代码的代码混淆技术作为研究基础,从这两种代码混淆技术的不足出发,提出了一种新型的,基于微软COFF(Common Object File Format)平台的中间代码混淆技术。主要研究工作如下:首先,将中间代码混淆技术主要分为反汇编,混淆,代码生成三个阶段。针对反汇编阶段,本文提出了针对obj文件(微软平台下的中间代码文件)的反汇编算法。该算法能够在最大程度上提取出obj文件中的代码和数据,同时对符号表中符号进行重定位地址回填,最终反汇编生成语法格式正确的,且能够被正确编译的汇编源文件。其次,对于中间代码混淆的第二个阶段,即代码混淆阶段,本文提出了三种专门针对中间代码的混淆算法,包括敏感指令隐藏算法、等效花指令序列生成算法、指令控制流乱序算法。这三种算法分别从隐藏敏感指令、稀释核心代码、打乱程序控制流程三个不同方面来提供保护。同时三者间能够相互任意组合,并且可通过指定迭代次数来自由控制混淆强度。再次,在上述研究工作的基础上,本文实现了基于微软COFF平台的中间代码混淆系统。该系统集成了obj反汇编模块、中间代码混淆模块、编译链接模块,能够对单个或多个obj文件进行反汇编、混淆,并最终生成能够抵抗逆向分析的可执行程序。随后,针对中间代码混淆系统的功能和性能两方面进行了测试和分析。测试主要分为两部分,第一部分对obj反汇编器进行测试,第二部分中间代码混淆算法进行测试。最后,对现阶段研究工作进行了总结,并针对当前研究成果的种种不足,给出了进一步的改进方法和新的研究目标。