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

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

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

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

Изменить:

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

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

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

Часто ли это происходит?

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

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

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

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


person Community    schedule 08.01.2010    source источник


Ответы (4)


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

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

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

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

Dotfuscator Community Edition 3.0 в MSDN

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

ИЗМЕНИТЬ:

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

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

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

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

Часто ли это происходит?

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

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

person CraigTP    schedule 08.01.2010
comment
Обратите внимание, что ссылка PreEmptive ссылается на функции CE, которые есть в версии, поставляемой с Visual Studio 2010. Функционал этой версии несколько расширен по сравнению с той, которая поставляется с VS2008. - person mletterle; 09.01.2010
comment
Спасибо за информацию. Я отредактировал вопрос. Хотите прокомментировать дополнительные вопросы? - person zendar; 09.01.2010
comment
@mletterle - Очень хороший момент. Я не заметил упоминания VS 2010 внизу страницы, но знал, что PreEmptive обновил раздел сравнения выпусков на своем веб-сайте. - person CraigTP; 09.01.2010
comment
@zendar - Пожалуйста, посмотрите мой отредактированный ответ в ответ на ваши изменения вопроса. - person CraigTP; 09.01.2010
comment
Еще раз спасибо. Это был ответ, который я действительно хотел услышать :). Вы должны сделать это отдельным ответом, чтобы я мог снова проголосовать за него. - person zendar; 10.01.2010
comment
@zendar - я оставлю свой ответ целиком (хотя я ценю ваше предложение снова проголосовать за меня!), поскольку теперь это полный (состоящий из нескольких частей) ответ на ваш полный (состоящий из нескольких частей) вопрос. Если это действительно отвечает на ваш вопрос, я был бы признателен, если бы вы приняли этот ответ! Спасибо. - person CraigTP; 10.01.2010
comment
пиратство существует, но существует и закон об авторском праве/товарных знаках. В случае, который вы описываете (кто-то крадет ваш источник и переименовывает его), вы можете подать на него в суд. Вы можете убедить суд: а) запретить им продавать их продукцию; б) заставить их выплатить вам компенсацию за использование вашей интеллектуальной собственности. - person FistOfFury; 07.01.2014
comment
@FistOfFury Это все очень верно, однако, если вы являетесь единственным разработчиком, продающим недорогие продукты, поиск преступников и последующее возбуждение против них судебных исков может быть очень дорогим (как с точки зрения времени, так и денег) предложением, которое может сделать движение по такому пути финансово (или временным) недопустимым. - person CraigTP; 08.01.2014
comment
@CraigTP, это правда, что судебный иск стоит дорого. в этом случае ОП, кажется, больше всего обеспокоен появлением коммерческого предприятия и получением денег от его творения. Если бы бизнес был коммерчески успешным, он мог бы подать в суд, чтобы получить деньги и / или закрыть их бизнес, и это стоило бы его времени. Я уверен, что есть много юристов, которые возьмутся за дело без предоплаты (предполагая большую выплату в конце). Что бы предпочел OP, авансовые платежи на Obfuscator или дополнительные расходы на юриста? стоимость линии кажется более разумной, поскольку она может не понадобиться - person FistOfFury; 09.01.2014
comment
Хотите защитить его только потому, что он содержит некоторую информацию для аутентификации сервера. - person Abdul Saleem; 10.12.2015

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

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

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

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

person Oleg I.    schedule 11.02.2010
comment
Все, кроме переименования символа, может быть автоматически отменено. См. bitbucket.org/0xd4d/de4dot. - person quadroid; 07.11.2013
comment
Я абсолютно согласен. Но это самая сложная часть. - person Oleg I.; 08.11.2013

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

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

Хорошо иметь следующие функции:

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

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

person Community    schedule 18.05.2010
comment
Я согласен с вами Logicnp. И сообщество Dotfuscator не поддерживает шифрование строк. - person chosenOne Thabs; 16.02.2018

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

person Community    schedule 11.06.2010