论文摘要
程序员经常需要知道程序在动态执行时的行为,从而更好地判断软件产品的正确性和可靠性。由于程序执行行为会因为输入或执行环境的不同而表现出不确定性,因此程序员很难及时了解程序执行的动态信息,如内存操作行为、堆栈操作行为、控制流信息、数据流信息等。通过软件日志等方法可以描述出程序执行的大致轨迹,但需要在软件开发时花大量的时间去实现日志记录模块。对于某些库文件或者以二进制方式发布的程序来说,这种方法往往不能达到预期的目的。本文基于自主开发的动态二进制翻译基础平台Crossbit,构建了一系列动态二进制探测工具,从性能探测,内存、堆栈行为检测等多方面研究了使用动态二进制探测工具对程序执行行为作分析的方法。这些动态二进制探测工具包括:Cachebit,一个可以模拟硬件Cache执行行为的工具。通过不同的Cache配置,可以模拟客户程序执行过程中的Cache缺失情况。Membit,一个可以做堆栈溢出检测以及内存泄露检测的工具。通过影子内存技术,为堆栈添加额外的不可写空间以检测非法的溢出写操作。并利用动态的库函数替换完成内存申请分配的监控,统计内存泄露的情况。Resumebit,一个通过对程序状态进行备份与恢复实现进程级休眠与唤醒的工具。通过对程序执行过程中的状态数据定时进行备份,使程序在意外中断或者主动休眠后可以从中断点继续执行。Watchbit,一个可以回放特定内存状态变化的工具。通过对指定的内存地址建立内存访问日志从而回放该内存的状态变化,帮助程序员更好的了解某些关键变量或关键内存地址的状态变化过程,以更好的分析程序的执行行为。通过本文介绍的这些动态二进制探测工具,可以帮助程序员获得一个程序在各个方面的执行行为数据,如Cache表现,内存、堆栈操作,程序执行状态数据等。同时借助Crossbit的多源多目标特性,可以做到源机器平台无关的程序行为分析,为软件产品的可靠性与健壮性改进提供更多的参考。
论文目录
摘要ABSTRACT第一章 绪论1.1 研究背景与意义1.2 国内外研究现状1.3 论文的主要贡献1.4 本文的组织结构第二章 动态二进制翻译基础平台简介2.1 概述2.1.1 动态二进制翻译2.1.2 动态二进制翻译基础平台2.1.3 本章结构2.2 Crossbit 简介2.2.1 Crossbit 概述2.2.2 Crossbit 的系统框架2.2.3 基本块的定义2.2.4 Crossbit 的内存布局2.2.5 Crossbit 的中间指令2.2.6 Crossbit 的性能评价2.3 基于Crossbit 的中间指令过滤器(Filter)构造2.4 相关工作2.4.1 Pin2.4.2 Valgrind2.4.3 Crossbit2.5 本章小结第三章 基于Cachebit 的Cache 行为分析与研究3.1 背景介绍3.1.1 概述3.1.2 Cache 的影响3.1.3 Cache 行为模拟的意义3.2 Cachebit 的设计3.2.1 设计原理3.2.2 用于内存访问探测的中间指令过滤器构建3.2.3 模拟Cache 的设计3.3 Cachebit 的使用与评测3.3.1 Cachebit 的使用3.3.2 Cachebit 的性能评测3.3.3 Cachebit 的创新与不足3.4 相关工作3.5 本章小结第四章 基于Membit 的堆栈行为研究4.1 背景介绍4.1.1 概述4.1.2 堆栈异常举例4.1.3 堆栈行为检查的意义4.2 Membit 的设计4.2.1 设计原理4.2.2 影子内存4.2.3 栈溢出防止设计4.2.4 堆溢出防止设计4.2.5 内存泄露检查4.3 Membit 的使用与评测4.3.1 Membit 的使用4.3.2 Membit 的性能评测4.3.3 Membit 的创新与不足4.4 相关工作4.4.1 “红色区域”(red-zone)法4.4.2 “胖指针”(fat-point)法4.5 本章小结第五章 基于动态二进制探测工具的其他应用5.1 进程级的休眠与唤醒工具Resumebit5.1.1 概述5.1.2 进程级休眠与唤醒的意义5.1.3 程序状态的备份和恢复5.1.4 实验结果5.1.5 小结5.2 程序内存状态回放工具Watchbit5.2.1 概述5.2.2 程序内存状态回放的意义5.2.3 内存状态日志的设计5.2.4 实验结果5.2.5 小结5.3 本章小结第六章 结论6.1 全文总结6.2 未来工作参考文献致谢攻读硕士学位期间已发表或录用的学术论文
相关论文文献
标签:动态二进制翻译论文; 探测工具论文; 程序执行行为论文;