2008-08-15 5 views
24

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

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

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

ответ

19

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

+0

За исключением случаев, когда программное обеспечение содержит конфиденциальные данные, которые ** должны быть защищены ** (например, ЧАСТНЫЕ КЛЮЧИ И ПАРОЛИ) – marcolopes 2014-03-09 17:08:38

+2

@marcolopes: личные ключи никогда не должны поставляться вместе с приложением ... вы, вероятно, имели в виду открытые ключи ... и пароли должны быть хэшированы, а не ясный текст в любом случае ... – 2014-12-30 10:22:05

+1

Какое другое решение у вас есть для хранения ЧАСТНЫХ КЛЮЧЕЙ? Доступ к серверу? А если нет подключения к Интернету? – marcolopes 2015-01-03 03:17:52

3

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

Простой в использовании инструмент.

2

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

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

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

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

+4

NGen никак не повлияет на отражатель. Использование инструмента NGen не удаляет исходные сборки из системы. – 2008-09-17 13:51:25

7

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

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

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

5

Нет новых запутывания, но много трюков компилятора так 1.1

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

4

@Rob Купер

Имея некоторые обсуждения с моим менеджера на работе, он сказал, что он не запутать, но делает NGEN по установке, Apparantly, что должно быть достаточно для остановки рефлектора работы на ваших собраний, но я понятия не имею, если это верно и в какой степени, поэтому, пожалуйста, не принимайте это как евангелие :)

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

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

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

+0

«Я предполагаю, что вполне возможно извлечь необработанные файлы из любого установочного пакета, такого как MSI или CAB-файл». - Да: http://superuser.com/questions/307678/how-to-extract-files-from-msi-package – 2013-05-30 03:28:03

10

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

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

0

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

2

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

0

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