4

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

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

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

4

3 回答 3

7

实际上,对于 COFF,有两种类型的重定位信息:

  1. COFF 搬迁记录
  2. 可执行映像中的重定位部分。

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

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

于 2010-06-06T01:48:56.653 回答
4

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

于 2008-09-18T14:58:46.023 回答
2

重定位的一个意外添加使用是在运行时(去)混淆二进制文件,而不需要额外的解包代码。见这篇论文

于 2009-06-15T19:12:13.503 回答