Windows windbg预览是否可以编辑内存数据或注册,然后使用时间旅行调试保存状态?

Windows windbg预览是否可以编辑内存数据或注册,然后使用时间旅行调试保存状态?,windows,debugging,windbg,Windows,Debugging,Windbg,windows版本windbg预览,带TTD(时间旅行调试) 非常棒。但我遇到了一个问题 当我设置TTD时,我不能像这样编辑寄存器或内存数据 如何编辑寄存器值,然后保存状态并继续。所以有两种状态,一种状态是寄存器已更改,另一种状态是未更改 我不熟悉TTD,所以TTD可以这样做,或者有这样的功能?不,这是不可能的 TTD基本上是程序执行的跟踪记录。简单地说,它是这样的:对于程序执行的每个指令,记录(在数据库中)所有寄存器的状态,访问哪个内存地址(如果有的话),它的值是什么(如果发生写入,新值是什

windows版本windbg预览,带TTD(时间旅行调试)

非常棒。但我遇到了一个问题

当我设置TTD时,我不能像这样编辑寄存器或内存数据

如何编辑寄存器值,然后保存状态并继续。所以有两种状态,一种状态是寄存器已更改,另一种状态是未更改

我不熟悉TTD,所以TTD可以这样做,或者有这样的功能?

不,这是不可能的

TTD基本上是程序执行的跟踪记录。简单地说,它是这样的:对于程序执行的每个指令,记录(在数据库中)所有寄存器的状态,访问哪个内存地址(如果有的话),它的值是什么(如果发生写入,新值是什么)

最后,您拥有的是执行数据库,它是您的程序执行情况的跟踪;您可以查询数据库,想去哪里就去哪里,甚至可以向后(这就是为什么可以在TTD中向后“执行”某些内容),但请记住:当您使用TTD时,执行已经发生,您只是在“浏览”执行数据库

不允许更改数据库中的任何内容,因为这样做会影响程序的剩余执行,并且由于程序已经执行,调试器不打算执行新的更改

旁注:有一些“调试器”(更确切地说是概念验证工具)允许这种执行(记录跟踪,然后更改跟踪),在这种情况下,执行是符号执行和所谓的concolic执行的混合。它仍然是计算机科学中的一个开放问题,因为指令产生的所有级联效应会迅速导致组合“爆炸”