如何解决Mac的kernel32.dll是否可以替代?
我正在尝试遵循本教程: https://codingvision.net/security/c-inject-a-dll-into-a-process-w-createremotethread 但是kernel32.dll及其功能只能在Windows上使用。 我可以用什么代替在Mac上注入dll?
解决方法
如果要注入kernel32
,则意味着实际上是在注入为Windows设计的本机库。除了WINE之类的库中,除了可能的选择之外,没有其他任何一对一的选择,但是请避免这种黑客攻击。
请考虑在实际系统的API中查找替代方法。您应该在当前正在运行的系统的API中找到相应的方法,并有条件地执行不同的调用。
但请务必确保最好的方法是使用直接系统调用来避免AVOID,并且只能在.NET中运行,尤其是如果您找到一种仅使用.NET库执行所需内容的方法,则很有可能迁移到 .NET Core ,该版本旨在在所有三个主要系统上正常工作(尤其是对于Web和控制台应用程序)。
所以总结一下:
- 没有用于MacOS的kernel32.dll
- 您需要在MacOS的API中找到相应的函数,该函数的作用与您从Kernel32调用的方法相同
- 最好的方法是避免使用Kernel32,并尝试在.NET库中查找相应的调用
从前,您可以简单地使用Mach调用task_for_pid()
,但是几年前苹果首次开始关注安全性时,该调用就停止了工作。然后几年,您仍然可以通过设置一些环境变量来迫使动态链接器在启动.dylib
时将其加载到可执行文件中,但是随后苹果公司也停止了,因为它们继续打击安全性。孔。
在大多数情况下,您不能再这样做了,或者至少不容易做到。特别是启用了系统完整性保护之类的功能。 (我的意思是,您仍然可以创建一个内核扩展,并在那里进行,除非Apple现在要求所有内核扩展都必须具有特殊的权利进行签名,并且它们几乎不再放弃该权利。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。