Действительно ли невозможно защитить код .NET (интеллектуальная собственность)?

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

Сценарии JS являются одной вещью, но что относительно проектов SOA, которым инвестировали миллионы в IP (Интеллектуальная собственность). Я люблю .NET и особенно C#, но я недавно снова должен был ответить на вопрос, "Если мы передаем этой скомпилированной программе нашим клиентам, их разработчики могут перепроектировать ее?" Я старался изо всех сил запутывать код, но я знал, что не потребуется так многого для другого, определил разработчика C# для достигания кода.

Таким образом, я искренне ставлю вопрос, действительно ли невозможно защитить код .NET?

Соображения я имею как следующим образом:

  1. Даже регулярные собственные исполняемые файлы могут быть инвертированы, но не каждый разработчик имеет навык, чтобы смочь сделать это. Намного более трудно демонтировать собственный исполняемый файл, чем блок .NET.
  2. Путаница только получит Вас до сих пор, но она действительно помогает немногому.
  3. Почему я никогда не видел общедоступного подтверждения Microsoft, что что-либо записанное в .NET подвергается относительно легкому воровству IP? Почему я никогда не видел фрагмент встречного обучения меры ни на каком сайте Microsoft? Почему VS идет с сообществом obfuscater как дополнительный компонент? Хорошо, возможно, я только что спрятал голову в песок здесь, но не точно высоко в большей части списка приоритетов разработчиков.
  4. Там какие-либо планы состоят в том, чтобы обратиться к моим проблемам в какой-либо будущей версии .NET?

Я не пробиваю .NET, но я хотел бы некоторые реалистические ответы, спасибо, вопрос, отмеченный как субъективные и общественные!

6
задан JL. 30 March 2010 в 23:54
поделиться

2 ответа

Весь код можно реконструировать.

.NET снижает планку для этого (просто попробуйте Reflector!), Но обфускация снова поднимает ее. Хороший обфускатор поднимет планку достаточно высоко, чтобы предотвратить обратное проектирование вашего кода всеми, кроме очень преданного и мотивированного человека.

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

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

10
ответ дан 9 December 2019 в 22:31
поделиться

Любой код может быть перепроектирован. Да, в .NET или Java это проще, чем в высоко оптимизированном C++, но меньше, чем в Javascript или PHP. Обфускация имеет большое значение для уменьшения уязвимости, но реальность такова, что решительный реверс-инженер найдет ваши секреты, как только код окажется в его руках, независимо от того, что вы сделали, чтобы скрыть его. Все, что вы делаете, это, в лучшем случае, делаете это более неприятным для него.

Хорошие инструменты обфускации не позволят случайному программисту, чей опыт начинается и заканчивается в Reflector, действительно получить представление о том, как работает ваш код. Кроме того, все, что вы делаете, в значительной степени безнадежно.

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

1
ответ дан 9 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: