gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:15:00 27 4
gpt4 key购买 nike

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

基本上,我正在寻找类似将 bash 脚本通过管道传输到 bash 的方法,只是我不知道在哪里可以通过管道传输 native 可执行文件的字节以运行它并将其写回磁盘,然后让 os 再次读取它似乎还有很多额外的工作要做

最佳答案

在 C 和假设 Linux 中,您可以通过 mprotect() 系统调用更改内存区域的保护,以便它可以执行(即:打开一个数据区域 到一个代码区域)。之后,您可以通过进入该内存区域来执行它。

关于c - 我如何从内存中执行可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44653960/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com