我的系统是x86-64 Linux,我尝试在系统上的堆栈或数据段中执行代码。详细地说,我首先将一条二进制指令放入一个整数数组(我试图将数组放在堆栈或数据段中),然后用数组地址替换正常的函数返回地址。每一次,我都有分段错误。
我的问题是,x86-64是否有一些分段保护机制来阻止堆栈或数据段中的执行行为?如果是,那是否意味着通过缓冲区溢出的代码注入在x86-64架构中完全停止了?
答案 0 :(得分:1)
几乎所有现代通用架构都有办法阻止您执行某些内存区域。如果操作系统使用这些设施,则取决于操作系统。 Linux禁用堆栈上的执行以及容易执行的体系结构上的大多数数据。 x86_64就是其中之一。