Proč nemohu přímo získat obsah sekce `.bss`?

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ší.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *