[英]Is there an alternative for kernel32.dll for Mac?
我正在尝试按照本教程进行操作: https://codingvision.net/security/c-inject-a-dll-into-a-process-w-createremotethread但是 kernel32.dll 及其功能只能在 windows 上使用。什么我可以改用在 mac 上注入 dll 吗?
如果你正在注入kernel32
那么这意味着你实际上是在注入一个为 Windows 设计的本地库。除了像 WINE 这样的库中可能的替代方案之外,没有一对一的替代方案,但要避免这样的 hack。
而是考虑在实际系统的 API 中寻找替代方案。 您应该在当前运行的系统的 API 中找到相应的方法,并有条件地执行不同的调用。
但是请务必知道,最好的方法是避免使用直接系统调用并仅在 .NET 内运行,尤其是如果您找到一种仅使用 .NET 库来执行所需操作的方法,那么很有可能迁移到.NET 核心旨在毫无问题地在所有三个主要系统上工作(特别是对于 web 和控制台应用程序)。
所以总结一下:
曾几何时,您可以简单地使用 Mach 调用task_for_pid()
,但几年前当 Apple 首次开始关注安全性时,它就停止工作了。 然后几年,你仍然可以强制动态 linker 在启动时通过设置一些环境变量将.dylib
加载到可执行文件中,但随后 Apple 也停止了这种做法,因为他们继续打击安全漏洞。
在大多数情况下,您不能再这样做,或者至少不容易。 特别是启用了系统完整性保护之类的东西。 (我的意思是你仍然可以创建一个 kernel 扩展并在那里进行,除了 Apple 现在要求所有 kernel 扩展都使用特殊权利签名并且他们几乎不再提供该权利。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.