Как корректно выгрузить драйвер-фильтр?

Тема в разделе "WASM.WIN32", создана пользователем zoool, 7 мар 2008.

  1. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    САБЖ
    есть драйвер
    мы знаем только имя файла "NdisFilter.sys"
    Процедуры DriverUnload в нем не предусмотрено

    Можно ли как-то извне (тоже р0) выгрузить этот дров?

    В общем такие вопросы:

    1. Как найти базу образа драйвера
    2. Как остановить в этом драйвере все потоки
    3. Как найти все перехваты, которые ведут в этот драйвер
    4. И наконец, как выгрузить этот дров?

    ЗЫ:
    плз не флудите.
    Ответы по типу "это сложный вопрос или сделать можно, но как не знаю" лучше не постить.
     
  2. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    я использую вот этот код. Вообще, ищи по форуму, примеры были
    Код (Text):
    1. PVOID FindBase()
    2. {
    3.     ZwQuerySystemInformation(SystemModuleInformation, &n, 0, &n);
    4.     q = (ULONG *)ExAllocatePool(PagedPool, n);
    5.     ZwQuerySystemInformation(SystemModuleInformation, q, n * sizeof (*q), 0);
    6.     p = (PSYSTEM_MODULE_INFORMATION)(q + 1);
    7.     for (i = 0; i < *q; i++)
    8.     {
    9.         if (_stricmp(p[i].ImageName + p[i].ModuleNameOffset, "driver.sys") == 0) {
    10.             BaseAddress = p[i].Base;
    11.             break;
    12.         }
    13.     }
    14.     ExFreePool(q);
    15.     return BaseAddress;
    16. }
     
  3. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    правильно, фильтры по определению не выгружаемы без перезагрузки системы. Все шаманства приведут в итоге к БСОДу. Для своей машины или вируса конечно можно извратиться, но для продакшн кода решений нет.