我使用此命令获取
.text
,.rodata
和.data
部分的上下文:objdump -s -j .text elf_binary
objdump -s -j .rodata elf_binary
objdump -s -j .data elf_binary
但是基本上当我试图用它来获取
.bss
部分的内容,我总是得到如下所示的错误:objdump -s -j .bss elf_binary
objdump: section '.bss' mentioned in a -j option, but not found in any input file
基本上我如何从ELF二进制文件中获取
.bss
部分的内容?#1 楼
.bss
没有内容。这只是加载程序启动程序时预分配一些空间的提示。执行时将全为0,并且在程序写入之前不会保存任何有用的信息。之后,您可以使用调试器转储内存并浏览其内容。检查Wikipedia页面以获取更多信息。
#2 楼
以符号开头的.bss
块(也称为未初始化的数据段-bss
是古老的IBM芯片上的旧汇编指令)部分应该包含未初始化或初始化为0或NULL的global variables
和static variables
。在程序开始执行之前,通常不存在.bss
部分,这就是为什么您不能静态检索其内容的原因。值得注意的是,此部分有助于减小程序的大小并加快加载速度。