我正在阅读有关COFF文件格式的内容,它通常用于创建可执行文件格式(也有一些变体)。 在阅读过程中,我遇到了该格式的重定位部分。这个重定位部分如何用于创建可执行文件。 如果您能为我指出一些有帮助的链接,那将非常有用。
实际上,COFF有两种类型的重定位信息: COFF重定位记录 可执行映像中的重定位部分。 它们具有类似但不同的目的。可执行文件中的重定位信息标识需要在加载时进行修复的内容,如果可执行映像在其首选地址之外的不同地址加载,则需要进行修复。 COFF重定位记录标识需要在链接时进行修复的内容,当对象文件中的一个部分被分配到可执行映像中的偏移量时。
迁移是将可执行代码放置在进程的自己内存空间中。例如,如果您尝试加载两个请求相同基地址(即内存中的相同位置)的dll,则其中一个dll必须被迁移到另一个地址。NTCore是一个有用的网站,可以探索便携式可执行文件(PE)文件,这就是COFF现在的称呼。 这里是另一个很好地解释了迁移的网站。