Драйвер для перенаправления соединений через Proxy

Тема в разделе "WASM.NT.KERNEL", создана пользователем Forever, 7 июн 2008.

  1. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    Заинтересовал меня следующий вопрос. Как работает Permeo Security Driver. Или как реализовать что-то подобное. Для тех, кто с данной программкой не знаком: данная программа перенаправляет некоторые соединения через Proxy. Можно указывать фильтры на программы (т.е. для каких программ перенаправлять). Данная программа весьма полезна для того, чтобы научить другие программы работать через прокси. Есть какие-либо идеи по этому поводу? Хотелось бы написать свою версию такого драйвера.
     
  2. TarasCo

    TarasCo New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2005
    Сообщения:
    106
    Достаточно поставить фильтр на устройство \device\tcp и контролировать запросы TDI_CONNECT. Написать можно за 1 день.
     
  3. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    А можно подробнее? Ссылочку какую-нибудь... Уж очень лаконичный вопрос.
     
  4. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
  5. TarasCo

    TarasCo New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2005
    Сообщения:
    106
    2 Apple: прочел обе ссылки. Сложилось впечатление, что все очень сложно должно быть :)). На самом деле, в данном случае все на порядки проще - ведь запрос перенаправляется на основе имени текущего приложения, а не заголовка HTTP.

    Нужно сделать три несложных вещи:
    1) Повесить свой фильтр на \device\tcp ( возможно еще \device\tcp6 \device\udp \device\udp6 ). Например с помощью IoGetDeviceObjectPointer + IoAttachDeviceToDeviceStack
    2) Уметь определять имя по pid текущего процесса ( PsGetCurrentProcessId ) или по EPROCESS ( PsGetCurrentProcess ) - задайте такой вопрос отдельно - вам дадут сто советов
    3) пропускать все кроме запроса TDI_CONNECT. Последний проверять каком процессу принадлежит ( см. пункт 2 ) и менять адрес назначения в запросе и уже после этого - пропускать.

    Все.
     
  6. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    О! Спасибо. Уже намного понятнее.
     
  7. Joes

    Joes New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    98
    Permeo, насколько я знаю, LSP (Layered Service Provider) юзает, а не драйвер.
    А LSP вообще в юзер моде крутится.