论文部分内容阅读
堆溢出是指超长的数据复制到动态分配的内存块,导致超越边界并覆盖内存块的管理结构或内容。它是缓冲区溢出的一种形式,攻击者可以利用覆盖的地方使程序流程发生跳转并执行攻击者指定的指令来达到攻击的目的。堆溢出攻击是一种重要而有效的计算机网络攻击。研究堆溢出自动生成技术,可以为计算机网络对抗(CNO)提供关键的攻击手段。本文分析并研究堆溢出技术和堆溢出代码自动生成描述语言,主要内容包括:首先,指出目前堆溢出技术存在的问题。即关于生成堆溢出代码并予以利用方面的研究,主要是集中于研究不同的系统和不同溢出类型下的攻击技术和方法等几个方面,尚没能给出通用的自动化生成方法。可利用的堆溢出代码都需根据具体不同的方法手工编写。在堆溢出描述方面的研究还缺少公认的形式语言。其次,针对上述存在的问题,本文通过分析堆溢出的控制信息以及相关的利用或攻击类型,抽象出堆溢出代码的一种构造规律,据此建立自动生成堆溢出代码的自动机模型,并予以形式证明其生成逻辑的可达性。再次,基于上述模型,相应地设计了一种自动生成堆溢出代码的描述语言,以此支持堆溢出代码的自动化描述。并根据语言的词法、语法和语义规则设计,运用Lex和Yacc等开发工具,用VC++6.0实现堆溢出代码的自动生成系统。最后,给出验证的目标、环境和测试用例,对堆溢出代码自动生成系统予以实际验证,实验结果的分析结论表明,按照本文的技术路线,该系统在linux下自动生成的堆溢出代码符合项目的要求。