c++ - 从堆执行指令

标签 c++ c

我可以在堆上分配一个块,将其字节设置为与函数调用及其参数相对应的值,然后使用函数调用和取消引用运算符执行该序列吗?

最佳答案

因此,如果我没看错,您想在堆上动态创建CPU组装指令并执行它们。有点像自修改代码。从理论上讲这是可能的,但实际上可能没有。

问题在于,堆位于数据段中,并且当今的CPU /操作系统已采取措施完全防止这种行为(对于x86 CPU,它称为NX位或No-eXecute位)。如果一个段被标记为NX,则无法从中执行代码。发明这种方法是为了阻止计算机病毒使用缓冲区溢出将可执行代码放置在数据/堆/堆栈存储器中,然后尝试调用程序执行此类代码。

请注意,在代码段中加载了DLL和库,这当然允许代码执行。

关于c++ - 从堆执行指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023184/

相关文章:

c++ - c++ 4个字符中哪个字符排在第一个

字符-ASCII 关系

c - 反汇编c代码中的冗余操作

c - 从输入文件读取数组时出现段错误(核心转储)错误

c - 如何在 Code::Blocks 中添加另一个 C 文件

c++ - C++中按位运算符的结果

c++ - 交叉编译: special cross compiler or just gcc with option -march?

c++ - 与或运算符

c++ move 窗口而不改变其大小

c++ - 如何检查 CMakeLists.txt 文件中是否定义了某些内容