2009-07-06 21 views
16

Necesito poder agregar una sección arbitraria a un archivo ELF. No puedo usar el código GPL en este programa, por lo que BFD está fuera de cuestión. Puedo usar libelf/gelf para leer secciones, pero la documentación es bastante escasa para estos, y no puedo encontrar la manera de agregar una sección. ¿Alguien sabe cómo hacer esto? Preferiría no escribir mi propio código ELF.Agregar sección al archivo ELF

Respuesta

17

Hay algunas respuestas (posiblemente) relacionadas en this question about ELF file headers. La respuesta aceptada mencionó usar objcopy para agregar secciones a un archivo ELF, y el BSD bintools afirma tener una implementación con licencia BSD de objcopy que pueda satisfacer sus necesidades.

+0

Esto parece prometedor. Gracias – c4757p

2

echar un vistazo a ELFsh, que ahora es parte del proyecto ERESI http://www.eresi-project.org/ Tienen una gran cantidad de documentación y usos interesantes de sus herramientas.

1

no lo he probado (aún), pero yo lo podría hacer en el elf_newscn función en libelf

3

Los siguientes enlaces pueden ser útiles:

14

Sé que esta es una pregunta anterior, pero encontré un ejemplo práctico que me ayudó a aplicarlo a mi proyecto. (En caso de que alguien se topa con esta pregunta)

tomado 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 
Cuestiones relacionadas