我在这里阅读了一些信息,但看起来该站点本身仅与vmware有关,而且它放弃了这个想法。该概念如何与IDA和gdb等现有的调试环境一起使用。如果已经实现,我希望获得与此相关的链接。

评论

您提供的链接清楚地说明了什么是重播调试。请澄清您的问题?

我想知道如何将其用作调试的辅助工具。例如,它可以集成到现有的调试环境中吗?如果这是一个流行的想法,那么为什么该网站将其删除?例如,我们可以制作重播文件然后与其他分析师共享吗?

该网站提供了很多信息。我在这里问的原因是为了创造新知识。而且,该产品仅用于vmware。如何与gdb和ida集成以及如何集成。来自单一来源的信息无法帮助我进一步发展。

好问题!您应编辑原始问题以包括所有内容。否则,听起来很宽泛。另外,您还可以通过链接回答原始问题。

GDB从版本7开始包括这种形式,并且还允许“反向调试”。另一方面,VMware放弃了它(尽管有抱怨),从7.x版本升级到8.x版本。我不知道IDA内置了此类功能。也许使用GDB存根可以工作吗?

#1 楼

请原谅这个无耻的插件,但是请查看UndoDB-http://undo-software.com/

它在功能上与gdb 7的可逆调试非常相似,但性能得到了显着改善。记录速度通常在2x-5x范围内,记录每秒通常使用约10MB的内存。

#2 楼

Mozilla rr

除了https://reverseengineering.stackexchange.com/a/2503/12321提到的关闭源撤消之外,我们现在还有一个了不起的开源工作实现:https:// github.com/mozilla/rr

我在以下位置给出了一个最小的可运行示例:https://stackoverflow.com/questions/1206872/how-to-go-to-the-previous-如在该示例中所示,line-in-gdb / 46996380#46996380

先记录,然后重播,然后重播使每个非确定性事件(例如线程切换时间,随机数生成)具有确定性,可以与之前的运行相匹配。

它的一个巨大优点是,它可以让您倒退时间,这是调试应用程序时经常要执行的从崩溃返回到正常运行的时间。过去发生的真正原因。

QEMU反向调试

除了使用硬件和Linux内核功能的userland反向调试之外,模拟器当然还可以实现反向调试,因为它们可以控制一切。

尤其是,QEMU具有反向调试模式,可以实现以下目的:它不一定是“基于重放”的,但它可以实现相同的目的:您可以倒退时间。在仿真器中执行此操作的妙处在于,如果在QEMU上进行开发,则还可以对Linux内核本身进行反向调试。

另请参见:https://stackoverflow.com/questions/29153178/is-it-possible-to-do-reverse-debugging-with-qemu/46499855#46499855