Что происходит после return STATUS_UNSUCCESSFUL в DriverEntry

Тема в разделе "WASM.NT.KERNEL", создана пользователем IceFire, 18 окт 2009.

  1. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    В DriverEntry выделил память, перенес код драйвера туда, поправил релоки. Вернул STATUS_UNSUCCESSFUL. рку и гмер видят загруженный драйвер! И не только видят, но и показывают адрес образа, откуда загружен был.

    Как это возможно? Что происходит после возвращения такого кода? (всегда считал, что диспетчер сносит все остатки дрова).
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    А ты не думал, что они могут запоминать то, что было когда-то загружено?
     
  3. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Все освобождается, реад зиз факен вэрэка! =) Если я правильно понял палится наличие копии загруженного и уже релокированного имаджа -- вероятно по пе-хэдеру в памяти, попробуйте затереть =)
     
  4. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Та они же одноразовые типа)) Они не должны запоминать работу системы. Хотя я конечно могу ошибаться.
    Ты новый драйвер в новом потоке то запустил ?
     
  5. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Нового потока нет, в одном из модулей системы стоит сплайс на релокованый имидж.

    Я бы понял, если бы рку и гмер писали бы что-то вроде "unknown module". Но они выпаливают и имя модуля, и адрес, откуда он был загружен. А этой инфы в ре-хидере нет.

    Если запоминают - как?
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    загружаешь свой драйвер и только потом рку, гмер?
    Или дров грузишь во время запущенных антируткитов?
     
  7. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Рку и гмер гружу после загрузки своего дрова - в этом-то вся и фишка.
     
  8. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Кстати. ImageBase в выпаленном образе старые - т.е. те, которые были в оригинальном дрове, еще до завершения его с STATUS_UNSUCCESSFUL.
     
  9. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Ну чудес-то не бывает. Значит где-нибудь всё таки сохраняется эта информация в системе, в недокументированных внутренних структурах каких-нибудь. Это надо исходники ядра смотреть, так на вскидку не скажу.
     
  10. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    x64

    Чудес не бывает, это точно.

    Решение найдено, topic closed.
     
  11. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Ну так напиши, другим тоже интересно будет, полагаю.
     
  12. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Symbolic link и Device надо сносить прежде, чем возвращать такой код. А лучше - вообще не создавать.
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    бугага.
     
  14. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Ну тогда всё понятно, в этом случае объект драйвера не уничтожается после выхода из DriverEntry(), следовательно, антируткиты находят его без труда.