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

Должны ли вы запутывать коммерческое приложение .Net?

Я думал о запутывании коммерческого приложения .Net. Но действительно ли стоит попробовать выбрать, купить и использовать такой инструмент? Действительно ли запутанные бинарные файлы действительно безопасны от обратной инженерии?

4b9b3361

Ответ 1

Возможно, вам не придется покупать инструмент - Visual Studio.NET поставляется с версией сообщества Dotfuscator. Другие бесплатные инструменты обфускации перечислены здесь, и они могут удовлетворить ваши потребности.

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

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

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

Ответ 2

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

Если у вас есть секреты в вашем коде (например, пароли), вы делаете это неправильно.

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

Ответ 3

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

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

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

В конце концов мы остановились на продукте под названием .NET Reactor

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

"В отличие от обфускаторов .NET Reactor полностью останавливает любую декомпиляцию, смешивая любую чистую сборку .NET(написанную на С#, VB.NET, Delphi.NET, J #, MSIL...) с собственным машинным кодом..NET Reactor создает собственную стену между потенциальными хакерами и вашим .NET-кодом. Результатом является стандартный файл, основанный на Windows, а не MSIL. Исходный код .NET остается неповрежденным, хорошо защищенным собственным кодом и невидимым для любопытных глаз. исходный код .NET не скопирован на жесткий диск в любое время. Нет инструмента, который способен декомпилировать сборки, защищенные .NET Reactor."

Ответ 4

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

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

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

Ответ 5

Я думаю, что это зависит от типа вашего продукта. Если он предназначен для использования разработчиками - обфускация повредит вашим клиентам. Мы используем продукты ArcGIS на работе, и все DLL файлы запутаны. Это делает нашу работу намного сложнее, поскольку мы не можем использовать Reflector для расшифровки странного поведения. И мы покупаем клиентов, которые заплатили тысячи долларов за продукт.

Так что, пожалуйста, не обфускайте, если вам действительно не нужно.

Ответ 6

Нет, обфускация доказана, что она не мешает кому-либо расшифровывать скомпилированный код. Это затрудняет это, но не невозможно.

Ответ 7

Я очень удобен для чтения x86-кода сборки, что о людях, которые работают со сборкой более 20 лет?

Вы всегда найдете кого-то, кому нужна только одна минута, чтобы увидеть, что делает ваш код С# или c...

Ответ 8

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

Ответ 9

Вещи, которые вы должны учитывать:

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

Единственная проблема в обфускации может заключаться в том, что кто-то создает копию вашей конкретной реализации 1:1 (или близкую к 1:1).

Также в идеальном мире обратная инженерия обфускации приложения экономична непривлекательна.

Но вернемся к реальности:

  • На этой планете нет инструмента, который останавливает кого-то от копирования пользовательских интерфейсов, поведения или результатов, которые любое приложение предоставляет или производит. Обфускация в этих ситуациях 100% бесполезно
  • Лучший обфускатор на рынке не может помешать использовать какой-либо дизассемблер или шестнадцатеричный редактор, а для некоторых вундеркиндов это очень хорошо, чтобы заглянуть в суть приложения. Это просто сложнее, чем на непрофессиональный код.

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

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

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

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

Итак, вы должны сначала подумать о своих целях, своем рынке и о том, чего хотите достичь с помощью обфускатора. Как вы можете прочитать здесь (и в других местах) обфускация на самом деле не решает проблему обратного проектирования. Это только усложняет и требует много времени. Но если это то, что вы хотите, вы можете взглянуть на обфускаторы с открытым исходным кодом, например, например. sharpObfuscator или obfuscar, который может быть достаточно хорош, чтобы nag случайных кодеров (список можно найти здесь: Список .NET Obfuscators в Википедии).

Если это возможно в вашем сценарии, вы также можете быть заинтересованы в SaaS-Concepts. Это означает, что вы предоставляете доступ к своему программному обеспечению, но не к самому программному обеспечению. Таким образом, у клиента обычно нет доступа к вашим сборкам. Но в зависимости от уровня обслуживания, безопасности и пользовательской базы это может быть дорогостоящим, сложным и сложным для реализации надежной, уверенной и эффективной SaaS-Service.

Ответ 10

... чик... эти сообщения могут стать намного более трудно интерпретировать

Да, но бесплатная версия сообщества, поставляемая с Visual Studio, имеет функциональность карты. С этим вы можете отследить имена запутанных методов с исходными именами.

Ответ 11

У меня был успешный выход из одного бесплатного obfuscator в другой обфускатор. В Dotfuscator CE включены только некоторые из обфускационных трюков, поэтому использование второго обфускатора с различными трюками делает его более запутанным.

Ответ 12

Очень просто переделать приложение .net с помощью .NET reflector - так как приложение будет генерировать VB, VC и С# код прямо от MSIL, и можно вытащить всевозможные полезные драгоценные камни.

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

Там довольно хорошая статья об обфускации и ее работе здесь

Ответ 13

Этот пост и окружающий вопрос имеют некоторое обсуждение, которое может иметь значение. Это не проблема "да" или "нет".

Ответ 14

Да, вы определенно должны. Не защищать его от определенного человека, а получать прибыль и иметь клиентов. Кстати, если вы достигнете точки, здесь кто-то пытается взломать ваше программное обеспечение, это означает, что вы продаете популярное программное обеспечение.

Проблема заключается в том, какой инструмент выбрать для работы. Посмотрите мой опыт работы с коммерческими обфускаторами: https://stackoverflow.com/questions/337134/what-is-the-best-net-obfuscator-on-the-market/2356575#2356575

Ответ 15

Да, мы делаем. Мы используем обфускатор BitHelmet. Это новое, но оно работает очень хорошо.

Ответ 16

Но действительно ли стоит попробовать выбрать, купить и использовать такой инструмент?

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