【问题标题】:How do I get the file offset in an ELF binary corresponding to a label outputted by objdump?如何获取与 objdump 输出的标签相对应的 ELF 二进制文件中的文件偏移量?
【发布时间】:2017-09-08 16:28:22
【问题描述】:

假设我有一个 ELF 二进制文件 prog 并假设 objdump -d prog 产生以下行的输出 [sn-p]:

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对应的文件偏移量,因为我需要修改这个位置的字节。

我将如何完成这项任务?

【问题讨论】:

  • 使用节标题 (objdump -h) 并通过虚拟地址偏移量进行调整。或者,只需搜索足够长的字节序列。
  • @Jester - 你能详细说明你的答案吗?

标签: c++ linux assembly x86 elf


【解决方案1】:

您可以使用-FOBJDUMP 转储文件偏移量。来自OBJDUMP documentation

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

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

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

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

【讨论】:

  • 谢谢!这很有帮助!
猜你喜欢
  • 2012-06-24
  • 2019-06-07
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2022-07-19
  • 2020-01-15
  • 2021-07-08
相关资源
最近更新 更多