2009-07-06 7 views
16

Je dois pouvoir ajouter une section arbitraire à un fichier ELF. Je ne peux pas utiliser le code GPL dans ce programme, donc BFD est hors de question. Je peux utiliser libelf/gelf pour lire des sections, mais la documentation est assez éparse pour celles-ci, et je n'arrive pas à comprendre comment ajouter une section. Est-ce que quelqu'un sait comment faire cela? Je préférerais ne pas écrire mon propre code ELF.Ajouter une section au fichier ELF

Répondre

17

Il y a quelques réponses (éventuellement) associées dans this question about ELF file headers. La réponse acceptée a mentionné l'utilisation de objcopy pour ajouter des sections à un fichier ELF, et le BSD bintools prétend avoir une implémentation sous licence BSD de objcopy qui pourrait répondre à vos besoins.

+0

Cela semble prometteur. Je vous remercie – c4757p

2

un coup d'oeil à ELFsh, qui fait maintenant partie du projet eresi http://www.eresi-project.org/ Ils ont beaucoup de documentation et utilisations fraîches de leurs outils.

1

N'a pas essayé (encore) moi-même, mais vous pouvez regarder la fonction elf_newscn dans libelf

3

Les liens suivants pourraient être utiles:

14

Je sais que c'est une vieille question mais j'ai trouvé un exemple de travail qui m'a aidé à l'appliquer à mon projet. (Au cas où quelqu'un trébuche sur cette question)

pris de Sourceware Mail Archiv

$ echo 'int main() { puts ("Hello world"); }' | gcc -x c - -c -o hello.o 

$ echo "this is my special data" >mydata 

$ objcopy --add-section .mydata=mydata \ 
      --set-section-flags .mydata=noload,readonly hello.o hello2.o 

$ gcc hello2.o -o hello 

$ ./hello 
Hello world 

$ objdump -sj .mydata hello 
Questions connexes