Выгрузить DLL

Тема в разделе "WASM.WIN32", создана пользователем Marik, 17 янв 2011.

  1. Marik

    Marik New Member

    Публикаций:
    0
    Добрый день!
    Возникла проблема с выгрузкой DLL.
    С помощью драйвера и APC подгружаю свою DLL в процесс при его запуске. Есть необходимость перемещения/удалении dl без перезагрузки ПК а для этого соответственно требуется выгрузить эту dll.
    Использование FreeLibraryAndExitThread не помогает. Приходит уведомление DLL_PROCESS_DETACH в процедуру DllMain, но сам модуль остается висеть в списке загруженных.
    Причем, если загрузить Dll в процесс внутри программы стандартным вызовом LoadLibrary, то FreeLibraryAndExitThread прекрасно отрабатывает и dll выгружается.
    Подскажите как выгрузить Dll в моем случаи.
     
  2. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Количество пришедших DLL_PROCESS_ATTACH и DLL_PROCESS_DETACH одинаково?
     
  3. Marik

    Marik New Member

    Публикаций:
    0
    Я ошибся, уведомление DLL_PROCESS_DETACH не приходит после вызова FreeLibraryAndExitThread.
    Итого приходит один DLL_PROCESS_ATTACH
    соответственно счетчик не уменьшается.
     
  4. onSide

    onSide New Member

    Публикаций:
    0
    Дык DLL_PROCESS_DETACH прийдет когда счетчик ссылок будет равен нулю. Ты ее через LoadLibrary грузил или вручную отмапил?
    Последи за счетчиком ссылок на эту длл-ку.
     
  5. Marik

    Marik New Member

    Публикаций:
    0
    Грузил через внедрение шелкода с вызовом LoadLibrary.
    Опытным путем установил, что данная проблема проявляется при форсировании доставки APC во время инжекта. Если не форсировать доставку Apc, dll выгружается корректно.
     
  6. sn0w

    sn0w Active Member

    Публикаций:
    0
    я так понимаю - высвободить виртуальную память ей занимаемую и снести из пеба (возможно забыл чего)
    а кстати чего там с csr?
     
  7. Marik

    Marik New Member

    Публикаций:
    0
    задачи грузить в csrss процесс нет, только пользовательские процессы.
    Вопрос в принципе снят, всем спасибо
     
  8. onSide

    onSide New Member

    Публикаций:
    0
    Так в чем проблема была, разобрался?
     
  9. dyn

    dyn New Member

    Публикаций:
    0
    Тоже интересно. Отпишитесь плиз
     
  10. RET

    RET Well-Known Member

    Публикаций:
    17
    Делай свой лодер . Тему не читал.
     
  11. Marik

    Marik New Member

    Публикаций:
    0
    Так я же вроде написал, проблема возникает если использовать форсирование доставки APC при инжекте. Мне не принципиально было чтобы моя dll грузилась самой первой, поэтому собственно убрал форсирование и все заработало как надо. (по крайней мере в тестовой среде)