Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux objdump调整gnu实用程序中的vma偏移量_Linux_Unix_Assembly_Gnu_Objdump - Fatal编程技术网

Linux objdump调整gnu实用程序中的vma偏移量

Linux objdump调整gnu实用程序中的vma偏移量,linux,unix,assembly,gnu,objdump,Linux,Unix,Assembly,Gnu,Objdump,在gnu二进制实用程序中,他们说 objdump --adjust-vma=offset 转储信息时,首先向所有节地址添加偏移量。这 如果节地址与符号表不对应,则此选项非常有用,因为符号表 在使用格式时,将节放在特定地址时可能发生这种情况 它不能表示节地址,例如a.out 我试着去理解它,但我无法理解,所以有人能向我解释这个选项的作用吗?在现实生活中,什么情况需要此选项?此选项在尝试反汇编DOS COM二进制文件时非常有用。COM二进制文件是一个没有任何头的程序映像,它被加载到某个段中的地址0

在gnu二进制实用程序中,他们说

objdump --adjust-vma=offset
转储信息时,首先向所有节地址添加偏移量。这 如果节地址与符号表不对应,则此选项非常有用,因为符号表 在使用格式时,将节放在特定地址时可能发生这种情况 它不能表示节地址,例如a.out


我试着去理解它,但我无法理解,所以有人能向我解释这个选项的作用吗?在现实生活中,什么情况需要此选项?

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


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

此外,另一个用例是重新定位自身的代码(原型示例是IBM-PC中的代码)根据原始代码和元数据是针对源地址还是目标地址(其中一个是可能的,但不能同时针对两个),此选项允许您显示备用转储。

offset
是您在命令行上传递的数字,用于修复输出。这是一个添加到每个打印地址的数字。(显然,
objdump
无法从某些格式的文件元数据中获取该信息)。