Использование абсолютной адресации внутри PE-файла

PE-файл в большинстве случаев использует относительную виртуальную адресацию (RVA). Однако иногда используется абсолютная адресация в виртуальном адресном пространстве. Затем эти адреса обрабатываются с помощью таблицы перемещений. В каких случаях и для чего используется абсолютная адресация внутри виртуального адресного пространства в файле?

Как еще код будет ссылаться на данные, хранящиеся в PE-образе?

IInspectable 30.05.2023 13:30

Нельзя ли это сделать через RVA?

Dmitriy 30.05.2023 18:58

Какую mov инструкцию вы бы предложили?

IInspectable 30.05.2023 19:38

Действительно. Я проверил инструкцию mov для переменной, она использует абсолютную адресацию. Получается, что использование абсолютной или относительной адресации определяется архитектурой процессора? (ЭТО)

Dmitriy 30.05.2023 20:06

RVA не означает относительную виртуальную адресацию. Просто относительный виртуальный адрес.

jtxkopt 30.05.2023 22:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
105
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Абсолютная адресация в виртуальном адресном пространстве используется в PE-файлах, когда исполняемый код должен ссылаться на внешние библиотеки или системные функции, загружаемые по фиксированному адресу памяти в адресном пространстве процесса. Это связано с тем, что абсолютный адрес этих библиотек или функций не может быть известен во время компиляции и, следовательно, должен быть разрешен во время выполнения.

В этих случаях PE-файл будет включать таблицу перемещений, в которой перечислены абсолютные адреса, которые необходимо изменить во время выполнения. Когда исполняемый файл загружается в память, загрузчик операционной системы определяет базовый адрес процесса и использует эту информацию для настройки абсолютных адресов, перечисленных в таблице перемещений, на их новые значения во время выполнения. Этот процесс известен как «переселение».

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

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

Другие вопросы по теме