在最近的Linux上执行进程堆栈中的代码

fly*_*bin 4 linux stack

我想使用ptrace在正在运行的进程的堆栈中编写一段二进制代码.然而,这导致分段故障(信号11).

我可以确保%eip寄存器存储指向我想在堆栈中执行的第一条指令的指针.我想有一些机制可以保护堆栈数据不可执行.

那么,有没有人知道如何禁用这种堆栈保护.具体来说,我正在尝试Fedora 15.

非常感谢!


阅读完所有回复之后,我尝试了execstack,它真正使堆栈中的代码可执行.谢谢你们!

cxr*_*reg 5

这可能是由于现代处理器上的NX位.您可以使用,为您的程序禁用此功能execstack.

http://advosys.ca/viewpoints/2009/07/disabling-the-nx-bit-for-specific-apps/

http://linux.die.net/man/8/execstack