Разница между смещением и RVA - PullRequest
3 голосов
/ 08 марта 2012

В чем разница между относительным виртуальным адресом и смещением от базы файла ??

1 Ответ

4 голосов
/ 08 марта 2012

RVA - это относительный виртуальный адрес, то есть расстояние от предпочтительного базового адреса.Предпочтительный базовый адрес указывается в PE-заголовке и является (предпочтительным) виртуальным адресом начала образа в памяти, когда исполняемый файл загружается в память.

И смещение файла - это количество байтов, которое вы должны прочитать с начала PE-файла, чтобы попасть куда-нибудь в файл.Итак, если у вас есть раздел, вы найдете обе вещи в заголовке раздела: RVA раздела и его смещение в файле;Вы также найдете два размера, один для того, сколько виртуальной памяти раздел получит после загрузки, и один, который просто указывает размер данных раздела в PE-файле.

Многие ссылки внутри PE даны как RVA.В таких случаях вам нужно проверить все заголовки разделов (или иметь какую-то карту), чтобы получить смещение в PE-файле ссылки.

...