Le test est sur Linux 32 bits.
Jutilise cette commande pour obtenir le contexte de .text
.rodata
et .data
section:
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
Mais fondamentalement quand jessaye de lutiliser pour obtenir le contenu de la section .bss
, jobtiens toujours lerreur ci-dessous:
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
En gros, comment puis-je obtenir le contenu de la section .bss
à partir du binaire ELF?
Réponse
Le .bss
na pas de contenu. Cest simplement une astuce pour le chargeur de préallouer de lespace lors du démarrage du programme. Ce sera tous les 0 à lexécution et ne contiendra aucune information utile tant que le programme naura pas écrit dessus. Après cela, vous pouvez utiliser un débogueur pour vider la mémoire et explorer son contenu.
Réponse
Le bloc .bss
commencé par le symbole ( également appelé segment de données non initialisé – bss
est une ancienne instruction dassemblage sur une ancienne puce IBM) La section est censée contenir global variables
et static variables
non initialisé ou initialisé à 0 ou NULL. La section .bss
est généralement inexistante jusquà ce que votre programme commence à sexécuter, cest pourquoi vous ne pouvez pas « récupérer son contenu de manière statique. Il est assez important de noter que cette section permet de réduire le programme » s taille & le rend plus rapide à charger.