Показать сообщение отдельно
Старый 28.08.2008, 18:53   #8  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Aleksey_M Посмотреть сообщение
Указание своего image base не гарантирует, что код будет загружен именно по этому адресу, там уже может быть занято какой-нить библиотекой.
Помнится, для системных библиотек image base прописан так, чтобы минимизировать вероятность того, что память по указанному адресу в момент их загрузки уже будет занята, - такой же подход можно применить и к своей dll: прописать не штатный адрес 0x00400000, а что-нить "повыше", поближе к границе 2-го гигабайта адресного пространства. Вообще же, здесь была упомянута WinXP в контексте того, что в Vista уже появилась такая вещь, как Address Space Layout Randomization (ASLR). Т.е. Vista специально случайным образом меняет адреса, на которые в адресном пространстве отображаются загружаемые модули. Об этой дополнительной "мере предосторожности" подробно рассказывается в упомянутом докладе - равно как и способах минимизировать эффект этой "меры предосторожности" ОС