我想要一个与位置无关的可执行文件的.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段地址范围?
答案 0 :(得分:2)
有没有其他方法可以在运行时(从正在运行的程序中)获取.text段地址范围?
是:您需要使用dl_iterate_phdr并使用info->dlpi_addr
在运行时在内存中找到PIE
二进制文件。第一次调用callback
将是主要的可执行文件。