0

我一直在读这本书:黑客,剥削的艺术

在第 140 页,这本书解释了 Nop Slide:

我们将创建一个包含这些 NOP 指令的大型数组(或 sled)并将其放在 shellcode 之前;然后,如果 EIP 寄存器指向在 NOP sled 中找到的任何地址,它将在执行每条 NOP 指令时递增,一次一条,直到它最终到达 shellcode。这意味着只要返回地址被在 NOP sled 中找到的任何地址覆盖,EIP 寄存器就会顺着 sled 滑到 shellcode,它会正确执行。

但是使用这种技术,我们会用 0x90 覆盖返回地址,不是吗?EIP 将转到 0x90,导致段错误。那么,你能清楚地向我解释这个技术吗?谢谢 :)

4

1 回答 1

1

不,您不会用 NOP 雪橇重写退货地址。一旦你得到正确的偏移量,你必须用地址重写返回地址,什么指向你的 NOP 指令。而且因为 NOP sled 放置在你的 shellcode 之前,它只会向下滑动并执行你的 shellcode。所以 60 字节长的 NOP 雪橇什么也不做。

这是因为(您可以在那本书中找到有关它的所有信息):

NOP 是一个汇编指令,是'no operation' 的缩写。它是一个单字节指令,绝对什么都不做。

于 2015-06-23T22:29:58.700 回答