Аппаратные ключи, как полагают другие, являются распространенным подходом для этого. Это, тем не менее, не решает вашу проблему, поскольку умный программист может изменить ваш код, чтобы пропустить проверку ключа - им просто нужно найти место в вашем коде, где вы выполняете ветвление, в зависимости от того, прошла проверка или нет, и изменить это тест всегда сдавать.
Вы можете усложнить ситуацию, запутав свой код, но вы все еще находитесь в сфере программного обеспечения, и тот же самый умный программист может понять запутывание и все еще достичь желаемой цели.
Сделав еще один шаг, вы можете зашифровать части своего кода ключом, хранящимся в ключе, и потребовать, чтобы загрузочный код извлек его из ключа. Теперь работа вашего злоумышленника немного сложнее - им нужно перехватить ключ и изменить ваш код, чтобы он считал, что он получен от ключа, хотя на самом деле он жестко запрограммирован. Или вы можете заставить сам ключ выполнять дешифрование, передавая код и возвращая дешифрованный код - так что теперь ваш злоумышленник тоже должен эмулировать это, или просто взять дешифрованный код и сохранить его где-нибудь навсегда.
Как вы можете видеть, точно так же, как методы защиты программного обеспечения, вы можете сделать это произвольно сложным, что увеличит нагрузку на злоумышленника, но история показывает, что таблицы наклонены в пользу злоумышленника. Хотя взломать вашу схему может быть сложно, это нужно сделать только один раз, после чего злоумышленник может разослать модифицированные копии всем. Пользователи пиратских копий теперь могут легко использовать ваше программное обеспечение, в то время как ваши законные клиенты обременены обременительным механизмом защиты от копирования. Предоставление лучшего опыта пиратам, чем законным клиентам, - очень хороший способ превратить ваших законных клиентов в пиратов, если вы к этому стремитесь.
Единственный - в значительной степени гипотетический - способ обойти это называется Trusted Computing , и он основан на добавлении оборудования к компьютеру пользователя, которое ограничивает то, что они могут с ним делать, утвержденными действиями. Вы можете увидеть подробности аппаратной поддержки для него здесь .
Я бы настоятельно рекомендовал вам придерживаться этого маршрута по причинам, которые я подробно изложил выше: в конечном итоге вы предоставляете своим законным клиентам худший опыт, чем тем, кто использует пиратскую копию, что активно поощряет людей , а не покупать ваше программное обеспечение. Пиратство - это факт жизни, и есть пользователи, которые просто не будут покупать ваше программное обеспечение, даже если вы сможете обеспечить водонепроницаемую защиту, но с радостью будут использовать незаконную копию. Лучшее, что вы можете сделать, - это предложить своим законным клиентам лучший опыт и обслуживание клиентов, сделав законную копию более привлекательной, чем пиратская.