我想要位置独立可执行文件的.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
第一个电话将是主要的可执行文件。