Для встраивания application firewall (далее AF) в существующий антивирусный софт (далее AV) необходимо реализовать user mode API, в котором обязательно должен присутствовать следующий функционал:
1) AF должен иметь функции инициализации, регистрации в системе, загрузки правил и т.д. Деинициализация и функция удаления из системы тоже должна быть.
2) AV должен иметь возможность с помощью API зарегистрировать свою callback функцию, которую будет вызывать AF при попытке какого-либо приложения получить доступ к сети. Необходимо иметь возможность в callback функции задать правило (разрешение или запрет) для этого приложения. Если для приложения уже есть подходящее правило, то вызывать ее не надо, а просто применить правило. Как минимум должно быть 3 варианта правил: запретить, разрешить, спрашивать каждый раз. За основу можно взять правила в tdifw (
sourceforge.net/projects/... в которых есть возможность указывать IP адрес, порт и протокол. Для одного приложения можно задавать несколько правил.
Пример функции: int callback(const char *path, rule *r), где
path – путь к приложению,
r – указатель на правило.
Изначально переменная r должна указывать на валидное правило, в котором указано куда пытается идти приложение (IP адрес, порт, протокол и т.д.) и по умолчанию установлен запрет. Пользователь может поменять это значение и разрешить доступ, после завершения этой функции AF должен сохранить это правило.
3) Должны быть реализованы функции для добавления, удаления и просмотра правил, чтобы можно было в графическом интерфейса AV отображать их.
4) Должна быть возможность отключения и включения AF без изменения/удаления правил. Отдельные правила можно делать активными/неактивными без удаления.
5) Правила должны сохраняться между запусками AF и AV (отключение, перезагрузка) в реестре в двоичном виде. Ключ реестра задается через API при инициализации.
ГУИ не нужно. ТЗ в аттаче. Среда разработки MSVC.
От вас также хотелось бы услышать сроки и стоимость работы. Более подробное ТЗ будет выдано также.