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
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.
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.
no lo he probado (aún), pero yo lo podría hacer en el elf_newscn función en libelf
Los siguientes enlaces pueden ser útiles:
- El tutorial "libelf by Example" tiene un capítulo sobre la creación nuevos objetos ELF.
- El elftoolchain project tiene páginas de manual que describen la API de
libelf
en detalle.
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
- 1. archivo ELF a mano
- 2. Embalaje de un archivo en un archivo ejecutable ELF
- 3. ¿Cómo se extrae solo el contenido de una sección ELF
- 4. obteniendo el miembro sh_name en un archivo elf de cabecera de sección
- 5. Herramienta para modificar la sección dinámica de un binario ELF
- 6. ¿Las variables inicializadas cero de la sección .bss ocupan espacio en el archivo elf?
- 7. ¿Cómo puedo examinar el contenido de una sección de datos de un archivo ELF en Linux?
- 8. ¿dónde debería tomarse en memoria la sección .bss del archivo ELF?
- 9. a.out reemplazado por formato de archivo ELF?
- 10. ¿qué parte del archivo ELF debe cargarse en la memoria?
- 11. Modifying elf file
- 12. Formato de archivo de núcleo ELF
- 13. glibc: archivo elf OS ABI no válido
- 14. C# sharpziplib agregar archivo al archivo existente
- 15. Tabla de cadenas en ELF
- 16. ¿Agregar "divisores de sección" a mi diseño?
- 17. cabecera ELF lectura en C
- 18. Agregar filas a la sección UITableView existente
- 19. Sección Flush ELF de la RAM después de la inicialización de la biblioteca
- 20. WordPress agregar una nueva página a la sección de administración
- 21. WIX agregar nuevo archivo al componente compartido
- 22. Cómo agregar código PHP al archivo .tpl
- 23. Localización - Agregar idioma adicional al archivo localizable.strings
- 24. ¿Cómo agregar metadatos al archivo WAV?
- 25. Agregar encabezado personalizado al archivo de Excel
- 26. Agregar un texto al archivo en Python
- 27. Agregar imagen al archivo .spec en Pyinstaller
- 28. ¿Herramienta para la modificación simple del archivo elf?
- 29. Cómo cargar un archivo ejecutable ELF ejecutable dinámicamente?
- 30. Biblioteca para leer el archivo ELF Información de depuración DWARF
Esto parece prometedor. Gracias – c4757p