如何实现负载时间ELF重定位?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (34)

在Linux下编写了一个简单的用户空间ELF加载器(为什么?)。我目前的加载程序非常简单,只能加载静态链接的包含位置无关代码的ELF文件。

通常,当一个程序被内核的ELF加载器加载时,它被加载到它自己的地址空间中。因此,数据段和代码段可以按照ELF段中指定的正确的虚拟地址加载。

提问于
用户回答回答于

我看不出有任何方法可以做到这一点,除非完全模仿内核提供的虚拟地址空间,并在虚拟空间中运行代码。当从文件中映射数据部分时,在本质上将其重新定位到ELF解释器虚拟地址空间的未知地址,代码将无法以任何方式引用它。

扫码关注云+社区

领取腾讯云代金券