我如何从内存中执行可执行文件?

nik*_*oss 7 c binary executable go

假设我在编译过程中已经将二进制文件包含在我的程序中,所以我将它保存在变量中, var myExec =[]byte{'s','o','m','e',' ','b','y','t','e','s'} 所以我的问题是是否有办法在我的程序中执行这个二进制文件而不将其写回光盘并调用exec或fork在上面?我正在Golang中编写我的应用程序,所以我正在寻找的方法是使用Go或C(使用CGO)来完成它.

基本上,我正在寻找类似管道bash脚本到bash的东西,我不知道在哪里可以管道本机可执行文件的字节来运行它并将其写回磁盘,然后让os再次读取它似乎很多额外的工作要做

眠りネ*_*ネロク 5

在C和假设Linux中,你可以通过mprotect()系统调用的方式改变一个内存区域的保护,使其可以被执行(即:将一个数据区域变成一个代码区域)。之后,您可以通过跳转到该内存区域来执行该区域。