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

Discussion in 'WASM.NT.KERNEL' started by 0x00, May 25, 2008.

  1. 0x00

    0x00 New Member

    Blog Posts:
    0
    Joined:
    May 9, 2008
    Messages:
    11
    Как завершить процесс из ring0?
    И еще вопрос. Можно удалить сервис из ring0?
    есть функции такие?
    пишу на c++
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Blog Posts:
    0
    Joined:
    Sep 11, 2006
    Messages:
    1,426
    завершить процесс - ZwTerminateProcess
     
  3. 0x00

    0x00 New Member

    Blog Posts:
    0
    Joined:
    May 9, 2008
    Messages:
    11
    Проблема решена с завершением процесса.
    Еще 1 вопрос.
    Как удалить сервис из драйвера?
     
  4. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    RamMerLabs
    не совсем
    Удали ключ
     
  5. 0x00

    0x00 New Member

    Blog Posts:
    0
    Joined:
    May 9, 2008
    Messages:
    11
    откуда ключ удалить?
     
  6. wsd

    wsd New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2007
    Messages:
    2,824
    0x00
    из реестра
     
  7. 2FED

    2FED New Member

    Blog Posts:
    0
    Joined:
    Feb 20, 2008
    Messages:
    1,002
    Но ведь ключ в реестре это не всё что создаётся при регистрации сервиса, например если тупо вручную создать ключ то сервис не появится в списке сервисов. поправьте если неправ
     
  8. wsd

    wsd New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2007
    Messages:
    2,824
    2FED
    да, в кмдкит содержиться такое высказывание "что ручное создание ключей
    не гарантирует это" и ещё в каких-то трудах встречается это.
    но если вальнуть в реестре ветку драйвера, то почему-то, по крайней мере
    у меня, действует на 100%
     
  9. Aspire

    Aspire New Member

    Blog Posts:
    0
    Joined:
    May 19, 2007
    Messages:
    1,028
    wsd
    Ну так этож разные вещи.
    Ручное создание ветки реестра не гарантирует, что сервис запустится.
    Ручное удаление ветки реестра гарнтирует, что сервис не запустится.
     
  10. wsd

    wsd New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2007
    Messages:
    2,824
    Aspire
    так я разве не это сказал?
    в первой половине объяснил что запуск не гарантируется
    во второй что мочиться на 100%
    ?
     
  11. Aspire

    Aspire New Member

    Blog Posts:
    0
    Joined:
    May 19, 2007
    Messages:
    1,028
    wsd
    Извини, я только начинаю разбираться с ринг0. Просто хотел поучаствовать в обсуждении ;)

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

    0x00 New Member

    Blog Posts:
    0
    Joined:
    May 9, 2008
    Messages:
    11
    спасибо за обсуждение, но тема решена. решил все делать из ринг3 =)
    тему можно считать закрытой...
     
  13. Guest

    Guest Guest

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

    at0s New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2009
    Messages:
    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

    Blog Posts:
    0
    Joined:
    Jul 10, 2008
    Messages:
    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 Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    at0s
    PsTerminateProcess(). Получать и манипулировать описателями в ядре имея ссылку на обьект это извращение. Вы бы есчо в юзермод прыгнули, чтоб оттуда сервис через апи вызвать :)
     
  17. x64

    x64 New Member

    Blog Posts:
    0
    Joined:
    Jul 29, 2008
    Messages:
    1,370
    Location:
    Россия
    Не экспортируется.

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

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    x64
    И что, проблема найти чтоли ?
     
  19. Twister

    Twister New Member

    Blog Posts:
    0
    Joined:
    Oct 12, 2005
    Messages:
    720
    Location:
    Алматы
    Кле-е-е-рк :)

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

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Twister
    Именно.
    Зачем приложению посылать оконные сообщения перед завершением, информируя чтобы приложение само нормально завершилось - этоже так сложно, лучше сносить всё бгг.