开箱和 ESP 技巧

逆向工程 数据库 开箱
2021-06-25 19:40:42

我最近听说了 esp 技巧:一些打包器将所有寄存器压入堆栈,当解包完成时,它们会被恢复。在 esp 上放置一个硬件断点,我们可以停在那里并获得原始入口点。

为什么需要使用硬件断点?该站点认为是因为软件断点修改了代码。但为什么这是一个问题?

我遇到的每个例子都使用 Ollydbg。如何在 gdb 中设置这样的断点?

1个回答

在 esp 上放置一个硬件断点,我们可以停在那里并获得原始入口点。

为什么需要使用硬件断点?

的值ESP是堆栈上的地址。该内存地址处的数据可能会被读取或写入,但不会被执行¹,因为它不是代码。软件断点仅对被执行的代码有用,并且由于该内存地址处的数据不会被执行,因此软件断点将无济于事。

¹ 这有例外,但这与您的问题无关。

如何在 gdb 中设置这样的断点?

在 gdb 中,您可以ESP通过设置watchpoint在指向的内存地址上设置硬件断点,这在此处有说明