Question

Je dois faire une chose assez inhabituelle: exécuter manuellement un fichier exécutable elfe. C'est à dire. charger toutes les sections en place droite, main () interroger et appeler (et le nettoyage puis). Sera Executable lié statiquement, donc il ne sera pas nécessaire de relier les bibliothèques. Je contrôle aussi l'adresse de base, donc pas de soucis sur les conflits possibles.

Alors, est-il y a des bibliothèques pour cela?

J'ai trouvé OSKit et son liboskit_exec, mais projet semble être mort depuis 2002.

Je suis OK avec la prise des parties de projets (dans le respect des licences, bien sûr) et de les adapter à mes besoins, mais comme je suis tout à fait Noob dans le monde linux, je ne sais même pas où trouver ces pièces! :)

PS. J'ai besoin que pour la plate-forme ARM.

UPD Eh bien, la question des elfs de chargement semble nécessiter une bonne connaissance à ce sujet (soupir), donc je suis à lire quelques spécifications et manuels. Et je pense que je vais en tenir à bionique / éditeur de liens et libelfsh. Merci les gars!

Selon les constatations résumées:

Était-ce utile?

La solution

Un apt-cache search rapide suggère libelf1, libelfg0 et / ou libelfsh0. Je pense que le programme de elfsh (dans le paquet du même nom) pourrait être un exemple pratique intéressante de l'utilisation libelfsh0.

Je ne l'ai pas essayé moi tout, mais j'espère qu'ils pourraient être utiles. Bonne chance: -)

Autres conseils

Android de Google, dans c'est "bionique" mise en œuvre libc, a complètement réimplémenté loader ELF. Il est assez propre, et probablement une meilleure source que gilbc si vous cherchez quelque chose de simple.

Jetez un oeil à libelf pour lire le format exécutable. Vous allez avoir des ennuis avec ce que je pense.

Sons comme, comme vous n'avez pas besoin de bibliothèques pour quoi que ce soit, pourquoi ne pas simplement MMap votre exécutable, ensemble de données sur les différentes zones de mémoire et jmp / b dans?

Je ne sais pas si ARM a un équivalent NX bits, mais la peine de vérifier.

Cet outil contient un chargeur ELF: http://bitwagon.com/rtldi/rtldi.html

Je réutilisai le code de rtldi pour un chainloader ELF dans un autre projet. Le code est ici: http://svn.gna.org/viewcvs/plash/trunk/chroot-jail/elf-chainloader/?rev=877 et il y a quelques informations ici: http://plash.beasts.org/wiki/Story16. (Apparemment, je dois briser ces liens parce que stackoverflow ne me laisse pas poster> 1 lien!)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top