Насколько хорош Dotfuscator Community Edition? Что такое "достаточно хороший обфускатор"? [закрытый]
Я планирую выпустить одну небольшую, недорогие коммунальные. Поскольку это больше хобби, чем бизнес, я планировал использовать Dotfuscator Community Edition, который поставляется с VS2008.
насколько это хорошо?
Я мог бы также использовать определение "достаточно хороший обфускатор" - какие функции отсутствуют в Dotfuscator Community Edition, чтобы сделать его достаточно хорошим.
Edit:
Я проверил цены на количество коммерческих обфускаторов и они стоят много. Стоит ли оно того?
являются ли коммерческие версии, которые намного лучше защищают от обратного проектирования?
Я не очень боюсь, что мое приложение будет взломано (это будет разочаровывать, если приложение настолько плохо, что никто не заинтересован в его взломе). Он не сильно защищен в любом случае, не слишком сложный серийный ключ и проверка лицензии на нескольких местах в коде. Меня просто бесит, что без обфускации кто-то может легко получить исходный код, ребрендинг и продать его как свой собственный.
это происходит?
Edit 2:
может кто-нибудь порекомендовать коммерческих обфускатор. Я нашел много из них, все они дорогие, некоторые даже не имеют цену, указанную на веб-сайте.
особенность мудрая, все продукты кажутся более или менее похожими.
какой минимальный набор функций должен иметь обфускатор?
4 ответов:
в двух словах, основное различие между Dotfuscator Community Edition и другими "профессиональными" изданиями заключается в том, что Community Edition будет только действительно запутывать и изменять ваши пространства имен, имена методов и другие "общедоступные" доступные аспекты ваших классов. Он не будет углубляться в сами функции и запутывать "частный" код внутри функции.
кроме того, издание сообщества не делает ничего, чтобы запутать такие вещи, как поток управления в вашем приложение, а также не будет" объединять " код из нескольких сборок в одну сборку. Это функции, которые доступны в" профессиональных " платных версиях.
лучшее сравнение между Community Edition ("бесплатная" версия, которая поставляется с Visual Studio) и "профессиональные", платные издания можно найти, посмотрев на следующие две ссылки:
Упреждающее Сравнение Выпусков Dotfuscator
Dotfuscator Community Edition 3.0 на MSDN
ссылка MSDN немного устарела, однако, дает гораздо лучшее объяснение фактических функций, которые доступны в различных выпусках Dotfuscator.
EDIT:
коммерческие обфускаторы действительно стоят больших денег, и как они стоят денег? Ну, это решение, которое действительно только вы можете сделать. Лично я бы сказал, что это не стоит в вашем случае. Во-первых, потому что вы хотите защитить только одно приложение ("я планирую выпустить одну небольшую, недорогую утилиту.") и во-вторых, вы говорите, что вы не слишком обеспокоены тем, что приложение "взломано" ("я не очень боюсь, что мое приложение будет взломано.").
Я понимаю, как это может вас беспокоить, что скомпилированные приложения .NET, без каких-либо обфускаций, могут быть легко реверсированы в их исходный код, и что кто-то может использовать это для кражи вашего программного обеспечения и продать его как свой собственный, однако, факт остается фактом, что программное пиратство действительно существует, и вы, вероятно, никогда не остановите его.
попытка остановить пиратство программного обеспечения обсуждалась ad-nausem как здесь (переполнение стека), так и по всему интернету.
общий консенсус, похоже, заключается в том, что вам нужно сосредоточить свое время и энергию больше на том, чтобы сделать ваш продукт настолько большим, насколько это возможно, а не использовать это же время, пытаясь защитить то, что, учитывая достаточно времени/денег, "злоумышленник"может" взломать " /украсть ваше программное обеспечение в любом случае, несмотря на все ваши усилия, чтобы помешать ему сделать это.
это происходит?
Я бы сказал, что это, вероятно, случается намного меньше, чем вы думаете. Конечно, программа получает трещины, но я не думаю, что слишком много людей на самом деле украсть исходный код и полностью ребрендинг его продать как свои собственные. Я не говорю, что это не так или не произошло, но это, конечно, не распространено происшествие.
подводя итог, я бы сказал, что лучше всего было бы сосредоточиться на том, чтобы сделать вашу полезность настолько большой, насколько это возможно, и использовать бесплатный Dotfuscator obfuscator, поскольку он требует очень мало времени/денег, чтобы запутать ваш код от самых очевидных любопытных глаз, но не теряйте сна над тем, что если кто-то хочет взломать/украсть ваш продукт/код достаточно плохо, они это сделают.
Я думаю, что Dotfuscator Community Edition, поставляемый с Visual Studio, является довольно наивным решением. Он обеспечивает только переименование символов и не запутывает поток управления вообще. И если кто-то решит украл ваш код, его нужно будет только переписать туда все имена, которые довольно легко с небольшим количеством классов.
также вы можете полагаться на не столь совершенную декомпиляцию, обеспечиваемую рефлектором (обычно он портит блоки коммутаторов, делает много переходов, несоответствие блоков if-else, так далее.).
но я предлагаю вам попробовать Eziriz .NET Reactor. Это стоит всего 179 $(ЕМНИП лучшее соотношение цена/возможности). Он обеспечивает стандартные методы обфускации, такие как переименование символов, шифрование строк, обфускация потока управления. В качестве хорошего бонуса он создает собственное приложение запуска для вас, которое будет содержать вашу основную сборку и все сторонние ссылки, зашифрованные и загруженные по требованию. Кроме того, он предоставляет некоторые возможности лицензирования.
в любом случае реверсирование .NET применение не так сложно, я сделал это для удовольствия и могу сказать, что это только вопрос времени и денег (и, конечно, здравого смысла), как быстро ваше приложение будет взломано или отменено.
как минимум, обфускатор должен иметь:
- шифрование строк
- символ переименования
- обфускация потока управления
хорошо иметь характеристики:
- Защита ресурсов
- сборка слияние / встраивание
- внешний вызов метода сокрытия
- возможность автоматического подписания запутанных сборок
- поддержка спутниковых сборок
- Dead-код ликвидация
- мета-данных о сокращении
- анти-декомпилятор (отражатель)
- Anti-tamper
- Анти-Отладки
взгляните на наши Крипто Обфускатор продукт, который поддерживает все эти.
другой способ обойти обратный инженерный код - это место, где вы размещаете свои dll, если вы не можете позволить себе обфускаторы, которые добавляют поддержку. И в ваших сборках перед развертыванием скажите компилятору, где их искать, что было старой практикой, чтобы препятствовать обратному проектированию. Но, как уже было сказано, сосредоточьтесь в основном на разработке отличного продукта и хороших практик кодирования, тогда вы сможете позволить себе хорошее приложение обфускатора в будущем. Кроме того, старайтесь не беспокоиться о том, что другие взломают ваш код, потому что большинство хакеров взламывают код, просто находят способ использовать продукт, не платя за него, а не красть код или учиться у начинающего программиста. Да, я хочу, чтобы JIT поддерживал только c# и vb.net что действительно сократило бы обратное проектирование, но поскольку jit может читать много из-за того, что .net действительно дружелюбен к языку, это цена. Так что код прочь и заработать немного денег, купить некоторые дополнительные ценные бумаги.
Comments