C++ PROT_EXEC标志在mprotect中起什么作用?
从本页: 除了PROT_EXEC,我理解这些标志。打电话的效果如何C++ PROT_EXEC标志在mprotect中起什么作用?,c++,c,linux,C++,C,Linux,从本页: 除了PROT_EXEC,我理解这些标志。打电话的效果如何 mprotect(ptr, size, PROT_EXEC); 从您链接到的手册页面: PROT_EXEC 内存可以被执行 它将内存标记为可执行的,这意味着它可以包含您可以调用和运行的代码。从您链接到的手册页面: PROT_EXEC 内存可以被执行 它将内存标记为可执行的,这意味着它可以包含您可以调用和运行的代码。那么它与函数有关吗?请详细说明。这根本不清楚是什么意思。例如,执行代码与读取或写入该地址时有何不同?你需要执行代码
mprotect(ptr, size, PROT_EXEC);
从您链接到的手册页面: PROT_EXEC 内存可以被执行
它将内存标记为可执行的,这意味着它可以包含您可以调用和运行的代码。从您链接到的手册页面: PROT_EXEC 内存可以被执行
它将内存标记为可执行的,这意味着它可以包含您可以调用和运行的代码。那么它与函数有关吗?请详细说明。这根本不清楚是什么意思。例如,执行代码与读取或写入该地址时有何不同?你需要执行代码来完成所有这些事情,那么有什么区别呢?@AnonymousEntity
PROT_EXEC
意味着内存本身可以包含代码。如果检查进程的内存映射,则包含程序代码的内存将标记为PROT_EXEC
,否则代码将无法执行。通过对一些完全不相关的内存使用mprotect
和PROT_EXEC
标志,意味着您可以动态分配一页内存,将一些任意代码复制到内存中,然后将其作为程序的一部分执行。那么这与函数有关吗?请详细说明。这根本不清楚是什么意思。例如,执行代码与读取或写入该地址时有何不同?你需要执行代码来完成所有这些事情,那么有什么区别呢?@AnonymousEntityPROT_EXEC
意味着内存本身可以包含代码。如果检查进程的内存映射,则包含程序代码的内存将标记为PROT_EXEC
,否则代码将无法执行。通过对一些完全不相关的内存使用mprotect
和PROT_EXEC
标志,您可以动态分配一页内存,将一些任意代码复制到内存中,然后像执行程序一样执行它。