Разве невозможно защитить код .net (интеллектуальная собственность)? - PullRequest
6 голосов
/ 31 марта 2010

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

Сценарии JS - это одно, а как насчет проектов SOA, в которые миллионы вложены в интеллектуальную собственность? Я люблю .net, и особенно C #, но недавно мне снова пришлось ответить на вопрос: «Если мы передадим эту скомпилированную программу нашим клиентам, смогут ли их разработчики перепроектировать ее?» Я изо всех сил пытался запутать код, но я знал, что другому решительному разработчику C # не понадобится так много времени, чтобы получить код.

Итак, я искренне задаю вопрос: нельзя ли защитить код .net?

У меня есть следующие соображения:

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

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

Ответы [ 2 ]

10 голосов
/ 31 марта 2010

Весь код может быть восстановлен.

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

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

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

1 голос
/ 31 марта 2010

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

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

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

...