Testen er på Linux 32bit.
Jeg bruker denne kommandoen for å få konteksten til .text
.rodata
og .data
seksjon:
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
Men i utgangspunktet når jeg prøvde å bruke dette for å få innholdet til .bss
-delen, får jeg alltid feilen vist nedenfor:
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
I utgangspunktet hvordan kan jeg få innholdet i .bss
-seksjonen fra ELF-binær?
Svar
.bss
har ikke noe innhold. Det er bare et tips til lasteren om å forhåndslokalisere litt plass når du starter programmet. Det vil være alle 0ene ved utførelsen og vil ikke inneholde nyttig informasjon til programmet skriver til det. Etter det kan du bruke en feilsøking for å dumpe minnet og utforske innholdet.
Sjekk Wikipedia -siden for mer informasjon.
Svar
.bss
blokken startet med symbol ( også kalt Uninitialized datasegment – bss
er en gammel monteringsinstruksjon på en gammel IBM-chip) -seksjonen skal inneholde global variables
og static variables
ikke initialisert eller initialisert til 0 eller NULL. .bss
-delen er vanligvis ikke eksisterende før programmet begynner å kjøres. Dette er grunnen til at du ikke kan hente innholdet statisk. Det er ganske viktig å merke seg at denne delen bidrar til å redusere programmet » s størrelse & gjør det raskere å laste inn.