Waarom kan ik de inhoud van de .bss-sectie niet rechtstreeks ophalen?

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.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *