O teste é em Linux de 32 bits.
Eu uso este comando para obter o contexto de .text
seção .rodata
e .data
:
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
Mas basicamente quando tentei usar isso para obter o conteúdo da seção .bss
, sempre recebo o erro mostrado abaixo:
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
Basicamente, como posso obter o conteúdo da .bss
seção do binário ELF?
Resposta
O .bss
não tem conteúdo. É simplesmente uma dica para o carregador pré-alocar algum espaço ao iniciar o programa. Ele terá apenas 0s na execução e não conterá nenhuma informação útil até que o programa grave nele. Depois disso, você pode usar um depurador para despejar a memória e explorar seu conteúdo.
Verifique a página da Wikipedia para obter mais informações.
Resposta
O .bss
bloco iniciado pelo símbolo ( também chamado de segmento de dados não inicializado – bss
é uma antiga instrução de montagem em um antigo chip IBM), a seção deve conter global variables
e static variables
não inicializado ou inicializado como 0 ou NULL. A seção .bss
geralmente não existe até que seu programa comece a ser executado, é por isso que você não pode “recuperar seu conteúdo estaticamente. É bastante importante observar que esta seção ajuda a reduzir o programa” s tamanho & torna mais rápido o carregamento.