当然,我们不能指望时间相关的代码起作用,但是如果线程代码修改了共享状态通常,可以向后移动,并且仍然可以再次可靠地工作,过程记录除了文档中指定的纯粹的体系结构挑战(即位移步进)之外,还有哪些限制?
#1 楼
该功能在GDB Wiki上有更详细的描述:它的工作方式
通过记录子进程中每条
机器指令的执行情况,过程记录和重播工作(
,以及机器状态的每个相应更改(内存和寄存器的值)。通过以相反的顺序依次“撤消”机器状态中的每个更改,可以将程序的状态恢复到执行早期的任意点。然后,通过
“重做”原始顺序的更改,可以使程序状态再次
向前移动。
本演示文稿甚至介绍了更多的内部结构。 >除上述内容外,对于某些远程目标,GDB可以通过发送远程串行协议数据包
bc
(向后继续)和bs
(向后步骤)来利用其“本机”反向执行。这些目标包括:moxie-elf模拟器
Simics
VMware Workstation 7.0
SID模拟器(xstormy16架构)
使用valgrind的chronicle-gdbserver
UndoDB
评论
这真的是反向工程吗?在我看来,由于GDB源代码是开放的,因此它与正向工程和读取代码的关系更大。正确地说,我认为该主题肯定是反向工程师感兴趣的,因此我认为它是适当的。
AFAIK基于Intel x86 CPU中相对较新的CPU功能。它与VMware中用于“记录”的功能相同。
我认为我们都可以同意,这个问题(通常)是反向工程师的当务之急。此外,与StackOverflow相比,在这里收到与此特定问题相关的周到且明智的答案的机会要大得多,我认为值得Peter考虑。
尽管这个问题并不直接与做RE有关,但对从事RE的人们特别感兴趣,它与以一种有助于理解RE技术的方式了解RE的工具有关。因此,我认为它是此网站上的主题。