Test ist unter Linux 32bit.
Ich verwende diesen Befehl, um den Kontext von .text
.rodata
und .data
Abschnitt:
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
Aber im Grunde Wenn ich versucht habe, den Inhalt des Abschnitts .bss
abzurufen, wird immer der folgende Fehler angezeigt:
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
Wie kann ich den Inhalt des Abschnitts .bss
aus der ELF-Binärdatei abrufen?
Antwort
Die .bss
hat keinen Inhalt. Es ist einfach ein Tipp für den Loader, beim Starten des Programms etwas Speicherplatz vorzuweisen. Bei der Ausführung werden alle Nullen angezeigt, und es werden keine nützlichen Informationen gespeichert, bis das Programm darauf schreibt. Danach können Sie einen Debugger verwenden, um den Speicher zu sichern und seinen Inhalt zu untersuchen.
Antwort
Der Block .bss
wird mit dem Symbol ( Auch als nicht initialisiertes Datensegment bezeichnet – bss
ist eine alte Montageanweisung auf einem alten IBM-Chip.) Abschnitt soll global variables
und static variables
nicht initialisiert oder auf 0 oder NULL initialisiert. Der Abschnitt .bss
ist normalerweise erst vorhanden, wenn Ihr Programm ausgeführt wird. Aus diesem Grund können Sie den Inhalt nicht statisch abrufen. Es ist ziemlich wichtig zu beachten, dass dieser Abschnitt zur Reduzierung des Programms beiträgt. s Größe & beschleunigt das Laden.