zhuayi112 发表于 2023-10-1 19:41

ELF文件text中数据的偏移如何转换为文件偏移地址

本帖最后由 zhuayi112 于 2023-10-2 00:35 编辑

假如有个 elf 文件,使用 objdump 导出汇编指令,
其中有一条指令如下:
12a936f:      f3 0f 59 05 d9 d1 e9         mulss0xe9d1d9(%rip),%xmm0      # 2146550 <CSWTCH.2848+0x70>

0xe9d1d9的数据存在.rodata中,不知道用什么公式计算出0xe9d1d9对应文件位置偏移。
求大佬帮解答下。

zhuayi112 发表于 2023-10-2 00:33

找到了会计算了,绕了一大圈

zhuayi112 发表于 2023-10-2 00:35

文件地址+基地址-代码地址= 偏移

zxasdc6594 发表于 2023-10-11 01:54


要计算出0xe9d1d9对应的文件位置偏移,您需要了解ELF文件的结构和相关的符号表信息。在ELF文件中,符号表存储了各种符号的信息,包括地址和名称。

您可以使用objdump命令来查看ELF文件的符号表信息。以下是一个示例命令:

```
objdump -t your_file.o
```

请将"your_file.o"替换为您的ELF文件的路径和名称。

在符号表输出中,您需要查找包含0xe9d1d9值的符号。通常,这些符号会以某种形式与地址相关联。一种常见的表示方式是"<symbol_name>+<offset>",其中"<symbol_name>"是符号的名称,"<offset>"是相对于符号的偏移量。

查找包含0xe9d1d9值的符号后,您可以使用objdump命令来查看该符号的详细信息,包括其在文件中的偏移量。以下是一个示例命令:

```
objdump -dr your_file.o | grep "<symbol_name>"
```

请将"your_file.o"替换为您的ELF文件的路径和名称,并将"<symbol_name>"替换为您找到的符号名称。

该命令将显示与该符号相关的汇编代码,并在其中找到包含0xe9d1d9值的指令。该指令通常会显示其在文件中的偏移量,您可以从中获取所需的文件位置偏移。

请注意,上述命令仅适用于Linux系统上的objdump工具。如果您使用的是其他操作系统或工具链,请相应地调整命令。
页: [1]
查看完整版本: ELF文件text中数据的偏移如何转换为文件偏移地址