在COFF文件格式中,重定位信息部分的意义是什么?

在COFF文件格式中,重定位信息部分的意义是什么?

In the COFF file format, what is the significance of the relocation information section?

我正在阅读有关COFF文件格式的信息,该格式通常用于创建可执行文件格式(它也有一些变体)。

在阅读时,我遇到了格式的重定位部分。 此重定位部分如何用于创建可执行文件。

如果您向我指出一些对我有帮助的链接,这将非常有用。


实际上,使用COFF时,有两种类型的重定位信息:

  • COFF搬迁记录
  • 可执行映像中的重定位部分。
  • 它们具有相似但不同的目的。可执行文件中的重定位信息标识了在加载时,如果将可执行文件映像加载到与其首选地址不同的地址,则需要修复的内容。

    当对象文件中的某个部分分配给可执行映像中的偏移量时,COFF重定位记录会在链接时标识需要修复的内容。


    重定位用于在进程中将可执行代码放置在其自己的内存空间中。例如,如果您尝试加载两个都请求相同基地址(即,内存中的相同位置)的dll,则其中一个dll将必须重定位到另一个地址。
    NTCore是用于浏览可移植可执行(PE)文件的有用站点,这就是现在所说的COFF。这是另一个很好地解释了搬迁的站点。


    迁移的意外使用是在运行时对二进制文件进行解混淆,而无需其他解压缩代码。请参阅本文。


    推荐阅读