反向调试器在 OSX 上是不可能的吗?

逆向工程 调试 操作系统
2021-06-26 23:30:05

GDB 中的反向调试(即通过程序回溯)功能和 QIRA 等工具给我留下了深刻的印象,但我有点困惑为什么 OSX 平台不存在这样的程序(GDS 不支持反向在 OSX 上调试。)在 OSX 上无法使用反向调试器是否存在技术原因?我想在相同的架构下,实现时间遗忘调试器的任务几乎完全相同。为什么移植到 OSX 是不可能或困难的?我主要假设这里存在技术挑战,因为没有人实施过如此明显有用的程序。

1个回答

老实说,gdb 中的股票可逆调试支持并不是那么有用。真的很慢(因为它记录了单独的指令),所以你通常只需要为程序的关键部分打开它。我不知道有多少人使用它,这可以解释为什么它没有被广泛移植。我不熟悉 QIRA 的实现,所以我不知道那里的原因是什么。

Mozilla 的rr东西可以快很多,因为它记录在系统调用边界。但这更依赖于特定的操作系统,因此为另一个平台重新实现需要做很多工作。

最后一种可能性是整个系统,它记录硬件事件,因此默认情况下与操作系统无关。但是你必须运行一个完整的操作系统来记录/重放一个程序,所以这也可能不是很有吸引力。这是PANDA和一些实验性 QEMU 补丁所采用的路线(请注意,PANDA 实际上还不支持 gdb 逆向指令,但可以实现)。