Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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
C++ 如何获取与objdump输出的标签对应的ELF二进制文件中的文件偏移量?_C++_Linux_Assembly_X86_Elf - Fatal编程技术网

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

C++ 如何获取与objdump输出的标签对应的ELF二进制文件中的文件偏移量?,c++,linux,assembly,x86,elf,C++,Linux,Assembly,X86,Elf,假设我有一个ELF二进制文件prog,并假设objdump-d prog生成以下行的输出[snippet]: 0000000000400601 <.cstart_c941>: 400601: eb 01 jmp 400604 <.end_c941> 0000000000400603 <.cslot_c941>: 400603: 84 .byte 0x84 0

假设我有一个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
0000000000 400601:
400601:eb 01 jmp 400604
0000000000400603 :
400603:84。字节0x84
0000000000400604 :
400604:48 81 ec 80 00分$0x80,%rsp
40060b:50%推力rax
40060c:53%rbx推送
40060d:56%相对标准偏差
40060e:48 31 c0异或%rax,%rax
400611:48 c7 c6 41 06 40 00 mov$0x400641,%rsi
我需要的是与
.cslot\u c941
对应的文件偏移量,因为我需要修改此位置的字节

如何完成此任务?

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

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

0000000000400601 <.cstart_c941>: (File Offset: 0xXXXXXXXX)
0000000000 400601:(文件偏移量:0xXXXXXXXX)

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

使用节头(
objdump-h
)并根据虚拟地址偏移量进行调整。或者,只需搜索足够长的字节序列。@Jester-您能详细说明您的答案吗?谢谢!这很有帮助!
0000000000400601 <.cstart_c941>: (File Offset: 0xXXXXXXXX)