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.