Hvorfor kan jeg ikke direkte få indholdet af .bss` sektionen?

Test er på Linux 32bit.

Jeg bruger denne kommando til at få konteksten til .text .rodata og .data sektion:

objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary 

Men grundlæggende når jeg forsøgte at bruge dette til at få indholdet af .bss sektionen, får jeg altid fejlen vist nedenfor:

objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file 

Dybest set hvordan kan jeg få indholdet af .bss sektion fra ELF binær?

Svar

.bss har intet indhold. Det er simpelthen et tip til læsseren at forudplacere noget plads, når programmet startes. Det vil være alle 0ere ved udførelsen og vil ikke indeholde nyttige oplysninger, indtil programmet skriver til det. Derefter kan du bruge en debugger til at dumpe hukommelsen og udforske dens indhold.

Se Wikipedia siden for at få flere oplysninger.

Svar

.bss blokken startet med symbol ( også kaldet Uninitialized datasegment – bss er en gammel monteringsinstruktion på en gammel IBM-chip) sektion formodes at indeholde global variables og static variables ikke initialiseret eller initialiseret til 0 eller NULL. Afsnittet .bss findes normalt ikke, før dit program begynder at køre, det er derfor, du ikke kan hente dets indhold statisk. Det er ret vigtigt at bemærke, at dette afsnit hjælper med at reducere programmet ” s størrelse & gør det hurtigere at indlæse.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *