1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

LoadLibrary,DllMain,Кто загрулил DLL?

Тема в разделе "WASM.WIN32", создана пользователем AlexCab, 27 дек 2010.

  1. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Да тут ваще налицо черезжопная архитектура. Таких извратов быть не должно имхо.
     
  2. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Лучший вариант дрбавить в плагин функцию типа Initialize(HMODULE hParent) как писалось ранее; И вызывать ее.
     
  3. AlexCab

    AlexCab New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    142
    _sheva740
    Как написал ниже Twister это не очень хорошее решение.

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

    Twister
    Интересное решение, но думаю это может перестать работать в будующих врсиях WinAPI(как и PEB).

    FatMoon
    Незнаю, буду проверять, но это гараздо более длинный путь чем если бы существовала
    функция "GetParentModule".


    Спасибо за ответы, пожже я ещё подумаю над этим, и отпишусь.
     
  4. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Только раскрутка стека или первоначальный перехват LdrLoadDll.....
     
  5. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Дык это никому не нужно и нелогично)

    Если у вас белое приложение может озвучите зачем вам знать какой модуль вас грузит? Не представляю для чего это может быть нужно...
     
  6. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Ответ Twistera самое оно! Что значит перестанет работать в других версиях? Стек будет не так работать? Отличная шутка! Это самый простой и быстрый способ! ИМХО
     
  7. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Разрабатывать единый интерфейс. А потом кодить
     
  8. ziral2088

    ziral2088 New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2009
    Сообщения:
    283
    Заюзать StackWalk64 религия не позволяет?
     
  9. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    А то и значит. К примеру некто(троян, некая абстрактная защита, некий абстрактный фаервол) установил перехват на LoadLibrary в результате которого в стеке появляется ещё 1 адрес возврата. Что делать будем? Костылей на разные случаи придумать можно много, но лучше всё же без них обойтись.
     
  10. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Необходимо ориентироваться не на количество адресов возврата после "отправной точки", а искать возврат из LoadLibrary-функций (их много разных) в несистемный модуль.
     
  11. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Twister
    если перехват установлен через таблицу импорта модуля х, а заглушка имеет вид

    push FileName
    call LoadLibrary
    ....
    ret 4

    то возврат из LoadLibrary будет в заглушку, а она может находиться как в выделенной памяти, так и в каком-то левом модуле.

    Либо же, к примеру, перехват установлен сплайсом LoadLibrary. Он меняет адрес возврата из LoadLibrary, чтобы получить управление после её выполнения. Тогда у нас вообще нет в стеке валидного адреса.
     
  12. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    asd
    Да, разумеется. Если вызов LoadLibrary сделан как-то нестандартно или из заглушки, то верный адрес нам не получить. В этом случае задача не имеет решения. По крайней мере через раскрутку стека точно.
     
  13. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    это всего лишь частный случай.