C++ 如何获取与objdump输出的标签对应的ELF二进制文件中的文件偏移量?
假设我有一个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
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)