根据这个线程,分配的内存malloc
至少有PROT_READ | PROT_EXEC
,否则所包含的函数无法执行。
man malloc
没有提到任何有关保护的内容,因此提出了这个问题。
malloc()
通常会返回具有读写权限的内存。某些体系结构(例如:较旧的 x86)可能不允许以直接的方式禁用执行权限,但这只是平台的缺陷。
如果您想从分配的内存中执行代码,则必须显式授予执行权限,并且可能必须删除写入权限,因为在同一内存上同时拥有写入和执行权限在某些系统上被认为具有潜在危险(通常称为W^X)。
还有其他几个线程从程序员分配的内存中执行代码:
在Linux上的C中分配可执行RAM
是否可以在标准 C 中从堆栈执行代码?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)