我需要一个 C 库,它允许我 exec() 静态链接的二进制文件,而不调用 execve() 系统调用。系统调用不起作用的原因是二进制文件不可执行,并且不可能使其在该系统上可执行。对于动态链接的二进制文件,运行 /lib/ld-linux.so.2 progname
可以解决问题,但在我的静态链接的二进制文件上会出现段错误。
我在 http://archive.cert.uni-stuttgart.de/bugtraq/2004/01/msg00002.html 上找到了 ul_exec 1.1 ,但这似乎在我的系统上它自己的 Hello, World 二进制文件出现了段错误。
一种选择是制作二进制文件的副本,使副本可执行,然后调用execve()。我正在寻找一种不需要这样的副本的解决方案(由于性能原因)。
最佳答案
我已经updated The Grugq's userland exec与现代 x86 Linux 一起工作。我从头开始编写了一个 x86_64 userland exec。
关于Linux 用户态执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235523/