Linux userland exec
Мне нужна библиотека C, которая позволяет мне exec() статически связанный двоичный файл, без вызова системного вызова execve(). Причина, по которой системный вызов не работает, заключается в том, что двоичный файл не является исполняемым, и сделать его исполняемым в этой системе невозможно. Для динамически связанных двоичных файлов, работающих /lib/ld-linux.so.2 progname
делает трюк, но это segfaults в моем статически связанном двоичном файле.
Я нашел ul_exec 1.1 на http://archive.cert.uni-stuttgart.de/bugtraq/2004/01/msg00002.html, но, похоже, в моей системе он использует segfault для своего собственного бинарного файла Hello, World.
Один из вариантов - сделать копию двоичного файла, сделать копию исполняемой и вызвать execve(). Я ищу решение, которое не нуждается в такой копии (из соображений производительности).
3 ответа
Я обновил пользовательское приложение Grugq для работы с современными x86 Linux. Я написал x86_64 userland exec с нуля.
Тогда как насчет файловой системы пользовательского режима (например, с использованием python-fuse), которая отображает бит выполнения в любой указанный файл? будет ли это слишком большой удар производительности?
Есть хорошая короткая вики-статья с некоторыми не полностью готовыми к реализации реализациями: http://plash.beasts.org/wiki/UserModeExec