繁体   English   中英

Mac 有 kernel32.dll 的替代品吗?

[英]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 和控制台应用程序)。

所以总结一下:

  • MacOS 没有 kernel32.dll
  • 您需要在 MacOS 的 API 中找到相应的 function,这与您从 Kernel32 调用的方法相同
  • 最好的办法是避免使用 Kernel32 并尝试在 .NET 库中找到相应的调用

曾几何时,您可以简单地使用 Mach 调用task_for_pid() ,但几年前当 Apple 首次开始关注安全性时,它就停止工作了。 然后几年,你仍然可以强制动态 linker 在启动时通过设置一些环境变量将.dylib加载到可执行文件中,但随后 Apple 也停止了这种做法,因为他们继续打击安全漏洞。

在大多数情况下,您不能再这样做,或者至少不容易。 特别是启用了系统完整性保护之类的东西。 (我的意思是你仍然可以创建一个 kernel 扩展并在那里进行,除了 Apple 现在要求所有 kernel 扩展都使用特殊权利签名并且他们几乎不再提供该权利。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM