Подтвердить что ты не робот

Насколько хороша версия сообщества Dotfuscator? Что такое "достаточно хороший обфускатор"?

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

Как хорошо?

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

Edit:

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

Являются ли коммерческие версии, которые намного лучше защищают от обратной инженерии?

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

Это происходит много?

Изменить 2:

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

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

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

4b9b3361

Ответ 1

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

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

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

Сравнение превентивных сравнений Dotfuscator

Dotfuscator Community Edition 3.0 на MSDN

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

EDIT:

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

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

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

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

Это происходит много?

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Приятно иметь функции:

  • Защита ресурсов
  • Слияние/встраивание сборки
  • Скрытие внешнего вызова метода
  • Возможность автоматической подписи обфускации сборок
  • Поддержка спутниковых сборок
  • Удаление мертвого кода
  • Снижение метаданных
  • Анти-декомпилятор (отражатель)
  • Анти-тампер
  • Anti-Debugging

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

Ответ 4

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