Testet är på Linux 32bit.
Jag använder det här kommandot för att få sammanhanget för .text
.rodata
och .data
avsnitt:
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
Men i princip när jag försökte använda detta för att få innehållet i .bss
avsnittet får jag alltid felet som visas nedan:
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
Hur kan jag i princip få innehållet från .bss
-avsnitt från ELF-binär?
Svar
.bss
har inget innehåll. Det är helt enkelt ett tips till lastaren att förloka lite utrymme när du startar programmet. Det kommer att vara alla 0 vid körningen och kommer inte att innehålla någon användbar information tills programmet skriver till det. Därefter kan du använda en felsökare för att dumpa minnet och utforska dess innehåll.
Kontrollera Wikipedia sidan för mer information.
Svar
.bss
block startat med symbol ( även kallat oinitialiserat datasegment – bss
är en gammal monteringsinstruktion på ett gammalt IBM-chip) avsnitt ska innehålla global variables
och static variables
oinitialiserat eller initialiserat till 0 eller NULL. Avsnittet .bss
finns vanligtvis inte förrän ditt program börjar köras, det är därför du inte kan hämta innehållet statiskt. Det är ganska viktigt att notera att detta avsnitt hjälper till att minska programmet” s storlek & gör det snabbare att ladda.