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

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

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

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

15.08.2008 08:36:19
10 ОТВЕТОВ
РЕШЕНИЕ

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

21
15.08.2008 08:39:57
За исключением случаев, когда программное обеспечение содержит конфиденциальные данные, которые должны быть защищены (например, ЧАСТНЫЕ КЛЮЧИ и
marcolopes 9.03.2014 17:08:38
@marcolopes: закрытые ключи никогда не должны доставляться с приложением ... вы, вероятно, имели в виду открытые ключи ... и пароли должны быть хешированы, в любом случае не ясный текст ...
Igor Popov 30.12.2014 10:22:05
Какое еще решение у вас есть для хранения PRIVATE KEYS? Доступ к серверу? А если нет подключения к интернету?
marcolopes 3.01.2015 03:17:52

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

Легко сделать с правильными инструментами.

3
15.08.2008 08:38:23

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

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

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

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

2
15.08.2008 08:39:54
NGen никак не повлияет на Reflector. Использование инструмента NGen не удаляет оригинальные сборки из системы.
lubos hasko 17.09.2008 13:51:25

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

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

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

7
15.08.2008 09:00:43

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

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

5
15.08.2008 09:14:09

@Rob Cooper

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

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

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

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

4
15.08.2008 12:54:55
«Я полагаю, что вполне возможно извлечь необработанные файлы из любого установочного пакета, такого как MSI или CAB-файл». - Да: superuser.com/questions/307678/…
CAD bloke 30.05.2013 03:28:03

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

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

10
15.08.2008 16:46:02
Хорошая мысль о том, чтобы сделать разработку труднее.
Lucas B 22.01.2010 21:44:09
Фантастический комментарий: «Запутывание отпугивает случайного наблюдателя, но действительно ли такие люди угрожают вашему бизнесу?»
Lawrence Wagerfield 7.11.2012 10:24:44

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

0
15.08.2008 17:07:25
... что может быть немного проблемой, если мы говорим о приложениях WinForms.
JRoppert 15.09.2008 16:52:12

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

2
15.09.2008 16:59:42

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

0
22.01.2010 19:41:36