Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

**Название статьи:** "Как установить адресную базу приложения больше 32-битного значения в Delphi для 64-битной Windows"

Delphi , Синтаксис , Справочник по API-функциям

Как установить адресную базу приложения больше 32-битного значения в Delphi для 64-битной Windows

Разработчики, работающие с Delphi и компилирующие свои приложения под 64-битные операционные системы, иногда сталкиваются с необходимостью установить адресную базу (image base) приложения больше 32-битного значения. Это может быть нужно для тестирования приложения в условиях, когда оно загружается в "высокий" адресный диапазон, например, из-за некоторых тестов на установку хуков.

Проблема

При использовании директивы {$IMAGEBASE} в Delphi разработчики сталкиваются с ограничением, что можно установить значение меньше, чем FFFFFFFF (32-бит). При компиляции в 64-битном режиме Delphi игнорирует старшие биты 32-битного DWORD в указанном image base.

Решение

Согласно подробному ответу, компоновщик Delphi не поддерживает большие адресные базы, несмотря на то, что новые заголовки PE опционально позволяют задавать большие значения адресной базы. В качестве решения предлагается использовать сторонние инструменты для перебазирования исполняемого файла после его сборки. Например, можно использовать утилиту EDITBIN с опцией /REBASE.

Пример перебазирования исполняемого файла:

editbin /rebase:base=0xffffff0000 Project1.exe

Эта команда изменит адресную базу приложения Project1.exe на указанное значение. Подтверждение изменений можно проверить с помощью утилиты Process Hacker.

Альтернативный метод

Также можно использовать утилиту link.exe с параметром /edit и /rebase, что также вызовет функциональность перебазирования:

link.exe /edit /rebase:base=* Project1.exe

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

Заключение

Разработчикам, которые столкнулись с ограничением в Delphi при установке адресной базы больше 32-битного значения, следует рассмотреть возможность использования сторонних инструментов для перебазирования исполняемого файла после сборки. Это позволит установить необходимый адресный диапазон и провести тестирование приложения в условиях, близких к реальным.

Для дополнительной информации, которая может быть применима только к более старым версиям операционных систем (например, Windows 7 и более ранним), можно рассмотреть возможность включения опции загрузки nolowmem, которая позволит загружать приложение в адреса выше 4 ГБ.

Важно отметить, что в будущем, если Embarcadero добавит поддержку больших адресных баз в компоновщик Delphi, использование сторонних инструментов может стать неактуальным.

Создано по материалам из источника по ссылке.

Разработчики Delphi, компилирующие приложения для 64-битной Windows, могут столкнуться с необходимостью установить адресную базу приложения больше 32-битного значения для специфических целей, таких как тестирование в условиях загрузки в высокий адресный


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Справочник по API-функциям ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:31:37/0.0033261775970459/0