Test probíhá na 32bitovém systému Linux.
Tento příkaz používám k získání kontextu .text
.rodata
a .data
sekce:
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
Ale v zásadě když jsem se pokusil použít toto k získání obsahu sekce .bss
, vždy se mi zobrazí následující chyba:
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
V zásadě, jak mohu získat obsah .bss
sekce z binárního souboru ELF?
Odpovědět
.bss
nemá žádný obsah. Je to prostě tip na zavaděč, aby při startu programu předem určil místo. Bude to všech 0 s při provádění a nebude obsahovat žádné užitečné informace, dokud na něj program nezapíše. Poté můžete pomocí debuggeru vypsat paměť a prozkoumat její obsah.
Další informace najdete na stránce Wikipedia.
Odpověď
.bss
blok zahájený symbolem ( také se nazývá neinicializovaný datový segment – bss
je stará instrukce pro sestavení na starém čipu IBM) část by měla obsahovat global variables
a static variables
neinicializováno nebo inicializováno na 0 nebo NULL. Sekce .bss
obvykle neexistuje, dokud se program nespustí, proto nemůžete staticky načíst její obsah. Je docela důležité si uvědomit, že tato část pomáhá program zmenšit. “ Díky velikosti & je načítání rychlejší.