.text段地址范围的位置无关可执行文件

时间:2016-02-16 13:44:43

标签: c linux elf

我想要一个与位置无关的可执行文件的.text部分的地址。使用readelf -S

Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
.text             PROGBITS         0000000000002700  00002700
       0000000000001672  0000000000000000  AX       0     0     16

我知道它将从库加载到内存中的0x2700字节开始。但是如何获取可执行文件的加载地址? 有没有其他方法可以在运行时(从正在运行的程序)获取.text段地址范围?

1 个答案:

答案 0 :(得分:2)

  

有没有其他方法可以在运行时(从正在运行的程序中)获取.text段地址范围?

是:您需要使用dl_iterate_phdr并使用info->dlpi_addr在运行时在内存中找到PIE二进制文件。第一次调用callback将是主要的可执行文件。