【发布时间】:2010-10-10 06:47:57
【问题描述】:
我正在尝试在 MacOSX 10.4 (tiger) 上使用 mprotect API,我尝试了所有可能的方法,它总是返回 -1,错误码为 13,这意味着在我尝试添加时“权限被拒绝”对某些可执行代码的写权限。
相同的代码完全适用于 MacOS X 10.5(豹)。
代码很简单
int ret = mprotect((void*)pFunc, 4096, PROT_WRITE | PROT_EXEC);
其中 pFunc 是加载到进程地址空间中的任何函数的地址。我尝试在添加 PROT_WRITE 访问权限之前删除 PROT_EXEC,但没有运气。我还尝试将 pFunc 与内存页面大小对齐,也没有运气..
知道如何让它工作吗?
【问题讨论】:
-
+1 ,我遇到了同样的问题,最终只是从我的支持列表中删除了 OSX。
-
显示产生问题的完整程序。
标签: c macos unix mprotect osx-tiger