objdump默认情况下反汇编哪个部分

时间:2015-03-28 19:20:55

标签: linux objdump bare-metal disassembly

我目前正在构建一个可执行的裸机,它包含一些包含代码的特殊部分。但是,当我objdump -d时,我只会获得.text.init.text部分的代码。 objdump的联机帮助页仅表示它只会拆解那些预计包含说明的部分"使用-d选项时。这些是哪些部分,以及objdump如何判断哪些部分要解码?我知道我也可以使用-D选项来获得所有部分的完整解码,但这通常比我需要的要多得多。

1 个答案:

答案 0 :(得分:5)

objdump在内部使用libbfd获取部分信息。 objdump将回调传递给bfd_map_over_sections(),后者会调用每个部分的回调。调用时,libbfd会将asection *传递给回调,该回调的成员为type。如果类型包含标记SEC_CONTENTS | SEC_CODE,则在objdump选项通过时,它会被-d反汇编。

进入libbfd非常困难,我希望类型检测取决于架构,但我希望我至少给了你正确的指针。 (可能在有更多时间的时候我会更多地研究并扩展答案)..


顺便说一下,如果您需要一个脚本来过滤掉objdump -D中感兴趣的部分,您可以使用sed,如下所示:

# ------------Place section names here ---------------vvv 
objdump -D object.o | sed -rn '/Disassembly of.*\.(comment|text)/{:a;p;n;/Disassembly of/!ba}'