завершение процессов

Тема в разделе "WASM.NT.KERNEL", создана пользователем 0x00, 25 май 2008.

  1. 0x00

    0x00 New Member

    Публикаций:
    0
    Регистрация:
    9 май 2008
    Сообщения:
    11
    Как завершить процесс из ring0?
    И еще вопрос. Можно удалить сервис из ring0?
    есть функции такие?
    пишу на c++
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    завершить процесс - ZwTerminateProcess
     
  3. 0x00

    0x00 New Member

    Публикаций:
    0
    Регистрация:
    9 май 2008
    Сообщения:
    11
    Проблема решена с завершением процесса.
    Еще 1 вопрос.
    Как удалить сервис из драйвера?
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    RamMerLabs
    не совсем
    Удали ключ
     
  5. 0x00

    0x00 New Member

    Публикаций:
    0
    Регистрация:
    9 май 2008
    Сообщения:
    11
    откуда ключ удалить?
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    0x00
    из реестра
     
  7. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Но ведь ключ в реестре это не всё что создаётся при регистрации сервиса, например если тупо вручную создать ключ то сервис не появится в списке сервисов. поправьте если неправ
     
  8. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    2FED
    да, в кмдкит содержиться такое высказывание "что ручное создание ключей
    не гарантирует это" и ещё в каких-то трудах встречается это.
    но если вальнуть в реестре ветку драйвера, то почему-то, по крайней мере
    у меня, действует на 100%
     
  9. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    wsd
    Ну так этож разные вещи.
    Ручное создание ветки реестра не гарантирует, что сервис запустится.
    Ручное удаление ветки реестра гарнтирует, что сервис не запустится.
     
  10. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Aspire
    так я разве не это сказал?
    в первой половине объяснил что запуск не гарантируется
    во второй что мочиться на 100%
    ?
     
  11. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    wsd
    Извини, я только начинаю разбираться с ринг0. Просто хотел поучаствовать в обсуждении ;)

    PS Вы от меня еще услышите кучу дурацких вопросов в этом подфоруме )))
     
  12. 0x00

    0x00 New Member

    Публикаций:
    0
    Регистрация:
    9 май 2008
    Сообщения:
    11
    спасибо за обсуждение, но тема решена. решил все делать из ринг3 =)
    тему можно считать закрытой...
     
  13. Guest

    Guest Guest

    Публикаций:
    0
    В случае с веткой реестра: при загрузке драйвера в функции IopLoadDriver в цикле проверяется путь к уже загруженным модулям и к текущему - при совпадении загрузка завершается.
    P.S. Еще создается ветка HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_XXXX.
     
  14. at0s

    at0s New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2009
    Сообщения:
    91
    как можно по eprocess или по PID узнать Handle процеса, чтоб скормть его
    TerminateProcess ?
    В eprocess обнаружил
    .....
    +0x0c4 ObjectTable : Ptr32 _HANDLE_TABLE
    +0x000 TableCode : Uint4B
    +0x004 QuotaProcess : Ptr32 _EPROCESS
    +0x008 UniqueProcessId : Ptr32 Void
    +0x00c HandleTableLock : [4] _EX_PUSH_LOCK
    +0x01c HandleTableList : _LIST_ENTRY
    ....
    это то ?
     
  15. f1redArk

    f1redArk Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    34
    Чтобы получить Handle по Pid:

    NTSTATUS
    ZwOpenProcess (
    __out PHANDLE ProcessHandle,
    __in ACCESS_MASK DesiredAccess,
    __in POBJECT_ATTRIBUTES ObjectAttributes,
    __in_opt PCLIENT_ID ClientId
    )

    Но лучше наверное по eprocess, чтобы небыло проблем с правами:

    NTSTATUS
    ObOpenObjectByPointer(
    IN PVOID Object,
    IN ULONG HandleAttributes,
    IN PACCESS_STATE PassedAccessState OPTIONAL,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_TYPE ObjectType,
    IN KPROCESSOR_MODE AccessMode,
    OUT PHANDLE Handle
    );
     
  16. Clerk

    Clerk Забанен

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

    x64 New Member

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

    Совместимость иногда превыше эффективности.
     
  18. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    x64
    И что, проблема найти чтоли ?
     
  19. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Кле-е-е-рк :)

    Найти не проблема. Суть в другом: зачем гемороиться с поиском (он же должен везде работать), когда можно использовать более легкий в плане реализации способ? Про выигрыш в скорости говорить, думаю, нет смысла - Винда так насыщена различными вызовами функций, что одной-двумя больше или меньше - роли не сыграет. А какие другие объективные причины? Перехват Zw? Ну с тем же успехом и Ps перехватить могут. В чем суть?
     
  20. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Twister
    Именно.
    Зачем приложению посылать оконные сообщения перед завершением, информируя чтобы приложение само нормально завершилось - этоже так сложно, лучше сносить всё бгг.