Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Вниз

Всегда ли BaseAddr = ImageBase для user32.dll ?   Найти похожие ветки 

 
Сергей М. ©   (2006-04-26 13:33) [0]

Иными словами, всегда ли система выполняет загрузку этого модуля по одному и тому же (фиксированному) адресу, подобно тому как это выглядит для kernel32.dll ? Есть ли здесь какое-либо правило и исключения из него ?

Спасибо.


 
GrayFace ©   (2006-04-26 13:54) [1]

Проверил. Всегда. Так же, не релокается ntdll. Эти 3 библиотеки - исключения из правила. Может есть и другие.


 
Сергей М. ©   (2006-04-26 14:05) [2]


> Эти 3 библиотеки - исключения из правила


Не уверен.


 
Игорь Шевченко ©   (2006-04-26 15:22) [3]


> Иными словами, всегда ли система выполняет загрузку этого
> модуля по одному и тому же (фиксированному) адресу, подобно
> тому как это выглядит для kernel32.dll ?


При попытке загрузить приложение в область адресов, которую занимает user32.dll, системой выдается аналогичное для kernel32.dll сообщение.

Система Windows 2000 SP4.

А может быть, known dlls вообще не перемещаются ?


 
Сергей М. ©   (2006-04-26 15:51) [4]


> может быть, known dlls вообще не перемещаются ?


Мне, Игорь, самому хотелось бы это знать ..

Я тоже наблюдаю (W2k) во всех процессах (в т.ч. - "симстемных") размещение user32 по одному и тому же адресу ... но, думаю, это вполне м.б. просто фичей большинства известных линкеров.


 
Игорь Шевченко ©   (2006-04-26 16:17) [5]

Сергей М. ©   (26.04.06 15:51) [4]

А ты не пробовал влезть в адреса других known dlls, на которые тем более, есть bound imports ? Я не уверен в правильности своих рассуждений, но в поисках в гугле натыкался на фразу "Do not ever rebase known Dlls".


 
Игорь Шевченко ©   (2006-04-26 16:24) [6]

Сергей М. ©   (26.04.06 15:51) [4]

Посмотрев в известном тебе месте, ты увидишь, что known dlls загрузчик не перемещает, считая это за фатальную ошибку.


 
Сергей М. ©   (2006-04-26 17:13) [7]


> Игорь Шевченко ©   (26.04.06 16:24) [6]


Как ты считаешь - передав в "чужой" процесс (скажем, winlogon.exe для конкретности) адреса точек входа в интересующие меня вызовы в составе user32 в контексте моего (текущегго) процесса, я поимею геморрой ? Или я могу быть уверенным в том что эти адреса будут актуальны и в упомянутом АП ?


 
Игорь Шевченко ©   (2006-04-26 17:28) [8]

Сергей М. ©   (26.04.06 17:13) [7]

Насчет уверенности я стопроцентно не могу гарантировать, естестественно, но если принимать во внимание [6], то я бы был уверен, что user32.dll грузится по одному и тому же адресу. Естественно, этот адрес зависит от версии системы и сервис-пака.


 
Сергей М. ©   (2006-04-27 10:46) [9]


> Игорь Шевченко ©   (26.04.06 17:28) [8]


Спасибо.

То же самое, очевидно, касается как минимум еще и ntdll.dll и msvcrt.dll, что резко облегчает жизнь)


 
Игорь Шевченко ©   (2006-04-27 11:33) [10]

Сергей М. ©   (27.04.06 10:46) [9]

msvcrt.dll в списке KnownDlls нету, так что я не был бы таким уверенным. А GetModuleHandleEx не может тебе помочь ?


 
Сергей М. ©   (2006-04-27 11:51) [11]


> Игорь Шевченко ©   (27.04.06 11:33) [10]


Как вариант она мной рассматривалась, но (цитата из msdn)

Client  Requires Windows Vista or Windows XP.
Server  Requires Windows Server "Longhorn" or Windows Server 2003.


а мне нужно обеспечить совместимость со всеми NT-based ОС


 
Игорь Шевченко ©   (2006-04-27 12:20) [12]

Сергей М. ©   (27.04.06 11:51) [11]

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



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.038 c
2-1153999311
learner
2006-07-27 15:21
2006.08.20
Порядок объявления переменных.


8-1140424615
barakuda
2006-02-20 11:36
2006.08.20
освобождение памяти после просмотра большого JPEG


2-1154079558
Ega23
2006-07-28 13:39
2006.08.20
Разрушается ли Glyph у SpeedButton?


2-1153685169
Adios
2006-07-24 00:06
2006.08.20
Присвоение процедуры


15-1153750108
Zilog_
2006-07-24 18:08
2006.08.20
Ребята помогите разобраться с переводом с С++ в Делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский