objdump在gnu Utilities中调整vma偏移量

时间:2018-03-13 06:35:59

标签: linux unix assembly gnu objdump

在gnu Binary Utilities中他们说

objdump --adjust-vma=offset
  

转储信息时,首先向所有部分地址添加偏移量。这个   如果节地址不对应于符号表,则它很有用   在使用格式时将部分放在特定地址时会发生这种情况   它不能代表部分地址,例如a.out。

我尝试理解它,但我不能,所以任何人都可以向我解释这个选项的作用吗?在现实生活中需要什么样的环境?

2 个答案:

答案 0 :(得分:1)

此选项在尝试反汇编DOS COM二进制文件时非常有用。 COM二进制文件是一个程序映像,没有任何标题,在某些段中加载到地址0x100,并通过跳转到地址0x100来执行。

objdump不知道这一点(毕竟,没有办法检测到文件是COM二进制文件)并将二进制文件反汇编,好像它已加载到地址0.传递--adjust-vma=0x100修复了这种行为,并使objdump反汇编二进制文件,就像它被加载到0x100(这是我们想要的)一样。

答案 1 :(得分:1)

fuz's excellent answer之外,另一个用例是重定位自己的代码(原型示例是IBM-PC Master Boot Record中的代码。)取决于原始代码和元数据是否针对source 目的地地址(两者都可以但不能同时出现),此选项允许您显示备用转储。