这基本上就是我想要做的,
#include <sys/mman.h>
int zero() {
return 0;
}
int main(int argc, const char *argv[]) {
return mprotect((void *) &zero, 4096, PROT_READ | PROT_WRITE);
}
所以我试图让代码本质上是可写的。这在当前的 macOS(Catalina 10.15.2)上不起作用,它只是返回-1
并设置errno
为EACCES
,据我所知,这是因为缺乏权利/代码签名。我找到了我需要设置的权利,但我不知道如何去做,也不知道如何实际签署它..
如果我运行codesign -d --entitlements :- <path_to_app>
,它会失败code object is not signed at all
,即使我已经尝试在 Xcode 中配置登录一段时间(我有证书等等)。那么我该怎么做呢?实际上用 Xcode 签名并不明显,所以我相当无能。