La prueba es en Linux de 32 bits.
Utilizo este comando para obtener el contexto de .text
.rodata
y .data
sección:
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
Pero básicamente cuando intenté usar esto para obtener el contenido de la sección .bss
, siempre obtengo el error que se muestra a continuación:
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
Básicamente, ¿cómo puedo obtener el contenido de la sección .bss
del binario ELF?
Respuesta
El .bss
no tiene contenido. Es simplemente un consejo para el cargador preasignar algo de espacio al iniciar el programa. Será todo 0 en la ejecución y no retendrá ninguna información útil hasta que el programa escriba en él. Después de eso, puede usar un depurador para volcar la memoria y explorar su contenido.
Consulte la página de Wikipedia para obtener más información.
Respuesta
El .bss
bloque iniciado por el símbolo ( también llamado segmento de datos sin inicializar – bss
es una antigua instrucción de ensamblaje en un chip IBM antiguo) se supone que la sección contiene global variables
y static variables
sin inicializar o inicializado a 0 o NULL. La sección .bss
generalmente no existe hasta que su programa comienza a ejecutarse, por eso no puede «recuperar su contenido de forma estática. Es muy importante tener en cuenta que esta sección ayuda a reducir el programa» s size & hace que la carga sea más rápida.