Должен ли я беспокоиться о запутывании моего кода .NET?

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

Мне было бы интересно узнать, как многие из вас используют обфускацию и какие продукты?

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

Ответ 1

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

Ответ 2

Помните, что обфускация - это не шифрование. ИМХО, если кто-то осознает ценность в обратном проектировании вашего кода, они это сделают. Это верно для управляемого кода или собственного кода, обфускации или нет. Конечно, обфускация сдерживает случайного наблюдателя, но ваш бизнес фактически угрожает такими людьми? Каждый метод обфускации .NET, который я видел, усложняет вашу жизнь как разработчика.

Существуют службы, которые предлагают истинное шифрование, такое как SLPS от Microsoft. См. http://www.microsoft.com/slps/default.aspx

Ответ 3

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

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

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

Ответ 4

Нет новой обфускации, но множество трюков компилятора с 1.1

Например, каждый раз, когда вы используете анонимный тип, вы получаете IL, который компилируется с довольно неясным именем. Каждый раз, когда вы используете доход, вы получаете целый новый класс, который реализует IEnumerable и IEnumerator (умная оптимизация, нечитаемый код). Каждый раз, когда вы используете анонимный делегат, вы получаете новый метод с недопустимым именем на любом языке .Net, о котором я знаю, но это хорошо в IL.

Ответ 5

@Rob Cooper

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

Это не предлагает никакой защиты от разборки. Сначала я предполагаю, что вполне возможно извлечь необработанные файлы из любого установочного пакета, такого как MSI или CAB файл.

Но что более важно, Ngen запускается на клиентской машине после установки сборки. Ngen просто заставляет сборку компилироваться сейчас, а не позже использовать JIT. Оригинальная сборка остается неизменной и остается неизменной, потому что Ngen может не скомпилировать всю сборку.

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

Ответ 6

легко для меня - если вам нужно защитить интеллектуальную собственность - обмануть - если нет, то не.

Простое использование необходимых инструментов.

Ответ 7

Я думаю, что в какой-то степени мы ВСЕ будем беспокоиться о нашем IP:)

Хороший вопрос, хотя, как его то, о чем я хочу больше узнать (в настоящее время я не obfuscate).

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

Хороший вопрос:) +1

Ответ 8

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

Ответ 9

Обложение ограничено в эффективности, оно может оставить случайного парня. Наиболее эффективное обдумывание делает доступным для пользователя только наименьший объем кода. Если это возможно, сделайте так, чтобы ваше приложение сильно зависело от толстого сервера.

Ответ 10

Согласитесь, большинство людей, которые знают, как закодировать даже немного, не должны красть ваш код!