· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› DLL Loader

Посл.отвђт Сообщенiе


Дата: Ноя 8, 2004 08:08:19

Как сделать чтобы во вручную загруженной DLL работала нормально функция GetModuleHandle ? Ничего не придумывается кроме как прописать в таблице импорта адрес переходника.


Дата: Ноя 8, 2004 11:39:06

Вручную это как, без LoadLibrary?


Дата: Ноя 8, 2004 11:56:23

Да, без LoadLibrary. Выделяем память, Читаем хидер, читаем секции, настраиваем релоки, настриваем импорт, выставляем права доступа секциям, вызываем DllMain.
Все прекрасно работает пока не вызываются GetModuleHandle, GetCommandLine (вроде как), они выдают информацию о загрузчике, т.е. GetModuleHandle возвращает 0x00400000 хотя загрузил DLL по адресу 0x00320000. Ну это понятно, а вот как догрузить так чтобы все функции корректно работали ?


Дата: Ноя 8, 2004 12:12:28

„они выдают информацию о загрузчике“

Они выдают информацию из слабодокументированных (отличающихся от билда к билду) структур, которые загрузчик должен заполнять

„GetModuleHandle возвращает 0x00400000 хотя загрузил DLL по адресу 0x00320000“

GetModuleHandle,0 возвращает базовый адрес модуля, который инициализировал процесс (т.е. exe), для dll нужно указывать её имя (которое тоже ищется в тех структурах)

„а вот как догрузить так чтобы все функции корректно работали “

Нужно полностью повторять работу настоящего загрузчика, т.е. заполнять эти структуры (смотри в сторону Peb.Ldr)


Дата: Ноя 11, 2004 12:23:23

bogrus
ну допустим я заполнил структуры, а куда их потом дописать чтобы система видела ? Я просто хочу полностью представлять процес.


Дата: Ноя 11, 2004 13:28:28

А это смотря какая система, где в хипе ... Выделяй там кусок, заполняй, настраивай. Смотри LoadLibrary в отладчике


Дата: Ноя 11, 2004 13:38:56

А кроме как в отладчике есть смысл смотреть Wine, ReactOS, SanOS ? Или всех их только смысл объединяет, а внутренности несовместимы ?


Дата: Ноя 11, 2004 13:52:09

Под словами „смотря какая система“ я имел ввиду только Windows (смотря какая его версия)


Дата: Ноя 11, 2004 14:11:39

я так и понял, что имеется в виду версия, я хочу узнать можно ли получить информацию о работе реального загрузчика Win2000 из других проектов. То есть ориентируюсь только на системы NT/2K/XP.


Дата: Ноя 11, 2004 17:18:38

а сырцы NT4 не помогут прояснить ситуацию ?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.120