gpt4 book ai didi

xcode - 使用 Xcode 11 编译时 vm_protect 失败

转载 作者:行者123 更新时间:2023-12-04 04:20:48 27 4
gpt4 key购买 nike

我正在对其中一个 Mach-O 部分使用运行时内存解密。为此,我像这样使用 vm_protect:

uint8_t *section_start = 0;
unsigned long section_size = 0;
section_start = getsectiondata(&_mh_execute_header, "__TEXT", "__mysection", &section_size);

// change virtual memory protection
if (vm_protect(mach_task_self(), (vm_address_t)section_start, (vm_size_t)section_size, 0, VM_PROT_READ | VM_PROT_WRITE) != KERN_SUCCESS) {
os_log_error(my_logger, "Virtual memory protection changing to write error");
return false;
}

当我使用 Xcode 10 编译调试配置时,vm_protect 成功。但是,使用 Xcode 11 编译的相同代码会失败。

我已经尝试将这些权利添加到项目中:

com.apple.security.cs.disable-executable-page-protection
com.apple.security.cs.allow-jit
com.apple.security.cs.allow-unsigned-executable-memory

,没有成功。

还将签名证书更改为专门针对 Xcode 11 的 Apple Development 证书,结果相同。

在 Catalina 和 Mojave 上运行该项目会产生相同的结果 - 如果使用 Xcode 10 构建,则成功,使用 Xcode 11 - 失败。

提前致谢。

最佳答案

我也遇到了同样的问题。如果我启用了强化运行时并指定了所有权利(包括上面指定的权利),那么我会遇到同样的问题。另外,如果我禁用了强化运行时。

我尝试编译到较早版本的 SDK(最早可追溯到 10.8),但问题仍然存在(即使您使用较早版本的 XCode 编译到同一 SDK 时问题也不存在)。

我还尝试使用链接器标志使 __TEXT 段可写:segprot,__TEXT,rwx,rwx。这次不是 vmprotect 失败,而是更早崩溃并出现 dyld 错误:“__TEXT 段映射文件的开头但可写”

这肯定是 XCode 11 的错误吗?

关于xcode - 使用 Xcode 11 编译时 vm_protect 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59407982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com