基于动态二进制探测工具的程序执行行为分析与研究1

基于动态二进制探测工具的程序执行行为分析与研究1

论文摘要

程序员经常需要知道程序在动态执行时的行为,从而更好地判断软件产品的正确性和可靠性。由于程序执行行为会因为输入或执行环境的不同而表现出不确定性,因此程序员很难及时了解程序执行的动态信息,如内存操作行为、堆栈操作行为、控制流信息、数据流信息等。通过软件日志等方法可以描述出程序执行的大致轨迹,但需要在软件开发时花大量的时间去实现日志记录模块。对于某些库文件或者以二进制方式发布的程序来说,这种方法往往不能达到预期的目的。本文基于自主开发的动态二进制翻译基础平台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 Pin
  • 2.4.2 Valgrind
  • 2.4.3 Crossbit
  • 2.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 进程级的休眠与唤醒工具Resumebit
  • 5.1.1 概述
  • 5.1.2 进程级休眠与唤醒的意义
  • 5.1.3 程序状态的备份和恢复
  • 5.1.4 实验结果
  • 5.1.5 小结
  • 5.2 程序内存状态回放工具Watchbit
  • 5.2.1 概述
  • 5.2.2 程序内存状态回放的意义
  • 5.2.3 内存状态日志的设计
  • 5.2.4 实验结果
  • 5.2.5 小结
  • 5.3 本章小结
  • 第六章 结论
  • 6.1 全文总结
  • 6.2 未来工作
  • 参考文献
  • 致谢
  • 攻读硕士学位期间已发表或录用的学术论文
  • 相关论文文献

    标签:;  ;  ;  

    基于动态二进制探测工具的程序执行行为分析与研究1
    下载Doc文档

    猜你喜欢