Golang从内存中的二进制数据执行子进程

use*_*123 5 memory executable exec go

我知道可以将可执行文件嵌入到 Golang 可执行文件中并运行它们,或者使用Yaegi等项目从字符串运行 Golang 代码,但是是否可以运行存储为变量的二进制文件而不将其写入文件,作为子项过程?二进制文件已经作为变量存在于内存中,因此是否可以以某种方式执行它?

如果我没有记错的话,可执行内存和数据内存之间存在差异,那么这会阻止执行此操作吗?

我的问题的原因是我正在编写一个 RAT/payload dropper 作为学习 Go(lang) 的项目,并希望使其尽可能模块化,包括无文件更新和二进制(也是无文件)有效负载。

编辑:欢迎任何解决方案,但跨平台解决方案是首选。

EDIT2:根据这个SO答案,这在C++中是不可能/非常困难的。看来,造成这种情况的主要原因是动态链接库。由于 Golang 是静态链接的,这会更容易吗?

田咖啡*_*田咖啡 1

是的,尝试这种方式来做到这一点。 https://github.com/amezhinsky/go-memexec