基于动态二进制翻译的逆向调试器的设计与实现

基于动态二进制翻译的逆向调试器的设计与实现

论文摘要

随着现代软件系统复杂程度的不断提高,作为软件错误诊断和程序理解的重要手段之一的调试也变得越来越重要。可逆向调试技术可以支持向后回滚程序状态,使程序状态回到其历史执行点。程序员利用逆向调试器能加速定位程序中的错误和缺陷,从而大大提高软件开发的效率。逆向调试的基础是程序的逆向执行,当前程序逆向执行研究主要集中在程序设计语言级别的逆向支持和通过程序植入来记录和重现程序历史状态等几种途径。本文研究了利用动态二进制翻译技术对程序进行植入来实现对程序执行状态的记录和重放技术,并在此基础上设计和实现了基于QEMU的逆向调试器PORD。PORD主要由两部分构成,其一是基于修改的QEMU的虚拟机,它用来执行被调试程序。另一部分是提供用户命令界面的R-GDB,它是在GDB的基础上修改而来的,两部分之间通过远程调试协议进行通信,由R-GDB解析用户命令并通知虚拟机执行相应的操作。根据为保存程序状态而进行植入方式的不同,PORD具有Binary-Translate模式和Binary-Copy两种模式。前者应用在源程序和宿主机拥有不同的指令集架构的情形下,可以为程序员提供跨平台的可逆调试环境。当具有相同指令集架构时,Binary-Copy模式可以提供与本地执行速度相当的逆向调试环境。实验证明了本文设计并实现的逆向调试器PORD在保证传统调试器功能的前提下能够快速高效的逆向回滚,重现程序的历史状态。

论文目录

  • 摘要
  • Abstract
  • 第一章 绪论
  • 1.1 研究背景
  • 1.2 国内外研究现状
  • 1.3 论文的研究问题
  • 1.4 论文的主要工作
  • 1.5 论文的组织结构
  • 第二章 基于二进制翻译的逆向调试相关技术
  • 2.1 可逆向执行技术
  • 2.2 可逆向执行的技术途径
  • 2.2.1 逆向代码的生成
  • 2.2.2 类Unix系统调用fork
  • 2.2.3 程序状态日志记录和重放
  • 2.3 二进制翻译技术
  • 2.3.1 二进制翻译方法分类
  • 2.3.2 二进制翻译系统框架
  • 2.4 二进制植入技术
  • 2.4.1 静态二进制植入技术
  • 2.4.2 动态二进制植入技术
  • 2.5 本章小结
  • 第三章 基于QEMU的逆向执行技术
  • 3.1 动态二进制翻译系统QEMU
  • 3.1.1 QEMU的运行方式
  • 3.1.2 QEMU的翻译过程
  • 3.1.3 QEMU的运行流程
  • 3.2 程序历史状态的记录
  • 3.2.1 植入和检查点的策略
  • 3.2.2 寄存器状态的记录
  • 3.2.3 内存状态的记录
  • 3.2.4 系统调用的记录
  • 3.3 程序历史状态的重建
  • 3.3.1 逆向执行策略
  • 3.3.2 进程空间内存的重建
  • 3.4 本章小结
  • 第四章 逆向调试器PORD的设计与实现
  • 4.1 逆向调试器架构
  • 4.2 虚拟执行模块
  • 4.2.1 代码生成管理模块
  • 4.2.2 记录和重放层
  • 4.2.3 系统调用模拟
  • 4.3 调试器后端R-GDB
  • 4.3.1 逆向调试命令及流程
  • 4.3.2 R-GDB的实现
  • 4.3.3 远程服务桩的实现
  • 4.4 本章小结
  • 第五章 实验结果与分析
  • 5.1 实验选取
  • 5.2 实验验证与结果分析
  • 5.2.1 针对不同翻译模式的负载分析
  • 5.2.2 针对不同检查点粒度的负载分析
  • 5.2.3 整体性能分析和讨论
  • 5.3 本章小结
  • 第六章 总结与进一步工作
  • 6.1 本文工作总结
  • 6.2 进一步研究方向
  • 6.2.1 多线程并发程序的逆向执行
  • 6.2.2 动态二进制翻译机制的进一步优化
  • 致谢
  • 参考文献
  • 作者在读研期间的研究成果
  • 附录
  • 相关论文文献

    • [1].自动测试中的状态生成算法[J]. 计算机工程 2010(19)
    • [2].C程序精确形状分析中的规范语言设计[J]. 小型微型计算机系统 2016(04)
    • [3].近期网络安全动态[J]. 中国教育网络 2019(04)
    • [4].一种基于最小调试边界的断点自动生成技术[J]. 软件学报 2013(07)
    • [5].基于微分方程的程序性能分析[J]. 计算机工程与应用 2009(13)
    • [6].Dialog+机维修几例[J]. 医疗装备 2009(12)

    标签:;  ;  ;  ;  

    基于动态二进制翻译的逆向调试器的设计与实现
    下载Doc文档

    猜你喜欢