главная программы pe explorer обзорный тур
Просмотр и удаление таблицы релокаций
Просмотр таблицы релокаций
Информация о базовых поправках, содержащаяся в таблице релокаций, помогает операционной системе загружать исполняемый файл, применяя поправки к абсолютным адресам в памяти. Загрузчику требуются данные базовых поправок только в том случае, если образ файла не может быть загружен в память по базовому адресу ImageBase, значение которого указано в заголовке файла.
Таким образом, если базовый адрес загрузки ImageBase, указанный компоновщиком при компиляции программы, оказывается недоступным, то загрузчик загрузит программу по другому адресу, используя поправки смещений относительно абсолютных адресов для инструкций или значений переменных.
Если же базовый адрес загрузки ImageBase доступен, то информация о базовых поправках игнорируется загрузчиком.
Таблица базовых поправок (релокаций) содержит список перемещений, т.е. тех мест в образе файла в памяти, в которых необходимо учесть различие между указанным в заголовке базовым адресом загрузки и реальным адресом загрузки.
Размер таблицы релокаций, указанный в заголовке файла, складывется из количества байт в таблице релокаций. Сама таблица разбита на блоки различной длины. Каждый блок описывает поправки для одной страницы размером в 4K. Подробнее о таблице релокаций можно прочесть в файле справки.
Удаление таблицы релокаций
PE Explorer предоставляет вам возможность удалить таблицу релокаций из EXE файлов. Как правило, EXE файлы не нуждаются в поправках, поскольку, в отличие от DLL, они первыми загружаются в виртуальное адресное пространство и гарантированно получают базовый адрес загрузки.
Однако мы не рекомендуем удалять таблицу релокаций из всех подряд EXE файлов без особых на то причин, поскольку могут встретится и исключения. Например, в старых программах для NT может быть указан базовый адрес загрузки 0х10000, который стал недоступен в более поздних версиях Windows.
С другой стороны, компоновщик Visual Studio не включает таблицу релокации в релизные сборки. И вы не найдёте таблицу релокации в стандартных программах в Windows, например, в Notepad.exe.
Средство удаления таблицы релокаций вызывается командой "Remove Relocations" из меню Tools. Первое, что оно делает, это проверяет, не является ли файл драйвером или библиотекой DLL и предупреждает вас о недопустимости удаления таблицы релокаций из таких файлов. Удаление поправок из драйверов и DLL в большинстве случаев сделает файлы неработоспособными.
Мы настоятельно не рекомендуем удалять таблицу релокаций из DLL и драйверов, поскольку она необходима для их загрузки. В случае, если же вы всё же решите испытать судьбу и удалить таблицу поправок из DLL, пожалуйста, не забудьте перед этим сделать резервную копию файла.
Скачать 30-дневную пробную версию PE Explorer Купить лицензию