Я раньше работал в JavaScript много и одной вещи, которая действительно беспокоилась, мои работодатели был то, что исходный код был слишком легок для кражи. Даже с путаницей, ничто действительно не помогло, потому что все мы знали, что любой компетентный разработчик смог бы прочитать тот код, если бы они хотели.
Сценарии JS являются одной вещью, но что относительно проектов SOA, которым инвестировали миллионы в IP (Интеллектуальная собственность). Я люблю .NET и особенно C#, но я недавно снова должен был ответить на вопрос, "Если мы передаем этой скомпилированной программе нашим клиентам, их разработчики могут перепроектировать ее?" Я старался изо всех сил запутывать код, но я знал, что не потребуется так многого для другого, определил разработчика C# для достигания кода.
Таким образом, я искренне ставлю вопрос, действительно ли невозможно защитить код .NET?
Соображения я имею как следующим образом:
Я не пробиваю .NET, но я хотел бы некоторые реалистические ответы, спасибо, вопрос, отмеченный как субъективные и общественные!
Весь код можно реконструировать.
.NET снижает планку для этого (просто попробуйте Reflector!), Но обфускация снова поднимает ее. Хороший обфускатор поднимет планку достаточно высоко, чтобы предотвратить обратное проектирование вашего кода всеми, кроме очень преданного и мотивированного человека.
При этом я лично предпочел бы сосредоточиться на качестве. Я запускаю небольшой независимый поставщик программного обеспечения, и мы используем .NET - обфускация важна, но если вы можете создавать качественные продукты, это действительно не имеет значения, если кто-то попытается реконструировать ваш код.
Даже гипотетически, если бы они могли перепроектировать все, со сложным проектом, они бы на годы отставали в том, чтобы на самом деле предоставить что-то с конкурентным преимуществом на рынке ...
Любой код может быть перепроектирован. Да, в .NET или Java это проще, чем в высоко оптимизированном C++, но меньше, чем в Javascript или PHP. Обфускация имеет большое значение для уменьшения уязвимости, но реальность такова, что решительный реверс-инженер найдет ваши секреты, как только код окажется в его руках, независимо от того, что вы сделали, чтобы скрыть его. Все, что вы делаете, это, в лучшем случае, делаете это более неприятным для него.
Хорошие инструменты обфускации не позволят случайному программисту, чей опыт начинается и заканчивается в Reflector, действительно получить представление о том, как работает ваш код. Кроме того, все, что вы делаете, в значительной степени безнадежно.
Я не вижу, чтобы это изменилось в ближайшем будущем, потому что функции .NET, которые позволяют так легко реверс-инжинирингировать, - это те же функции, которые обеспечивают мощное отражение и динамизм в фреймворке.