Max*_*Max 5 macos darwin exec system-calls
我fexecve(3)在Linux上执行一个存储在memfd中的二进制文件。
macOS是否具有等效功能?我已经尝试过了execve("/dev/fd/%d", [], []),但是失败了EACCES。将文件从该路径复制/dev/fd/%d到新的临时文件,然后执行即可。
有没有一种方法可以在不创建临时文件的情况下进行操作?
对于任意文件句柄,没有官方支持的方法来执行此操作。有一些黑客主要由恶意软件使用NSCreateObjectFileImageFromMemory,以通过使用和谎报文件类型来达到效果,但如果没有黑客,它仅限于捆绑文件,不能用于任意可执行文件。
因此,如果您使用捆绑文件,则可以通过一些记录的支持来完成此操作,但如果您不使用捆绑文件,并且您正在尝试编写可移植的、生产质量的代码,则没有明智的方法来做到这一点(用于运行任意代码的黑客很脆弱,依赖于未记录的行为)。
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |