Какое значение имеет раздел информации о перемещении в формате файла COFF? - PullRequest
4 голосов
/ 18 сентября 2008

Я читаю о форматах файлов COFF, которые обычно используются для создания исполняемого формата файлов (у него также есть несколько вариантов).

Во время чтения я наткнулся на раздел о перемещении формата. Как этот раздел перемещения используется для создания исполняемого файла.

Было бы очень полезно, если бы вы указали мне несколько ссылок, которые мне помогут.

Ответы [ 3 ]

7 голосов
/ 06 июня 2010

На самом деле, с COFF существует 2 типа информации о перемещении:

  1. COFF Записи о перемещениях
  2. Раздел перемещения в исполняемом образе.

Они имеют схожие, но разные цели. Информация о перемещении в исполняемом файле определяет вещи, которые необходимо исправить во время загрузки, если исполняемый образ будет загружен по адресам, отличным от его предпочтительного адреса.

COFF Записи перемещения определяют вещи, которые необходимо исправить во время соединения, когда раздел в объектном файле назначается смещению в исполняемом изображении.

4 голосов
/ 18 сентября 2008

Перемещение используется для помещения исполняемого кода в собственное пространство памяти в процессе. Например, если вы попытаетесь загрузить две библиотеки DLL, которые запрашивают один и тот же базовый адрес (т. Е. Одно и то же место в памяти), то одну библиотеку придется переместить на другой адрес. NTCore - это полезный сайт для изучения файлов Portable Executable (PE), который теперь называется COFF. Здесь - еще один сайт, который довольно хорошо объясняет перемещение.

2 голосов
/ 15 июня 2009

Непреднамеренное дополнительное использование перемещения - (де) запутывание двоичных файлов во время выполнения без дополнительного кода распаковки. См этот документ .

...