Как я могу установить /базовый адрес в «хорошее» значение?

#c #dll #native

Вопрос:

У нас есть проект со множеством DLL-файлов, которые загружаются при запуске приложения. Базовые адреса DLL-файлов перекрываются, так что образ памяти перемещается. Есть ли возможность автоматически назначить базовые адреса или способ рассчитать «хороший» базовый адрес для каждого файла dll?

Ответ №1:

Вы можете использовать утилиту REBASE, которая поставляется с SDK платформы и с Visual Studio, я думаю, чтобы установить базовые адреса целой группы библиотек DLL, загруженных приложением

Вы предоставляете REBASE список библиотек DLL, составляющих вашу программу, не включая системные библиотеки DLL, затем он выполняет фиктивную загрузку всех библиотек DLL и назначает им новые базовые адреса.

Это может быть выполнено как часть заключительного этапа сборки.

Здесь есть статья доктора Доббса о перебазировании и статья Microsoft о перебазировании в целом здесь

Комментарии:

1. Я узнал, что могу просто позвонить REBASE.EXE -d -b 0x60000000 *.dll для этого.

Ответ №2: