.text段地址范围的位置独立可执行文件

我想要位置独立可执行文件的.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段地址范围在运行时(从正在运行的程序)?

有没有其他的方式来获得.text段地址范围在运行时(从正在运行的程序)?

是的:您需要使用dl_iterate_phdr并使用info->dlpi_addr在运行时在内存中定位PIE二进制文件。 您的callback第一个电话将是主要的可执行文件。