论文部分内容阅读
计算机软件是一种极易复制篡改的特殊商品,加上各种政治经济和文化的原因,使得目前对于软件的知识产权保护十分薄弱,本文提出了几种技术手段,力图在技术上提高对软件知识产权的保护力度。 本文首先列举了目前存在的保护技术,包括硬件辅助的软件保护技术,加壳技术,代码混淆技术,软件水印技术,防篡改技术等等。 在此基础上本文提出了3个自己的保护算法:基于自动机的指令自修改技术:ABSMC(automata based self modifv code)技术是对传统的混淆技术的一种改进;自适应动态图水印技术:SADGW(Self Adaptive Dynamic Graph Watermarks)是对动态图水印技术的发展;超粒度混杂技术:HGI(Hyper Granularity Immingling)和基于瘦虚拟机的指令集交替技术:TVMBISA(thin virtual machine based instruction set alternation)是对传统的加壳技术的一种改进。并且本文在提出这些算法后,分析说明了这些算法在保证运行效率的情况下,能大大提高了目标软件的安全性。 ABSMC技术的基本思想是,在目标软件中插入许多会随着程序的运行而发生改变的代码(使用自动机控制代码的变化),由于很多代码都是在程序运行的时候动态生成的,所以攻击者很难从静态代码直接得到目标软件的意图,也就是说本技术能有效的防止攻击者的静态分析,并且在一定程度上能减缓攻击者的动态调试的进行,所以比过去的混淆技术在安全性方面有很大的提高。 SADGW技术是根据以往针对动态图水印技术的各种攻击方法,而提出的改进方案。自适应动态图水印技术分析目标软件的数据结构,然后提取出一部分放到水印中去,然后对使用这部分数据结构的代码进行混淆。这样攻击者对目标软件中的水印修改的时候,就会造成目标软件的数据结构被修改,最终导致目标软件运行失败。 HGI技术是对本地代码进行保护的,它通过高安全性的加密算法,对目标软件进行分割加密,保证内存中只有一块是明文的表示形式。并且各个块之间都要进行校验,所以大大提高了攻击者的攻击难度。而TVMBISA在HGI的基础上,利用瘦虚拟机在保证安全行的前提下,大大提高了运行效率。 本文实现了一个可扩展的保护系统:FisherProtector,用于对目标代码进行保护。本系统包括反汇编,反编译,用户要求控制,各种保护插件(每种插件是一种保护算法的实现)。通过本系统不但为本文的算法提供了实践的平台,并且以后的各种算法,只要符合本文提出的接口标准,都可以借助本系统运行,省去了很多重复性的工作。本系统由多种语言协同开发而成,对于托管代码主要由C#与MSIL汇编生成的程序处理,而本地代码主要由C++生成的程序处理。目前虽然本系统仅仅支持最核心的指令,但是对特定软件的执行结果证明了本系统的有用性和可靠性。 最后本文借助微软的测试工具(AHC和LCSC Managed Code Benchmark)证明了,本文实现的各种保护插件在运行时间,保护强度上都是符合原来的设计要求的。