Я управляю компанией-разработчиком программного обеспечения, которая занимается этой проблемой в течение почти 20 лет. Как разработчик и владелец бизнеса, я хотел бы сначала побудить вас немного расширить свои цели. Например, просто ошибочно определить вашу проблему как «предотвращение пиратства». Ваша цель должна состоять в том, чтобы максимизировать доход.
С учетом вышесказанного, есть люди, которые просто никогда не купят ваше программное обеспечение, но могут приложить довольно значительные усилия, чтобы получить его бесплатно. Это не «справедливо», что они получают бесплатную копию, но вкладывание большого количества ресурсов в усилия по предотвращению этого является в значительной степени пустой тратой времени. Действительно, эти люди часто оказываются «законными» просто для того, чтобы попасть в наш список обновлений, получить поддержку или потому, что их бизнес развивается до такой степени, что теперь они могут позволить себе нашу лицензию. В этих случаях первоначальное пиратство приводит к увеличению нашего дохода.
Итак, как мы лицензируем?
Мы генерируем случайный номер лицензии с каждой новой установкой (число от 10K до 99K прекрасно работает). Затем у нас есть алгоритм для генерации совпадающего числа (все, что нетривиально будет делать). Кстати, мы используем случайное число, поэтому любая попытка переустановки на другом компьютере приводит к разным номерам лицензий / совпадений.
Далее мы просим пользователей позвонить нам по телефону, чтобы получить соответствующий номер для их лицензии (это важно). Программное обеспечение смотрит на соответствующий номер, который они вводят, и сравнивает его с соответствующим значением, сгенерированным на стороне пользователя. Если есть совпадение, программное обеспечение полностью активировано.
Я говорю, что иметь их по телефону нам важно, потому что мы используем это как возможность поговорить с ними об их настройке, ответить на любые вопросы и дать им понять, что они имеют дело с реальными людьми. Очень немногие люди имеют смелость попытаться позвонить и выдать себя за другую компанию (мы ищем их и сравниваем их информацию с нашей базой данных покупок). Обратите внимание, что наш пакет стоит около $ 2K, поэтому телефонные звонки разумны. Если ваш пакет стоит дешевле и имеет больший объем, вы можете сделать это по электронной почте. Наконец, мы используем вызов, чтобы сообщить пользователям, как получить обновления и техническую поддержку с их новой лицензией.
Наконец, мы храним ключ в базе данных приложения (локально установленная база данных MSDE / SQL Express), так что любая попытка скопировать приложение будет A) нетривиальной и B) перенести много данных, специфичных для организация, которая сначала купила законную версию (что делает их менее вероятными для обмена). Лицензионный ключ зашифрован и «разбит» на два разных ключа, которые хранятся в двух разных таблицах. Таким образом, простое «найти ключ и ввести его в пиратской версии» не получится.
Суть? Когда вы делаете весь пакет больше, чем просто программное обеспечение, встраиваете несколько базовых защитных механизмов и внедряете человеческий фактор, вы должны видеть, что вам не нужны затраты и проблемы с ключом для максимизации дохода.