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.