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