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

时间:2017-04-12 18:38:13

标签: c++ linux assembly x86 elf

假设我有一个ELF二进制文件jasmine.getEnv().afterEach(done => [ts] Argument of type '(done: any) => void' is not assignable to parameter of type '() => void'. (parameter) done: any 并假设prog沿着以下行生成输出[snippet]:

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

我将如何完成此任务?

1 个答案:

答案 0 :(得分:6)

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

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

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

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

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