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

Shu*_*eng 2 c++ linux x86 assembly elf

假设我有一个ELF二进制文件prog并假设objdump -d prog沿着以下行生成输出[snippet]:

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
Run Code Online (Sandbox Code Playgroud)

我需要的是文件偏移对应.cslot_c941,因为我需要在这个位置修改字节.

我该如何完成这项任务?

Mic*_*tch 6

您可以通过使用获取OBJDUMP来转储文件偏移量-F.从OBJDUMP文档:

objdump 
         ..snip..
         [-F|--file-offsets]
         ..snip..
Run Code Online (Sandbox Code Playgroud)

尝试使用objdump -DF prog.您应该看到每个标签都带有文件偏移量,其中包含以下信息:

0000000000400601 <.cstart_c941>: (File Offset: 0xXXXXXXXX)
Run Code Online (Sandbox Code Playgroud)

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