Подменить dll в памяти процесса

Тема в разделе "WASM.BEGINNERS", создана пользователем Gonzzik, 18 авг 2007.

  1. Gonzzik

    Gonzzik New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    61
    Здасте. Вот такой вопрос: Неким процессом вызывается моя длл, ф-ией LoadLibrary. Мне нужно сделать так, чтоб моя длл после DLL_PROCESS_ATTACH, подгрузила оригинальную длл. и вернула ее хендл как резулятат работы LoadLibrary в файле ехе.
    Есть ли какие соображения по этому поводу. Буду очень признателен!
     
  2. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Геморой.... Об альтернативных вариантах не думал??

    1.
    А почему нельзя пропатчить импорт оригинальной длл, чтобы при ее загрузке загрузилась и твоя длл?
    все делается элементарно... Тему импорта только обсуждали.

    2.
    Можно пропатчить оригинальную либу, т.е. на точку входа вставить след. комманды:

    LoadLibraryA(mylib.dll); //тут мы загружаем себя
    RepairOrigLib(hLib); //а тут восстанавливаем байты оригинальной либы.

    3.
    Добавить свою либу в импорт ехе...

    А то что ты описал...
    Ну...
    Загружаемая либа к функции LoadLibraryA имеет довольно посредственное отношение...
    Тебе прийдется невероятные системные маневры совершать, чтобы перебить результат уже выполняемой функции...
     
  3. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    в PEBе пофиксеть попробуй, обсуждаемый недавно список загруженных модулей :)))
     
  4. romix

    romix New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    10
    Самый простой способ - создать такую же DLL (по кр. мере в части имен импорт. функций) и подменить название DLL в файле, откуда она вызывается.
     
  5. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    romix причем тут импорт? подгрузка либы присходит LoadLibrary..
    можно попробовать так:
    1. После погрузки длл копируешь себя на другое место в памяти процесса.
    2. На свое старое место мапишь оригинаоьную
    Имя длл должны быть одинаковыми. И не знабываем про релоки.