Насколько хороша Dotfuscator Community Edition?Что такое «достаточно хороший обфускатор»?[закрыто]

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

Вопрос

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

Насколько это хорошо?

Я мог бы также использовать определение «достаточно хороший обфускатор» — каких функций не хватает в Dotfuscator Community Edition, чтобы сделать его достаточно хорошим.

Редактировать:

Я проверил цены на ряд коммерческих обфускаторов, и они стоят дорого.Стоит ли оно того?

Насколько лучше коммерческие версии защищают от обратного проектирования?

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

Это случается часто?

Редактировать 2:

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

По функциям все продукты более или менее похожи.

Какой минимальный набор функций должен иметь обфускатор?

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

Решение

Короче говоря, основное отличие Dotfuscator Community Edition от других «профессиональных» редакций заключается в том, что Community Edition действительно только запутывает и изменяет ваши пространства имен, имена методов и другие «публично» доступные аспекты ваших классов.Он не будет углубляться в сами функции и запутывать «частный» код внутри функции.

Кроме того, Community Edition не делает ничего, что могло бы запутать такие вещи, как поток управления в вашем приложении, и не будет «объединять» код из нескольких сборок в одну сборку.Это функции, доступные в «профессиональных» платных версиях.

Лучшее сравнение Community Edition («бесплатной» версии, поставляемой с Visual Studio) и «профессиональных» платных выпусков можно найти, просмотрев следующие две ссылки:

Упреждающее сравнение версий Dotfuscator

Dotfuscator Community Edition 3.0 на MSDN

Ссылка MSDN немного устарела, однако она дает гораздо лучшее объяснение фактических функций, доступных в различных выпусках Dotfuscator.

РЕДАКТИРОВАТЬ:

Коммерческие обфускаторы действительно стоят больших денег, и стоят ли они своих денег?Что ж, это суждение, которое действительно можете сделать только вы.Лично я бы сказал, что в вашем сценарии оно того не стоит.Во-первых, потому что вы хотите защитить только одно приложение («Я планирую выпустить одну небольшую и недорогую утилиту»), а во-вторых, вы говорите, что вас не слишком беспокоит «взлом» приложения («Я Я не очень боюсь, что мое приложение взломают».).

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

Попытка остановить пиратство в области программного обеспечения обсуждалась до тошноты как здесь (Stack Overflow), так и во всем Интернете.

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

Это случается часто?

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

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

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

Я считаю, что Dotfuscator Community Edition, поставляемый с Visual Studio, — довольно наивное решение.Он обеспечивает только переименование символов и совершенно не запутывает поток управления.И если кто-то решит украсть ваш код, ему нужно будет всего лишь провести рефакторинг всех имен, что довольно легко при небольшом количестве классов.

Также вы можете положиться на не столь идеальную декомпиляцию, предоставляемую Reflector (обычно он портит блоки переключателей, делает много переходов, не соответствует блокам if-else и т. д.).

Но я предлагаю вам попробовать Эзириз .NET Reactor.Он стоит всего 179 долларов (лучшее соотношение цены и качества AFAIK).Он предоставляет стандартные методы запутывания, такие как переименование символов, шифрование строк, запутывание потока управления.В качестве хорошего бонуса он создает собственный модуль запуска для вашего приложения, который будет содержать вашу основную сборку и все сторонние ссылки, зашифрованные и загружаемые по требованию.Плюс он предоставляет некоторые возможности лицензирования.

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

Как минимум, обфускатор должен иметь:

  1. Строковое шифрование
  2. Переименование символов
  3. Обфускация потока управления

Хорошо, когда есть такие функции:

  1. Защита ресурсов
  2. Объединение/встраивание сборок
  3. Скрытие вызова внешнего метода
  4. Возможность автоматической подписи запутанных сборок.
  5. Поддержка спутниковых сборок
  6. Устранение мертвого кода
  7. Сокращение метаданных
  8. Антидекомпилятор (Рефлектор)
  9. Защита от несанкционированного доступа
  10. Анти-отладка

Взгляните на наш Криптообфускатор продукт, который поддерживает все это.

Еще один способ обойти обратный инжиниринг кода — это разместить свои dll, если вы действительно не можете позволить себе обфускаторы, которые добавляют поддержку.И в ваших сборках перед развертыванием сообщите компилятору, где их искать, что было старой практикой, препятствующей обратному проектированию.Но, как уже было сказано, сосредоточьтесь в основном на разработке отличного продукта и хороших методах кодирования, тогда вы сможете позволить себе хорошее приложение-обфускатор в будущем.Кроме того, постарайтесь не слишком беспокоиться о том, что другие взломают ваш код, потому что большинство хакеров взломают код просто находят способ использовать продукт, не платя за него, а не красть код или учиться у начинающего программиста.Да, мне бы хотелось, чтобы JIT поддерживал только C# и vb.net, что действительно сократило бы объем обратного проектирования, но поскольку jit может читать многие из-за того, что .net действительно дружелюбен к языкам, это цена.Так что кодируйте и зарабатывайте немного денег, купите дополнительные ценные бумаги.

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