gpt4 book ai didi

objective-c - macOS kexts 能否将代码注入(inject)特定进程(就像 mach_inject 那样)?

转载 作者:搜寻专家 更新时间:2023-10-30 20:08:23 25 4
gpt4 key购买 nike

虽然 mach_inject 是一种方便(但有风险)的解决方案,可将您的一些代码注入(inject)其他应用程序(主要用于自定义 Finder),但自 10.11 以来它不再起作用。是否有可能通过使用某种 kext 实现相同的功能?

这样做的目的是为特定的应用程序在窗口之上添加一些视觉效果。也许有更简单的解决方案,比如 Accessibility API?谢谢!

最佳答案

使用kext,你当然可以获得任何进程的任务句柄;这是自 SIP 以来不再适用于用户空间的部分。可以使用 task_get_special_port(task, TASK_KERNEL_PORT, &task_port) 将 kext 中的 task_t 指针转换为特殊端口,然后可以使用 将其发送到用户空间任务>mach_msg_send_from_kernel()。一旦你在用户空间中有了端口,你就可以做一些常见的事情,比如在目标任务中分配、读取和写入内存等。但是,如果目标任务设置了非常严格的代码签名标志,任何在内存中执行代码的尝试未签名的页面将因进程崩溃而失败。这意味着它不适用于大多数 Apple 自己的应用程序。正如您提到的,除代码注入(inject)之外的其他方法可能更简单、更安全。

关于objective-c - macOS kexts 能否将代码注入(inject)特定进程(就像 mach_inject 那样)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816479/

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