gpt4 book ai didi

gcc - 共享库如何获取自己的基地址

转载 作者:行者123 更新时间:2023-12-04 00:48:38 25 4
gpt4 key购买 nike

我有所有符号的偏移地址(通过 libelf 在其自己的二进制文件 .so 上执行获得)。现在,在运行时,我需要计算所有这些符号的绝对地址,为此我需要获取基地址(加载共享库的位置)并进行计算:

symbol_address = base_address + symbol_offset

共享库如何获得自己的基地址?在 Windows 上,我会使用传递给 DllMain 的参数,在 linux 中是否有一些等价物?

最佳答案

在 Linux 上,dladdr()在来自 libfoo.so 的任何符号上会给你

  void *dli_fbase;      /* Load address of that object */

更多信息 here .

或者, dl_iterate_phdr can give您加载加载到当前进程中的每个 ELF 图像的地址。

两者都是 GLIBC扩展名。如果您没有使用 GLIBC ,请告诉您正在使用什么,以便可以给出更合适的答案。

关于gcc - 共享库如何获取自己的基地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3299565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com