问题是:
puts
当我将所有代码注释掉之后 gets (实际上只是在它之后立即返回),然后shell代码保持不变......只是被损坏了 本身 什么时候执行 push es - 它非常令人困惑,因为你的 $rsp 和 $rip 指向同一个地方。
gets
push
$rsp
$rip
添加 sub $40,$rsp (字节数: \x48\x83\xec\x40 )到shellcode的开头解决了这个问题。
sub $40,$rsp
\x48\x83\xec\x40