Служба Windows: для кодирования функции безопасности программного обеспечения - PullRequest
0 голосов
/ 15 июля 2009

Я хочу реализовать службу Windows, которая функционирует как простая функция защиты лицензии для программного обеспечения X. Служба предназначена для запуска независимо от программного обеспечения X.

Грубая идея:

  • Служба подобна бомбе замедленного действия для программного обеспечения Z, установленного на машине ...
  • Всякий раз, когда пользователь запускает программное обеспечение X, служба каждые 30 минут открывает окно, чтобы напомнить пользователю о необходимости регистрации программного обеспечения X.
  • Если пользователь не регистрирует программное обеспечение через 1 месяц, служба изменит код лицензии в файле и завершит процесс программного обеспечения X.
  • При следующем запуске программное обеспечение X прочитает неправильный код лицензии и запустится в демонстрационном режиме.
  • Служба выполняет резервное копирование кода лицензии перед его изменением.
  • Когда пользователь зарегистрируется, ему будет предоставлен исполняемый файл или файл bat. Файл восстанавливает исходный файл лицензии и навсегда удаляет службу.

Дополнительная информация:

  • Возможно ли, что если пользователь попытается убить службу, служба автоматически изменит код лицензии и уничтожит программное обеспечение X перед тем, как будет уничтожено само по себе?
  • Если пользователь изменяет код лицензии вручную в файле после того, как служба изменит его, служба автоматически вернет его обратно и уничтожит программное обеспечение X.

Я довольно новичок в программировании ... поэтому я хочу спросить совета, прежде чем приступить к проекту ... Любые советы, советы или проблемы / проблемы, которые я должен знать, основываясь на вашем опыте?

Скорее всего, я напишу код на C ++, но мог бы сделать это на C # (никогда не использовал его раньше) после прочтения следующего обсуждения: Самый простой язык для создания службы Windows

Ответы [ 4 ]

3 голосов
/ 15 июля 2009

Я новичок в программировании ... поэтому я хочу спросить совета, прежде чем прыгать в проект ... любой совет, советы или проблемы / проблемы я следует знать, основываясь на вашем опыт?

Лучший совет, который я могу вам дать: « новичкам в программировании не следует пытаться писать системы безопасности ». Разработка системы безопасности, которая фактически уменьшает реальные уязвимости для реальных атак, невероятно трудна и требует многолетнего реального опыта, а также практических и теоретических знаний о том, как именно работают библиотеки классов операционной системы и платформы.

Второй лучший совет, который я могу вам дать, - построить подробную, точную и полную модель угрозы . (Если вы не знаете, как выполнять моделирование потоков, это будет первое, чему вы научитесь. Не пытайтесь катиться на роликах, прежде чем сможете сканировать.) Только при наличии подробной, точной и полной модели угроз вы узнаете, является ли предложенное функции безопасности фактически смягчают атаки на ваши уязвимости.

1 голос
/ 15 июля 2009
  • Каждый раз, когда пользователь запускает программное обеспечение X, служба каждые 30 минут выдает окно, чтобы напомнить пользователю о необходимости регистрации программного обеспечения X.

Это невозможно. Служба не может отобразить окно из-за того, что находится на другом рабочем столе, чем пользователь. (Поскольку в Vista это является обязательным, XP разрешает показ окна.)

  • Возможно ли, что если пользователь попытается уничтожить службу, служба автоматически изменит код лицензии и уничтожит программное обеспечение X перед тем, как будет уничтожено само по себе?

Нет. Сервис - это просто еще одна программа, работающая в системе, которую можно убить в любой момент времени. (Только вы должны быть в группе администраторов).

  • Если пользователь изменяет код лицензии вручную в файле после того, как служба изменит его, служба автоматически вернет его обратно и уничтожит программное обеспечение X.

Вывод таков: когда вы разбиваете свой лицензионный чек на 2 части, вы получаете еще один момент, когда пользователь может сломать ваш чек. Вы не можете запретить пользователю работать с вашим сервисом, если это не обязательно для вашей программы.

0 голосов
/ 16 июля 2009

НИКОГДА не создают услуги для чего-либо, если только это не системный сервис. Если вы создаете приложение, у вас есть NO BUSINESS EVER работающий код в системе, когда приложение закрыто, если пользователь явно не запросил эту операцию . Подобные идеи и являются причиной того, что нам (ботаникам) приходится сталкиваться с таким большим количеством дерьма, когда люди просят нас «починить мой компьютер, он работает так медленно».

Я бы пошел с 6-значной зарплаты, прежде чем стал бы частью такой мерзости.

Редактировать: Полагаю, сначала мне понадобится 6-значная зарплата ... когда-нибудь когда-нибудь

0 голосов
/ 15 июля 2009

Возможно ли, что если пользователь попытается убить службу, служба автоматически изменит код лицензии и уничтожит программное обеспечение X перед тем, как уничтожить себя?

Нет, вообще нет. Если я завершу процесс безоговорочно (например, с помощью команды taskkill /f), у меня не будет никакого шанса отреагировать.

Если пользователь изменяет код лицензии вручную в файле после того, как служба изменит его, служба автоматически вернет его обратно и уничтожит программное обеспечение X.

Это возможно - вы можете использовать функцию ReadDirectoryChangesW для просмотра файла и реагирования на изменения (или класса FileSystemWatcher, если ваша служба реализована в .NET). Конечно, в свете первого ответа, приведенного выше, пользователь может просто убить ваш сервис и затем изменить файл ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...