我一直在读这本书:黑客,剥削的艺术
在第 140 页,这本书解释了 Nop Slide:
我们将创建一个包含这些 NOP 指令的大型数组(或 sled)并将其放在 shellcode 之前;然后,如果 EIP 寄存器指向在 NOP sled 中找到的任何地址,它将在执行每条 NOP 指令时递增,一次一条,直到它最终到达 shellcode。这意味着只要返回地址被在 NOP sled 中找到的任何地址覆盖,EIP 寄存器就会顺着 sled 滑到 shellcode,它会正确执行。
但是使用这种技术,我们会用 0x90 覆盖返回地址,不是吗?EIP 将转到 0x90,导致段错误。那么,你能清楚地向我解释这个技术吗?谢谢 :)