DLL Loader

Тема в разделе "WASM.WIN32", создана пользователем sep, 8 ноя 2004.

  1. sep

    sep New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    51
    Как сделать чтобы во вручную загруженной DLL работала нормально функция GetModuleHandle ? Ничего не придумывается кроме как прописать в таблице импорта адрес переходника.
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Вручную это как, без LoadLibrary?
     
  3. sep

    sep New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    51
    Да, без LoadLibrary. Выделяем память, Читаем хидер, читаем секции, настраиваем релоки, настриваем импорт, выставляем права доступа секциям, вызываем DllMain.

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

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




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







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







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

    sep New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    51
    bogrus

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

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    А это смотря какая система, где в хипе ... Выделяй там кусок, заполняй, настраивай. Смотри LoadLibrary в отладчике
     
  7. sep

    sep New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    51
    А кроме как в отладчике есть смысл смотреть Wine, ReactOS, SanOS ? Или всех их только смысл объединяет, а внутренности несовместимы ?
     
  8. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Под словами
    я имел ввиду только Windows (смотря какая его версия)
     
  9. sep

    sep New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    51
    я так и понял, что имеется в виду версия, я хочу узнать можно ли получить информацию о работе реального загрузчика Win2000 из других проектов. То есть ориентируюсь только на системы NT/2K/XP.
     
  10. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    а сырцы NT4 не помогут прояснить ситуацию ?