Защитить строку в моем приложении .NET? - PullRequest
3 голосов
/ 26 июля 2011

В одном из моих приложений .NET я должен «проверить» свою программу в библиотеке с лицензионным ключом.
Но каждый, кто заглядывает в мои сборки, может получить ключ ...
Это не влияет на меня, но меня волнует создатель (и) библиотеки.
Я не хочу «утекать» его / их ключи и причинять ему / им убытки вот так ...

Есть ли какой-нибудь бесплатный инструмент для защиты моих данных?
Мне действительно наплевать на другой код ... Ключ важен.

Ответы [ 8 ]

4 голосов
/ 26 июля 2011

Если вам нужно передать ее в библиотеку и если вы не контролируете библиотеку, то вы все равно ничего не сможете сделать. Вы можете запутать свой код всем, что захотите, чтобы помешать пользователям Reflector (но не Reflector VSPro, по крайней мере, не легко), и я просто воспользуюсь Crack.NET , чтобы заглянуть в память и взять ее оттуда.

Создатель библиотеки должен был создать надежный механизм, например, использование открытых / закрытых ключей, SecureString , DPAPI или требование веб-вызова для сохранения ключа на сервере.

1 голос
/ 26 июля 2011

Единственный способ, который я могу вспомнить - это dotnetfuscator для убуцирующего кода, но он не застрахован от обратного инжиниринга от эксперта. Тема является больным вопросом для разработчиков на C #. Единственный реальный способ сделать это - не использовать .net (который вообще не отвечает)

Есть и другие, перечисленные в вопрос 211849

0 голосов
/ 26 июля 2011

Я бы посмотрел на это по-другому.

Если для проверки библиотеки требуется лицензия; то есть ли у вас право на распространение библиотеки в вашем приложении?

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

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

0 голосов
/ 26 июля 2011

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

0 голосов
/ 26 июля 2011

Другой продукт, занимающийся этим и другими делами: SmartAssembly от RedGate (хотя и не бесплатная) ...

Абсолютной безопасности не существует - особенно с JITted-кодом (например, IL / .NET и Java) ...

Хотя остерегайтесь строковых констант - их необходимо заменить на строки "static readonly" ... в противном случае их нельзя "запутать / зашифровать" ...

0 голосов
/ 26 июля 2011

На MSDN есть список кодовых обфускаторов.

0 голосов
/ 26 июля 2011

Честно говоря, мне было бы все равно.Если в какой-то момент вам нужно передать в качестве параметра что-то в этой библиотеке ключ, не имеет значения, сколько вы пытаетесь его запутать, тот, кто заглянет в ваш код, в конце концов найдет ключ.Просто обвините провайдеров библиотеки:)

0 голосов
/ 26 июля 2011

Dotfuscator может сделать это для вас.Я считаю, что он поставляется в комплекте с Visual Studio - посмотрите.

Хотя я бы не беспокоился об этом;если вы не единственный их клиент, то есть вероятность, что кто-то другой пропустит лицензионный ключ через неясный код, что сделает ваши усилия пустой тратой времени.

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