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

5

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

在阅读过程中,我遇到了该格式的重定位部分。这个重定位部分如何用于创建可执行文件。

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

3个回答

8
实际上,COFF有两种类型的重定位信息:
  1. COFF重定位记录
  2. 可执行映像中的重定位部分。

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

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


4

迁移是将可执行代码放置在进程的自己内存空间中。例如,如果您尝试加载两个请求相同基地址(即内存中的相同位置)的dll,则其中一个dll必须被迁移到另一个地址。

NTCore是一个有用的网站,可以探索便携式可执行文件(PE)文件,这就是COFF现在的称呼。 这里是另一个很好地解释了迁移的网站。


2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接