Что вы используете для защиты your.NET код из реверс-инжиниринга? [закрытый]


Некоторое время мы пользовались инструментом под названием CodeVeil. Мне просто интересно, есть ли там лучшие альтернативы.

Edit: прежде чем больше людей неправильно поймут вопрос, я осознаю, что решительный взломщик, вероятно, сможет победить любой из этих инструментов. Но меня они не слишком волнуют. Эти инструменты предназначены только для того, чтобы остановить "случайного взломщика" и остановить людей от кражи IP нашей компании. Если они достаточно хороши, чтобы пройти мимо приличного инструмента, они, вероятно, не заинтересованы в краже нашего дерьмового кода : - P

9 14

9 ответов:

У меня был большой успех с Xenocode Postbuild. Этот инструмент может запутывать сборки .NET, защищать их от разборки agaist Reflector, объединять сборки .NET в один исполняемый файл ("виртуализация") и даже компилировать приложения .NET в автономные исполняемые файлы, которые не требуют установки среды выполнения .NET.

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

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

Компиляция приложения .NET приводит к созданию выходных сборок, содержащих большое количество метаинформации. Эта информация позволяет очень легко реконструировать что-то очень близкое к исходному коду. Отличный бесплатный инструмент под названием .NET Reflector может быть использован именно для этого и является популярным способом изучения работы библиотек базовых классов. Загрузите и используйте этот инструмент для просмотра Восстановленных версий содержимого сборки C#/VB.NET.

Если вы коммерческая организация, то вы не хотите, чтобы людям было легко смотреть на ваш дорогой для производства код. Популярный метод состоит в том, чтобы использовать обфускацию для скремблирования содержимого таким образом, который не изменяет его работу, но делает его трудным для понимания. Обфускация использует такие методы, как переименование переменных и методов. Отработка цели методы 'А1', 'А2', 'А3' намного сложнее, чем метод getname оригинальный'', 'UpdateInterestRate' и 'SetNewPassword'.

Таким образом, использование обфускации значительно затрудняет людям поймите, что делает ваш код и какие алгоритмы он использует. Однако это не делает его невозможным. Точно так же, как код C++ все еще может быть понят экспертом ассемблера, который готов потратить время на работу с вашим двоичным кодом, эксперт MSIL может в конечном итоге разработать ваш запутанный код. Но это увеличивает барьер до такой степени, что мало кто будет утруждать себя попытками.

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

Существует несколько популярных инструментов для обфускации, включая Dotfuscation, которая имеет "легкую" версию, поставляемую с Visual Studio 2005 и 2008. У них есть Pro-версия, которая делает больше, чем просто переименование переменных и функций. Тем не менее, код все еще доступен для просмотра, он просто немного скремблирован, чтобы сделать его более трудным для чтения и Грока логического потока программного обеспечения.

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

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

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

Извините, что воскрешаю старый пост, но я думаю, что .NET-реактор Эзириза работает блестяще.

На самом деле я сам использую его для всех своих приложений .net, и, по-видимому, нет никакого существующего инструмента, который может декомпилировать программу, защищенную с помощью .net reactor. Более подробную информацию можно найти на странице информации, http://www.eziriz.com/dotnet_reactor.htm протестируйте его с помощью пробной версии и .NET reflector, и вы сможете убедиться в этом сами.

Отказ от ответственности: я не работаю на RedGate, создателей SmartAssembly. Я просто очень счастливый клиент, который нашел хорошее, доступное решение.

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

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

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

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

Я слышал, что Obfusticator хорош; он используется на .Net Reflector.