为什么objdump中缺少信息?

wat*_*iss 6 objdump

我无法找到为什么在运行objdump时我的汇编代码中缺少某些字.一行中的"......"代表什么?

Dav*_*vid 7

在-d或-D(反汇编)的objdump输出内部,通常会有多个只包含省略号的行实例.这只是因为上面和下面的字节之间的所有字节都是空的(0x00).

下面是一个反汇编的32位程序的输出.在00234(+4)和00240的偏移量之间都是可执行文件内的0x00.

40022c: 00000034    0x34
400230: 0000016a    0x16a
400234: 000001ac    0x1ac
  ...
400240: 00000098    0x98
400244: 00000000    nop
400248: 000000a9    0xa9
  ...
400254: 000000cf    0xcf
Run Code Online (Sandbox Code Playgroud)

查看我们反汇编的应用程序,您可以看到省略号出现的位置都是空字节.没有必要多次向用户输出这些内容,因此objdump只是将它们删除.粗体文本是省略号出现的位置.我还应该注意,如果只有一个部分(32/64位)的空字节,objdump将根据机器显示为nop或类似部分.

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000220                                      34 00 00 00              4...
00000230  6A 01 00 00 AC 01 00 00 00 00 00 00 00 00 00 00  j...¬...........
00000240  98 00 00 00 00 00 00 00 A9 00 00 00 00 00 00 00  ˜.......©.......
00000250  00 00 00 00 CF 00 00 00                          ....Ï...


小智 5

我对 objdump 使用了 -z 参数,它禁止隐藏一些零信息。您应该看到 .word 参数带有零。

当您将 objdump 的输出传递给另一个程序时,这似乎很有用。