Как заблокировать сеть для определённого процесса

Тема в разделе "WASM.NT.KERNEL", создана пользователем rpy3uH, 9 ноя 2010.

  1. x64

    x64 New Member

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

    ...я надеялся услышать именно об этом.
     
  2. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    забыл еще упомянуть искл.случай когда процесс завершился а пакеты от его имени идут :)
    x64
    ндис не может в принципе связать приходящий не-TCP пакет (или TCP новой сессии) и процесс
    ведь этим управляют сокеты а они в tcpip.sys то есть на след.уровне вверх чем ндис
     
  3. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    ещё вопрос: какие надо блокировать запросы чтобы заблокировать сеть, но при этом чтобы не нарушить работоспособность программы.Сейчас я только блокирую TDI_CONNECT.
    например, прога слушает порт, как сделать так чтобы она слушала порт без ошибок, но даже если к ней кто-то законнектится, она об этом ничего не узнала, а тот кто хочет законнектиться получил в ответ ошибку.
     
  4. x64

    x64 New Member

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

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    я почитал, изучил запросы TDI_LISTEN и TDI_SET_EVENT_HANDLER.
    чтобы приложение не принимало коннекты (вернее чтобы никогда не узнало о них) надо делать следующее
    1. в обработчике TDI_SET_EVENT_HANDLER вернуть STATUS_SUCCESS и не посылать запрос дальше.
    2. в обработчике TDI_LISTEN не посылать запрос дальше и вернуть STATUS_PENDING.
    я правильно понял?
     
  6. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Да, только ты забыл уточнить, что запрос следует завершить в фильтре.

    Да, только чуть сложнее: перед тем, как вернуть управление из dispatch-функции, придётся ещё пометить запрос как pending и установить Cancel-функцию, иначе будут проблемы.

    Ну и на всякий случай перекрыть ещё TDI_ACCEPT. Его можно обрабатывать по аналогии с TDI_LISTEN, либо завершать сразу с ошибкой.