Как я могу защитить my.NET сборки из декомпиляции?


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

защита от декомпиляции по-прежнему является сложной задачей. Я все еще ищете быстрый, легкий и безопасный способ сделать это. Я не хочу запутывать свой код,поэтому мои имена методов будут a,b, c или так. Отражатель или другие инструменты должны быть не в состоянии признать мое приложение .Net-сборки на всех. Я уже знаю о некоторых инструментах, но они очень дорогие. Есть ли другой способ защитить мои приложения?

EDIT:

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

12 57

12 ответов:

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

предотвращение пиратства? Эта цель недостижима. Даже собственный код может быть декомпилирован или взломан; множество варезов, доступных в интернете (даже для таких продуктов, как Windows и Photoshop), является доказательством того, что определенный хакер всегда может получить доступ.

Если вы не можете предотвратить пиратство, то как насчет просто сокращая его? Это тоже заблуждение. Требуется только один человек, чтобы взломать ваш код, чтобы он был доступен всем. Вы должны быть счастливы каждый раз. Пираты должны быть удачливы только один раз.

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

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

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

здесь мы используем Dotfuscator из упреждающих решений.

хотя невозможно защитить сборки .NET 100% Dotfuscator делает это достаточно сложно, я думаю. Я поставляется с большим количеством методов обфускации;

Переименование Перекрестной Сборки
Схемы Переименования
Переименование Префикса
Повышенная Индукция Перегрузки
Инкрементное Запутывание
HTML переименование отчета
Поток Управления
Шифрование Строк

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

(Нет, я не работаю на PreEmptive ; -))

здесь freeware альтернативы конечно;

разместите свой сервис в любом поставщике облачных услуг.

как предотвратить декомпиляцию любого приложения C#

в значительной степени описывает всю ситуацию.

в какой-то момент код должен быть переведен в байт-код VM, и пользователь может получить его тогда.

машинный код тоже не сильно отличается. Хороший интерактивный дизассемблер/отладчик, как IDA Pro делает прозрачным практически любое собственное приложение. Отладчик достаточно умен, чтобы использовать ИИ для идентификации общие API, оптимизация компилятора и т. д. это позволяет пользователю тщательно перестраивать конструкции более высокого уровня из сборки, сгенерированной из машинного кода.

и IDA Pro поддерживает .Net в некоторой степени тоже.

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

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

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

https://github.com/0xd4d/de4dot

лучший способ, который может помочь вам (но помните, что они также не являются полным проф), - это использовать смешанные коды, кодировать ваши важные коды на неуправляемом языке и создавать DLL, как в C или C++, а затем защищать их либо с помощью Armageddon, либо Целесообразно. Themida не для каждого взломщика, это один из лучших защитников на рынке, он также может защитить ваше программное обеспечение .NET.

Я слышал о некоторых проектах, которые непосредственно компилируют IL в машинный код. Вы можете получить дополнительную информацию из этого поста: можно ли скомпилировать код .NET IL в машинный код?

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

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

-- Edit Также будьте осторожны при компиляции в машинный код в качестве решения...существуют декомпиляторы для собственного кода также.

Если кто-то украдет ваш код, скорее всего, ваша бизнес-модель не работает. Что я имею в виду? Например, я покупаю ваш продукт, а затем прошу поддержки. Вы слишком заняты или считаете мою просьбу недействительной и пустой тратой вашего времени. Я расшифровываю ваш продукт для того чтобы поддержать мое относительное дело. Ваш продукт становится более ценным для меня, и я уделяю приоритетное внимание своему времени, чтобы решить бизнес-модель для использования вашего продукта. Я Recode и ребрендинг своего продукта а потом выйти и заработать деньги, которые вы решили оставить на столе. Есть причины для защиты кода, но, скорее всего, вы смотрите на проблему с неправильной точки зрения. Ну конечно же. Ты-кодер, а я-бизнесмен. ;-) Ура!

ps. Я тоже разработчик. т. е. "кодер"

есть ли у вас API?

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

Я думаю, что таким образом вы на 100% уверены, что ваш код не декомпилирован, и вы устанавливаете свои собственные ограничения в своем API, чтобы разработчики / хакеры не потребляли ваш API таким образом, вы этого не хотите.

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

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