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

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

  1. 0x00

    0x00 New Member

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

    RamMerLabs Well-Known Member

    Публикаций:
    0
    завершить процесс - ZwTerminateProcess
     
  3. 0x00

    0x00 New Member

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

    wasm_test wasm test user

    Публикаций:
    0
    RamMerLabs
    не совсем
    Удали ключ
     
  5. 0x00

    0x00 New Member

    Публикаций:
    0
    откуда ключ удалить?
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    0x00
    из реестра
     
  7. 2FED

    2FED New Member

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

    wsd New Member

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

    Aspire New Member

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

    wsd New Member

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

    Aspire New Member

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

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

    0x00 New Member

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

    Guest Guest

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

    at0s New Member

    Публикаций:
    0
    как можно по 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
    Чтобы получить 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
    at0s
    PsTerminateProcess(). Получать и манипулировать описателями в ядре имея ссылку на обьект это извращение. Вы бы есчо в юзермод прыгнули, чтоб оттуда сервис через апи вызвать :)
     
  17. x64

    x64 New Member

    Публикаций:
    0
    Не экспортируется.

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

    Clerk Забанен

    Публикаций:
    0
    x64
    И что, проблема найти чтоли ?
     
  19. Twister

    Twister New Member

    Публикаций:
    0
    Кле-е-е-рк :)

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

    Clerk Забанен

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