2009-02-02 1 views
8

Как наилучшим образом обфускать мой C# .net приложение Код проверки ключа продукта?Как наилучшим образом обфускать код проверки лицензии на продукт C#?

Достаточно ли разместить его в «КЛАССНУЮ КЛАССУ ВНУТРЕННЕГО КЛАССА {};" или мне нужно сделать больше?

Спасибо!

ответ

17

Модификаторы доступа, такие как internal и sealed, не имеют ничего общего с обфускацией или защитой кода, они просто говорят другим классам, как взаимодействовать (или не взаимодействовать) с ними.

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

  1. только достаточно положить усилие в ваши антипиратские меры, чтобы сделать растрескивание программного обеспечения немного менее удобное, чем вспыхивает кредитную карту. Если это действительно сложно сделать, вы слишком сильно загружаете свою клиентскую базу.
  2. Если вы сосредоточились на создании позитивных отношений со своими клиентами, а не на предположении, что они преступники, они будут более охотно давать вам деньги.
  3. Большинство клиентов - физических лиц и особенно компаний - не заинтересованы в взломе открытых сборок и попытках выяснить, как уйти, не заплатив вам. Для физических лиц они все равно не будут платить за это, чтобы не потерять продажу; и компании не будут рисковать горами наличных денег в юридических проблемах для стоимости некоторых лицензий на программное обеспечение.

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

+0

Что говорит Rex M, это правда. Для генерации ключей используйте схему шифрования с открытым/закрытым ключом. Обфускайте свой код чем-то вроде Dotfuscator. Но в конечном итоге люди все еще могут взломать его, если захотят, изменив некоторые условные прыжки в исполняемом файле. – mmcdole

+1

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

0

Rex верен, internal sealed class ничего не скроет. Используйте односторонний хэш шифрования (например, MD5CryptoServiceProvider) для защиты паролей и ключей.

2

Я согласен с Rex M, вам следует использовать алгоритм асимметричного шифрования, например криптографию кривых эллиптических кривых, чтобы избежать использования ключей. И если вас интересует коммерческое решение, попробуйте Ellipter - он использует эллиптические кривые и имеет некоторые полезные функции, такие как информация о продукте и вложение данных срока действия в сгенерированные серийные ключи.

+0

Или любая система PGP, действительно. Поместите открытый ключ в приложение, и пусть разработчик (или компания) приложения имеет закрытый ключ. – Arafangion

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