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

StackOverflow https://stackoverflow.com/questions/12075

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

@Роб Купер

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

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

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

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

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

Это легко сделать с помощью правильных инструментов.

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top