порядок загрузки dll

Тема в разделе "WASM.BEGINNERS", создана пользователем emptyHook, 12 ноя 2010.

  1. emptyHook

    emptyHook New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2010
    Сообщения:
    63
    Помогите, совсем запутался. Скорее всего тема уже имеет место быть и 200 раз обсуждалась.

    Есть 0.ехе файл, он подгружает 1.dll в импорте которой прописана 2.dll c функцией f0. Которую мне и надо перехватить.

    Инжектюсь в 0.exe через ResumeThread и подгружаю свою dll, на данный момент ни 1.dll ни 2.dll в процессе нету.

    Перехватываю LoadLibrary/LdrLoadDll жду пока подгрузится 2.dll, но ее нет. Тупо ставлю таймер на срабатывание через каждые 100 мс - и мониторю через GetModuleHandle - через какое то время она появляется.

    Через что она грузится?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    emptyHook
    LdrpLoadImportModule().
     
  3. emptyHook

    emptyHook New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2010
    Сообщения:
    63
    Clerk

    Все остальное, я так понял, грузится через LdrLoadDll ?
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    emptyHook
    Что значит остальное. Динамический импорт да.
     
  5. emptyHook

    emptyHook New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2010
    Сообщения:
    63
    Clerk

    Спасибо.
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Именно это и делает верификатор(Application Verifier). Ваш модуль должен быть провайдером. См. Avrf*.

    http://wasm.ru/forum/viewtopic.php?id=37208
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    можно в последних версиях еще заюзать apisetschema.dll.
    LdrpApplyFileNameRedirection() смотрит есть ли в .apiset запись о перенаправлении импорта.
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    n0name
    Не универсально, так же как и LdrSetAppCompatDllRedirectionCallback(). Можно вручную изменить смещение в директории экспорта(на сколько помню нет проверок диапазона), прежде отследив момент проецирования секции.