Test is op Linux 32bit.
Ik gebruik dit commando om de context van .text
.rodata
en .data
sectie:
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
Maar eigenlijk wanneer ik dit probeerde te gebruiken om de inhoud van de .bss
sectie te krijgen, krijg ik altijd de onderstaande foutmelding:
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
Hoe kan ik eigenlijk de inhoud van de .bss
sectie uit ELF binair krijgen?
Antwoord
De .bss
heeft geen inhoud. Het is gewoon een tip aan de lader om vooraf wat ruimte toe te wijzen bij het starten van het programma. Het zijn allemaal nullen bij de uitvoering en zullen geen bruikbare informatie bevatten totdat het programma ernaar schrijft. Daarna kunt u een debugger gebruiken om het geheugen te dumpen en de inhoud ervan te onderzoeken.
Bekijk de Wikipedia pagina voor meer informatie.
Antwoord
Het .bss
blok gestart met symbool ( ook wel Uninitialized datasegment genoemd – bss
is een oude montage-instructie op een oude IBM-chip) sectie zou global variables
en static variables
niet-geïnitialiseerd of geïnitialiseerd naar 0 of NULL. De sectie .bss
bestaat meestal niet totdat uw programma begint met uitvoeren. Dit is de reden waarom u “de inhoud ervan niet statisch kunt ophalen. Het is vrij belangrijk op te merken dat deze sectie het programma helpt verminderen” s size & maakt het laden sneller.