2009-07-15 2 views
-1

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

Грубая идея:

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

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

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

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

я, скорее всего, его код в C++, но может сделать это в C# (никогда не использовал его раньше) после прочтения следующего обсуждения: Easiest language for creating a Windows service

ответ

0

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

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

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

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

+0

определенно с использованием .NET может функция просто наблюдать определенную строку в файле, игнорируя другие строки ... , например служба меняет ключ: строка 20 может содержать любую строку, кроме «лицензии = 1234 «иначе услуга снова меняет ключ и уничтожает программное обеспечение X – justin

+0

например * после того, как услуга меняет ключ – justin

+0

Невозможно смотреть как единственная строка в файле. Вам нужно будет посмотреть файл (используя 'FileSystemWatcher'), и всякий раз, когда кто-либо его изменяет, прочитайте его до этой строки и проверьте, соответствует ли его новое значение. –

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

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

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

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

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

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

3

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

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

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

0

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

Я бы ходить с 6-цифра заработной платы, прежде чем я когда-либо стать частью мерзости подобного

Edit:. Я полагаю, сначала я был бы нужен 6-цифра зарплаты ... в один прекрасный день ? нибудь

Смежные вопросы