论文部分内容阅读
移动代理是由用户创建并代表其创建者执行特定任务的程序对象。它的特点是其移动性和智能性。当移动代理迁移到某一台主机上执行时,其代码及数据状态完全暴露在主机之上。如果该主机是恶意主机,它就可能通过修改移动代理的代码或者其数据状态来达到自己的目的,如伪装成其它的代理以攻击其它主机。为了防止恶意主机对移动代理的有目的的篡改,传统的解决方案是采用参考状态的方法来保护代理的代码及数据状态。这种方法都是在攻击发生后检测攻击,而不能够防止攻击的发生。为了在攻击发生前就能够阻止它,人们提出了代码迷惑技术,它是防止恶意主机对移动代理进行有目的的篡改的一种有效的方法。
代码迷惑技术的研究主要包括代码迷惑算法的研究及代码迷惑算法效能评估。代码迷惑算法的研究又可以从三个层次来进行,即:语法层次,控制流层次和数据流层次。基于对程序分析算法的研究,本文提出了一系列代码迷惑算法,并给出了代码迷惑算法效能评估的两种方法。本文的主要内容、贡献及创新包括:
(1)语法层次的代码迷惑技术
在语法层次,由于各函数的参数序列,即参数类型,数目及排序之间可能互相不同,程序分析就可以利用这种区别来确定各函数调用点的被调用函数。这对于程序理解有着很大的影响,因为它使得函数调用关系可以不必经过程序分析就可得到。本文提出一种语法层次的迷惑算法,它的基本思想是利用通用参数集来消除各函数之间的参数集的差别,从而切断函数调用点与函数定义之间的联系,使得函数调用关系信息必须通过程序分析才能获得。因此语法层次的迷惑是控制流迷惑及数据流迷惑的基础。
(2)基于多分支语句的控制流迷惑算法
控制流迷惑主要讨论对代码的控制流信息进行迷惑的技术。控制流信息是程序分析的基础,它分成过程内控制流及过程间控制流,因此控制流迷惑也分成过程内控制流迷惑及过程间控制流迷惑。过程内控制流迷惑算法是通过某些变换使得迷惑代码的控制流图中各基本块之间的关系变得混淆,而过程间控制流迷惑则是指对函数调用关系的迷惑。基于switch-case结构,作者分别提出了过程内控制流迷惑算法及过程间控制流迷惑算法,并提出了一种对迷惑算法引入的switch结构中分支变量进行保护的算法,具有很强的实用性。基于LCC编译器,本文实现了过程内控制流迷惑算法。
(3)基于函数指针数组的代码流迷惑算法
数据流迷惑是代码迷惑的最终目的。软件篡改正需要通过程序分析获得程序中有关数据之间的关系,这是软件篡改中关键的一步。数据流迷惑主是利用数据流分析中的一些难点而实施的,如指针分析及函数指针分析。本文作者提出了一种基于函数指针数组的数据流迷惑算法,通过利用函数指针调用来代替函数名的直接调用,使得程序分析算法对程序中函数调用关系的分析集中于函数指针别名的分析,从而使得对该程序的分析是NP完全问题。
(4)代码迷惑算法的效能评估方法
代码迷惑算法的效能是指代码迷惑算法对程序分析的精确度及复杂度的影响程度。本文作者提出两种效能评估方法,即定性评估与定量评估。定性评估,对典型的程序利用待评估的代码迷惑算法进行迷惑,对迷惑前后的程序采用常用的程序分析算法进行分析,程序分析结果的变化越大,代表代码迷惑算法的效能越高;而定量评估则首先提出了单循环路径的概念,并且通过对程序分析的常用方法进行分析,抽象,将程序分析的精确度与程序控制流图所具有的单循环路径数目联系,并以代码迷惑算法对程序迷惑前后程序控制流图中的单循环路径数目的比值作为代码迷惑算法效能的量值。同时本文还给出了单循环路径数目的计算方法。