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.