为什么我不能直接获取`.bss`部分的内容?

逆向工程 拆卸 二元分析 小精灵
2021-06-09 03:44:03

测试在 Linux 32 位。

我使用这个命令来获取.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

基本上我怎样才能.bss从 ELF 二进制文件中获取部分的内容

2个回答

.bss没有内容。这只是提示加载程序在启动程序时预先分配一些空间。在执行时它将全为 0,并且在程序写入之前不会保存任何有用的信息。之后,您可以使用调试器转储内存并探索其内容。

查看维基百科页面以获取更多信息。

.bss 由符号开始块(也称为未初始化数据段-bss是一个古老的IBM芯片旧汇编指令)部分应该包含global variablesstatic variables未初始化或初始化为0或NULL。.bss您的程序开始执行之前,部分通常不存在,这就是您无法静态检索其内容的原因。值得注意的是,此部分有助于减小程序的大小并使其加载速度更快。