C++应用程序缺陷检测技术研究与实现

来源 :北京邮电大学 | 被引量 : 3次 | 上传用户:mqzt521
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
C++语言编程方式灵活、执行效率高,但是与Java等其他高级语言相比,需要开发人员手动管理内存的申请与释放,因此存在大量未定义行为,容易产生安全缺陷。内存管理缺陷和缓冲区溢出缺陷是C++应用程序中常见的安全缺陷,具有很高的隐蔽性和危害性,针对这两种缺陷的检测进行研究具有重要的现实意义。动态二进制插桩检测技术不需要程序的源代码,可以在程序动态运行过程中插入探针,实时跟踪记录程序的运行状态,为程序缺陷检测提供程序运行信息,因此在程序检测领域具有广泛的应用。二进制代码抽象层次低且具有平台相关性,因此加大了动态二进制插桩程序的编写难度。本文首先介绍了 C++应用程序中常见的缺陷类型和检测方法,并着重研究了动态插桩技术以及主流的二进制插桩平台,选取Pin作为本课题使用的插桩平台。接着对C++应用程序的缺陷检测技术进行研究,并针对C++应用程序的内存布局设计了基于组合映射的高效影子内存,内存占用仅为传统影子内存的35%左右。然后课题针对具体缺陷类型,提出了基于内存块可达性分析的内存泄漏检测方案、基于地址可访问判定的堆缓冲区溢出检测方案以及基于局部变量边界映射的栈缓冲区溢出检测方案。在上述研究的理论基础上,设计实现了一款缺陷检测工具,使用二进制插桩平台Pin对检测程序进行插桩分析,基于指令插桩和库函数替换技术实现对程序运行状态的跟踪,将程序内存操作信息记录在影子内存中,根据影子内存记录的内存信息和设计的检测机制实现对程序的缺陷检测。最后通过实验对检测方法的运行开销和准确性进行测试,证明了方法的有效性。
其他文献
在小学语文教学中,作文教学占据着重要的位置。它是小学语文教学的重要组成部分,是学生思想素质、语文素质的综合反应。要全面实施素质教育,实施科教兴国的战略目标,就语文教
文中通过分析江苏船载HNS运输风险现状,剖析了江苏船载HNS应急反应存在的问题,提出加强应急技术研究、完善应急预案、健全三级应急反应系统,以期提高HNS污染事故防控水平及处
2007年颁布的《行政复议法实施条例》首次规定了行政复议调解制度,海事机构在办理行政复议案件中运用调解制度时应当明确该制度的适用范围,遵循自愿合法的原则,合理解决当前的思
以TM1~7多波段影像为数据源,采用决策树分类技术对北京市土地覆盖现状进行研究。探讨如何使用决策树方法逐层区分草地、林地、水体、裸地、居民地和道路等基本地物类型,并进一
[目的]为认识煤矿区果菜类蔬菜重金属迁移富集规律及污染危害。[方法]通过在宿州市祁南煤矿区菜地采样和室内试验,分析了矿区土壤和三种果菜类蔬菜(豆角、茄子和辣椒)不同组织
我刚到花城,便陶醉在花的海洋里……记得春节时,那傲立枝头的就是被誉为“英雄花”的木棉花。它色彩鲜艳,蓬勃向上,给人以坚定、凝重、朴实的感觉。当热风吹走带有几分寒意的春季