Главная страница
    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.47 MB
Время: 0.039 c
15-1153550962
DillerXX
2006-07-22 10:49
2006.08.20
Второй раз пытаюсь - опять никак :(


1-1152080166
ancot
2006-07-05 10:16
2006.08.20
Цвет TMainMenu


2-1154460630
Ezorcist
2006-08-01 23:30
2006.08.20
Компонет и переменная


15-1153461311
tButton
2006-07-21 09:55
2006.08.20
<select>


2-1154344371
oleolay
2006-07-31 15:12
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский