如何获取与 objdump 输出的标签相对应的 ELF 二进制文件中的文件偏移量

How do I get the file offset in an ELF binary corresponding to a label outputted by objdump?

本文关键字:相对 标签 ELF 二进制文件 偏移量 文件 输出 何获取 获取 objdump      更新时间:2023-10-16

>假设我有一个ELF二进制prog,并假设objdump -d prog生成以下行[片段]的输出:

0000000000400601 <.cstart_c941>:
  400601:   eb 01                   jmp    400604 <.end_c941>
0000000000400603 <.cslot_c941>:
  400603:   84                      .byte 0x84
0000000000400604 <.end_c941>:
  400604:   48 81 ec 80 00 00 00    sub    $0x80,%rsp
  40060b:   50                      push   %rax
  40060c:   53                      push   %rbx
  40060d:   56                      push   %rsi
  40060e:   48 31 c0                xor    %rax,%rax
  400611:   48 c7 c6 41 06 40 00    mov    $0x400641,%rsi

我需要的是对应于.cslot_c941的文件偏移量,因为我需要修改此位置的字节。

我将如何完成此任务?

您可以使用 -F 让 OBJDUMP 转储文件偏移量。从 OBJDUMP 文档中:

objdump 
         ..snip..
         [-F|--file-offsets]
         ..snip..

尝试使用 objdump -DF prog 。您应该会看到每个标签都与文件偏移量一起列出,其中包含以下信息:

0000000000400601 <.cstart_c941>: (File Offset: 0xXXXXXXXX)

0xXXXXXXXX应该是该标签的文件偏移量。