C程序内存安全性的运行时验证研究与实现

来源 :南京航空航天大学 | 被引量 : 2次 | 上传用户:wangfuqun
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
C程序内存安全问题是指用C语言编写的程序中存在的非法操作内存区间引起的安全问题,常见的有数组和指针访问越界、缓存区溢出和C库函数的的非法操作等。产生问题的原因是C语言没有提供边界安全检测的机制,例如在访问数组元素时,下标不在正常范围(即不在0到max之间,max是数组的长度),程序也会执行。在用C语言编写的程序中大量存在这一类问题,并严重威胁着软件安全。现在已经有了很多技术能检测出这些问题,但它们或多或少存在些缺陷。如模型化技术,它在系统建模精简了问题的规模的同时也忽略了很多实现细节;又如路径分析技术,虽然它能综合上下文信息进行判断来减少误报,但它存在漏报的情况,且当路径过多时,会检测缓慢,等等。本文提出了一种基于程序自动化插桩进行数组越界检测的运行时验证方法。我们通过分析数组越界的错误类型,根据这些类型分别研究相应的处理方法,设计了基于程序自动化插桩进行数组越界动态检测的算法,用实验说明了该方法的可行性。在数组越界检测的基础上,本文还提出了一种改进的基于对象的自动化检测技术。该技术改进结构体变量、多维数组的地址范围记录方式,用两次地址查询操作检测指针访问从一个有效内存块偏移到另一个有效内存块的情形,用平衡二叉树优化记录存储结构。最后实验说明了插桩后程序的运行时负载由原来的19.8%减少为1.5%,大幅度地降低了桩函数对程序执行性能的影响。
其他文献
中文命名实体识别是指识别出文本中特定的实体。它是机器翻译、文本分类、信息检索和自动文摘、自动问答等多种自然语言处理技术的基础。作为信息抽取的基本任务,为了促进其
学位
近年来,系统融合方法在机器翻译研究领域受到普遍的重视,取得了不错的效果。然而传统的系统融合都是黑箱的融合。即只用每个系统的翻译候选结果进行融合,这样虽然有着适用性
目前,以P2P为核心的流媒体技术应用已经取得了长足的发展,但是在IPv4网络环境下,由于流媒体本身的强实时性、P2P网络的动态性以及网络条件的局限,P2P流媒体体系在网络规模、
随着市场经济的发展,市场竞争也日益强烈,服装的个性化、流行元素以及突出的季节性影响迫使服装企业必须快速的抢占市场。因此,服装企业的生产必需快速而高效,尽可能的缩短生产周
心电图学是一门实践性很强的学科,其理论比较复杂、抽象,是诊断学教学中的重点和难点。要搞好心电图教学,必须与临床实践相结合。而在传统的心电图教学中,通常采用纸质的心电
概念格是近年来获得快速发展的数据分析的有力工具之一。它通过Hasse图表现出概念之间的泛化和例化关系,已在知识工程、数据挖掘、信息检索、软件工程和数字图书馆等领域得到
文本数据常用文档-词二维共现矩阵表示,大多数传统聚类算法属于单向聚类,即要么是对样本进行聚类,要么是对特征进行聚类,没有考虑到样本和特征之间自然存在的相互关系。尤其
包分类是根据数据包的头部字段将数据包按一定规则进行分类的过程,在路由器、防火墙和入侵检测等网络关键设备中均有广泛的应用。包分类技术是因特网提供一切有差别服务和其
TM多波段遥感图像的地物及其分类一直是遥感图像处理领域比较难解的问题。由于地物种类繁多,且各种不同的地物随着时间的推移和空间分布的不断变化,成像光谱作为多波段的地物