So che questa è una vecchia domanda, ma ho trovato un esempio funzionante che mi ha aiutato ad applicarlo al mio progetto. (Nel caso in cui qualcuno si imbatta in questa domanda)
tratto da Sourceware Mail Archive
$ 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
dai un'occhiata a ELFsh, che ora fa parte del progetto ERESI http://www.eresi-project.org/ Hanno molta documentazione e ottimi usi dei loro strumenti.
I seguenti collegamenti potrebbero essere utili:
- Il tutorial "libelf by Example" ha un capitolo sulla creazione di nuovi oggetti ELF.
- Il progetto elftoolchain ha pagine di manuale che descrivono
libelf
API di in dettaglio.
Ci sono alcune (forse) risposte correlate in questa domanda sulle intestazioni dei file ELF. La risposta accettata menzionata utilizzando objcopy
per aggiungere sezioni a un file ELF, e i bintools BSD affermano di avere un'implementazione con licenza BSD di objcopy
che potrebbe soddisfare le tue esigenze.