2010-11-20 30 views
1

J'ai besoin d'une bibliothèque C qui me permet d'exec() un binaire lié statiquement, sans invoquer l'appel système execve(). La raison pour laquelle l'appel système ne fonctionnerait pas est que le fichier binaire n'est pas exécutable et qu'il n'est pas possible de le rendre exécutable sur ce système. Pour les fichiers binaires liés dynamiquement, l'exécution /lib/ld-linux.so.2 progname fait l'affaire, mais cela segfaults sur mon binaire lié statiquement.Linux userland exec

J'ai trouvé ul_exec 1.1 sur http://archive.cert.uni-stuttgart.de/bugtraq/2004/01/msg00002.html, mais cela semble segfault pour son propre Bonjour, World binaire sur mon système.

Une option serait de faire une copie du binaire, rendre la copie exécutable, et appelez execve(). Je suis à la recherche d'une solution qui n'a pas besoin d'une telle copie (pour des raisons de performance).

+1

pourriez-vous expliquer pourquoi il n'est pas possible de le rendre exécutable? sans plus de connaissance, il est difficile de répondre. –

+0

Peu importe pourquoi il n'est pas possible de rendre le fichier exécutable. Dans cette question, je cherche une bibliothèque qui peut exécuter un binaire ELF lié statiquement sans appeler 'execve()' - peu importe si le fichier binaire peut être rendu exécutable. Je ne suis pas intéressé par des solutions alternatives pour le problème de niveau supérieur. – pts

Répondre

1

alors qu'en est-il d'un système de fichiers usermode (utilisant python-fuse par exemple) qui mappe le bit d'exécution sur n'importe quel fichier spécifié? Serait-ce trop un coup de performance?

+0

Oui, cela devrait être plus rapide que de copier le fichier. Mais ma question d'origine reste sans réponse: j'ai besoin d'une librairie qui émule execve() avec l'en-tête open() + ELF + mmap(). – pts

0

Il y a un bon court article wiki avec des implémentations non totalement prêts pour la production: http://plash.beasts.org/wiki/UserModeExec

+0

Le lien est rompu. archive.org ne l'archive pas. C'est pourquoi StackOverflow veut que les gens affichent des réponses autonomes. Sérieusement! – bazz