воскресенье, 21 февраля 2010 г.

Чем защитить свой продукт .NET. Обфускаторы и инструменты защиты

Введение

Активное развитие платформы .NET способствует тому, что все больше разработчиков используют ее для своих проектов. Не является здесь исключением и область коммерческой программного обеспечения. И если несколько лет назад использование платформы в этой области несколько тормозилось изза того, что разработчики опасались, того, что конечный пользователь не пожелает установливать .NET на свой компьютер. Сегодня эта проблема уже наверняка не стоит так остро, на большинстве компьютеров фреймворк предустановлен и пользователю как правило нету необходимости беспокоится по этому поводу.
Однако специфичной проблемой распространения коммерческого программного обеспечения написанного на .NET является тот факт, что в отличие от традиционных Windows-приложений, которые при компиляции преобразуются в низкоуровневый машинный код, NET-приложения компилируются в MSIL это процессоронезависимый промежуточный язык, созданный Microsoft. Если приложение никак не защитить, то с помощью специальных инструментов типа .NET Reflector можно за несколько минут выполнить декомпиляцию и восстановить исходный код приложения в пригодном для изучения виде. Задачу защиты исходного кода программы от изучения посторонними личностями решают специальные программы - обфускаторы. Обфускаторы усложняют исходные коды программы, запутывают его, делают более трудными для понимания, но при этом сохраняют функциональность работоспособной.
Также, помимо проблемы с защитой от просмотра кода, специфичной для .NET приложений, актуальной является также и вопрос защиты программы от несанкционированного использования. В подавляющем большинстве случаев такая защита строится на основе использования файлов лицензии (или серийных номеров). Данные файлы могут генерироваться с привязкой к "железу" компьютера пользователя так, чтобы ими нельзя было воспользоваться на других компьютерах. В этом случае как правило используется machine key, который может быть получен с помощью WQL. Однако может использоваться и другой способ защиты приложения, специфичный для приложения.
Как правило, разработка качественной системы защиты своими силами - процесс достаточно сложный и трудоемкий. Поэтому большинство разработчиков стараются выбрать более простое и быстрое решение - воспользоваться готовой системой защиты.
В данной статье я постараюсь рассмотреть наиболее распространные решения защиты .NET приложений и вскользь пробежаться по их основным особенностям. К сожалению, более детальное и более глубокое рассмотрение требует больше времени и терпения. У меня, как и у многих других людей, дефицит и того и другого, поэтому я постараюсь очень кратко описать основные моменты. Если вам захочеться познакомится с тем или иным инструментом глубже, вы без труда сможете это сделать самостоятельно. Основной целью моей статьи – указать вам направление. Свое внимание в статье я постараюсь уделить следующим моментам:
·         Стоимость инструмента (single license)
·         Наличие trial-периода и бесплатной редакции
·         Наличие механизма лицензирования (evaluate-версия, генерация серийных номеров, привязка к компьютеру и т.д.)
·         Наличие и качество методов обфускации
·         Шифрование чувствительных данных и защита от отладки
·         Дополнительные возможности, специфичные для каждого отдельного интсрумента
Что бы по возможности избежать недоразумений, не попасть впросак и снять с себя ответственность за необъективность информации, скажу сразу, что практического опыта работы с данными продуками у меня не было, вся информация предоставленная в статье получена из открытых источников Интеренет. Все продукты, рассматриваемые в этой статье, я разместил по возрастанию стоимости продукта, то есть сначала идут более дешевые, потом более дорогие. Если вы не испытываете финансовых сложностей, можете начать изучение с самого конца, там точно написано куда можно потратить ваши деньгиJ

Dotfuscator

URL:
Текущая Версия:
4.6.1205 (2010.02.04)
Стоимость:
Информация отсутствует
Наличие Trial:
Да
Бесплатная версия:
Да
Лицензирование
Нет

Один из самых распространенных обфускаторов для .NET. Его особенностью является наличие бесплатной версии: Dotfuscator CE, которая также идет в составе Microsoft Visual Studio начиная с версии 2003. Найти его можно в меню Tool Dotfucsator CE. К сожалению данная версия имеет много ограницений, как например отсутствие шифрования строк. Старший брат Dotfuscator PRO стоит денег и предназанчена для корпоративного бизенса. Dotfuscator PRO предлагает повышенную защиту, более соверешенные методы и приемы обфускации. Информация о стоимости профессиональной версии в открытых источниках отсутствует, и только лишь поэтому я отдал первую строчку данному инстументу, иначе, почти уверен, его пришлось бы искать где то в конце.

Phoenix Protector

URL:
Текущая Версия:
1.7.0.1
Стоимость:
0$
Наличие Trial:
Нет
Бесплатная версия:
Да
Лицензирование
Нет
Еще один абсолютно бесплатный инструмент. Список его возможностей состоит из обфускации, причем, есть возможность использовать встроенный список исключений, для избежания нежелательных результатов, и склеивания сборок. Несмотря на столь небольшой перечень возможностей, механизм обфускации реализован достаточно умело, и его вполне достаточно для базовой защиты продуктов .NET.

Eazfuscator.NET

URL:
Текущая Версия:
2.7 (2009.09.24)
Стоимость:
0$
Наличие Trial:
Нет
Бесплатная версия:
Да
Лицензирование
Нет
Eazfuscator.NET – это бесплатный обфускатор для .NET платформы. Основной целью инструмента является защита интелектуальной собственности программного обеспечения. Среди особенностей можно выделить наличие  интеграции с Visual Studio, поддержку .NET CF и Silverlight. По заверениям разработчика обфускация сделана на очень хорошем уровне и защите подвергается 100% управляемого кода. Помимо обфускации, инструмент предоставлет также строковое шифрование и автоматическую оптимизацию кода.

 

C# Source Code Formatter

URL:
Текущая Версия:
2.0
Стоимость:
50$
Наличие Trial:
Нет
Бесплатная версия:
Нет
Лицензирование
Нет
Данный продукт является представителем большого сеймейства продуктов для различных языков программирования, основной целью которых является форматирование исходного кода, комментариев, выравнивание, изменение кодировки ASCII, Unicode(UTF-8, UTF-16). В дополнение к данной функциональности инструмент позволяет обфусцировать приложения .NET. Я по правде не смог придумать, чем данный продукт в плане защиты может быть лучше других, даже бесплатных аналогов, описанных выше.

 

.Net Reactor

URL:
Текущая Версия:
4.1.0.0 (2009.11.02)
Стоимость:
179$
Наличие Trial:
Да
Бесплатная версия:
Нет
Лицензирование
Да

Пожалуй самый раскрученный среди комерческих продукт. По крайней мере, как только я заинтересовался вопросом защиты, он мне попался чуть ли не самым первым. В нем имеется весь спектр функциональности для разработчика: обфускация, защита от декомпиляции, шифрование строк, механизм склеивания сборок в один монолит, система лицензирования и еще много чего. Кроме того продукт имеет удобный интуитивный пользовательский интефейс, что делает работу с продуктом простой и интуитивной.
Однако же, отзывы о продукте весьма неоднозначны. Много говорят о нем плохого, как то примитивные методы обфускации и слабая непроффесиональная защита, тормознутость как самого продукта, так и защищенных с его помощью решений. Однако достаточно и положительных отзывов, в которых в качестве сильных сторон продукта отмечают невысокую стоимость и удобство и простоту использования.
Так или иначе, но действительно невысокая стоимость по сравнению с конкуррентами затмевает если не все, то большую часть недостатков инструмента для непритязательных пользователей. Проффессиональным решением данный продукт, наверное, назвать сложно, но как отправная точна для небольших стартапов – данное решение будет очень кстати.

Skater .NET Obfuscator

URL:
Текущая Версия:
4.0 (2009.12.23)
Стоимость:
349.99$
Наличие Trial:
Да
Бесплатная версия:
Да
Лицензирование
Да
Данный инструмент помимо коммерческой версии содержит бесплатный вариант, который имеет интерфейс командной строки и умеет обфусцировать только лишь приватные члены классов.
Для большего уже нужно заплатить. Вообще редакции у данного инструмента существует много, Наиболее функциональной и более подходящей под наши условия которые были перечилены в начале статьи подходит Ultimate Edition. В данную редакцию входит полная обфускация кода, строковое шифрование и функциоанльность управления лицензированием.

Themida / WinLicence

URL:
Текущая Версия:
2.1.1.0 (2009.12.18)
Стоимость:
399$
Наличие Trial:
Да
Бесплатная версия:
Нет
Лицензирование
Да
Themida известна не только для .NET разработчиков, но так же и для многих других направлений. Это достаточно хорошая, зарекомендовавшая себя система, помогающая решить многие вопросы в том числе и специфичные для данного обзора обфускацию и лицензирование конечного продукта. Для защиты продуктов фемида использует технологию защиты SecureEngine® которая, выполняется на уровне драйверов, поэтому предоставляемая ей защита программ дейсвтительно на очень высоком уровне.

Dotnet Protector

URL:
Текущая Версия:
5.4.3240 (2009.4.19)
Стоимость:
~410$
Наличие Trial:
Да
Бесплатная версия:
Нет
Лицензирование
Да
PV Logiciels dotNet Protector – это мощный инструмент в арсенал возможностей которого входит защита кода .NET, обфускация, управление лицензированием. Спецификой лицензирования является наличие в инструменте средств для создания evaluate копий защищаемого продукта и интегрированной hardware блокировки. Разработчики данного инструмента французы, поэтому чена продукта исчисляется в ЕВРО, и базовая редакция инструмента начинается с 300 евро.

 

Inquartos Obfuscator

URL:
Текущая Версия:
2.2.9 (2009.01.31)
Стоимость:
450$
Наличие Trial:
Да
Бесплатная версия:
Да
Лицензирование
Да
Данный инструмент является позиционируется как первый отчечественный продукт по защите .NET продуктов. Среди его возможностей можно выделить средства обфускации, в том числе и декларативной, шифрования, объединения сборок, защита от отладки, оптимизация кода и управление лицензированием. Судя по отзывам есть много недочетов и проблемных ситуаций, однако вцелом продукт выглядит очень достойно. Кроме того существует бесплатная утилита которая называется NetObf-Protector. Утилита обладает простым, удобным и интуитивно понятным интерфейсом, и обеспечивает .NET приложения базовыми средствами защиты. Немного насторажимвающим моментом является что уже больше года на оффициальном сайте тишина.

Smart Assembly

URL:
Текущая Версия:
4.2 (2009.12.31)
Стоимость:
499$
Наличие Trial:
Да
Бесплатная версия:
Нет
Лицензирование
Нет
SmartAssembly предназначена для обфускации и защиты исходного кода. Помимо этого система способна выполнять задачи оптимизации, упрощения развертывания .NET решений, уменьшения их размеров, увеличения производительности. Несмотря на свою достаточно высокую стоимость система пользуется неизменной популярностью у разработчиков, как обладает очень качественной функциональностью и способна решить все вопросы, входящие в круг ее возможностей на на высоком профессиональном уровне.

PC Guard .Net

URL:
Текущая Версия:
5.04.0250 (2010.1.11)
Стоимость:
От 542$
Наличие Trial:
Да
Бесплатная версия:
Нет
Лицензирование
Да (За доп. плату)
PC Guard .NET – професиональное решения для защиты и лицензирования продуктов написанных на .NET и Win32. Правда с недавних пор механизм лицензирования был выделен в отдельный продукт: activation suite, так что для того что бы воспрользоваться данной функциональностью цену продукта, которая к слову, так же как и  цена на Dotnet Protector, объявлена в ЕВРО, нужно умножить на два. Сам же инструмент обладает действительно высоким уровнем защиты продуктов и самодостаточной системой лицензирования. Как говорится, были бы деньги.

 

Demeanor for .NET

URL:
Текущая Версия:
4.0.3312.0
Стоимость:
799.00$
Наличие Trial:
Да
Бесплатная версия:
Нет
Лицензирование
Нет
Demeanor for.NET – это инструмент который одержит в себе функции защиты, обфускации, оптимизации продуктов, уменьшение размеров продукта и увеличение скорости загрузки.Кроме того, присутствуют средства интеграции с процессом сборки, в частности с MS Build. По заверениям разработчиков и отзывам пользователей все реализовано на высшем уровне. Примечательно, что на главной странице проекта красуется отзыв небезызвесного Джефри Рихтера.

Salamander .NET Obfuscator

URL:
Текущая Версия:
2.x (2008.05.27)
Стоимость:
$799
Наличие Trial:
Да
Бесплатная версия:
Нет
Лицензирование
Нет
Несколько лет назад, данный продукт был на пике популярности, однако с недавних пор проект перестал развиваться, и как следствие потерял интерес со стороны разработчиков. Несмотря на это продукт все еще существует. Возможности инструмента ограничиваются на достаточно качественной обфускации сборок и защите их ресурсов.

DNGuard HVM

URL:
Текущая Версия:
3.32 (2009.12.26)
Стоимость:
899$
Наличие Trial:
Да
Бесплатная версия:
Нет
Лицензирование
Да
Инструмент содержит средства очень хорошие средства обфускации, защиты кода, ресурсов, шифрования строк и управления лицензирвоанием продукта. Средства обфускации помимо всего прочего как и для CliSecure, который будет описан позже, позволяют использовать специальные аттрибуты. Прилежные китайцы постарались на славу пытаясь реализовать очень серьезную защиту. В ее основе лежит технология HVM, которая не доступна в trial версии.

Spices.Net Suite

URL:
Текущая Версия:
5.6.6.3 (2009.10.14)
Стоимость:
1199.90$
Наличие Trial:
Да
Бесплатная версия:
Нет
Лицензирование
Нет
Продукт состоит из мощного обфускатора, позволяющего конфигурировать исключения обфускации, включения, маски имен, атрибуты обфускации, декомпилятора, компонентов представляющих срадства для моделирования структруры сборок, исследования метаданных проекта, информации о составных частях проекта а также ингегационный пакет к Visual Studio поддерживающий работу с MSBuild и NAnt. Стоит отметить, что продукт не содержит никакой системы лицензирования, для этого он не предназначен. Основная его задача – это помощь разработчику на этапе разработки, и подготовки к публикации продукта. С этим Spice.NET Suite справляется выше всяких похвал, по крайней мере крайне негативных отзывов о данном продукте я не нашел.

CodeVeil

URL:
Текущая Версия:
3.2
Стоимость:
1199.99
Наличие Trial:
Yes
Бесплатная версия:
No

Лицензирвоание
Да (За доп. плату)

CodeVeil – это инструмент, который содержит в себе функции обфускации и шифрования MSIL, ресурсов и модулей.  Кроме того, использование данного инструмента позволяет защитить продукт от отладки, трейсинга и модификации исполняемого кода.
Существует более легкая версия CodeVeil которая стоит 99$, но ее функциональность сведена к минимуму. Там нету поддержки 64-битных сборок, отсутствует функциональность шифрования, защита от отладки, модификации, трейсинга. Вобщем минимум возможностей за минимум денег.
Помимо этого у XHEO существует отдельный продукт для лицензирования: Licensing, который предлагает удобный инструмент для управления лицензиями продукта. Существует много редакций Licensing, цена на каждую редакцию корелирует с ее возможностями и начинается со 169$.

CliSecure

URL:
Текущая Версия:
5.1
Стоимость:
1299$
Наличие Trial:
Да
Бесплатная версия:
Да
Лицензирование
Да

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

Xenocode

URL:
Текущая Версия:
8.0.1135
Стоимость:
1999$
Наличие Trial:
Нет
Бесплатная версия:
Нет
Лицензирование
Нет
 XenoCode это мощный, гибкий и легкий в использоваии инстрмент предназначенный для защиты и оптимизации приложений для различных технологий в том числе и .NET решений. Среди особоенностей инструмента можно выделить обфускацию и шифрование кода и метаданных, оптимизацию производительности защищаемых продуктов, простоту в конфигурации и использовании. Кроме того данный инструмент позволяет конвертировать Windows, .NET, Java, AIR, Flash, Shockwave или другое Windows-совместимое приложение в самостоятельное виртульное приложение (один единственный исполняемый *.exe файл), которое можно запускать без его установки на любом пользовательском компьютере.


Заключение

В обзор не попали продукты которые перестали поддерживаться. Единственное исключение я сделал  для Salamander, даже сам не знаю почему. Так среди таких вот нерассмотренных, но о которых я что-то где-то слышал остались инструменты: LSW IL-Obfuscator 2.0, Deploy.NET, Dynu .net protector, Assembly Lockbox, Maxtocode, Aspose.Obfuscator, SharpObfuscator. Многие инструменты в ходе своей эволюции изменили свои основные задачи, и теперь в них методы защиты, такие как обфускация или шифрование, являются остаточным явлением, пример здесь может быть Xenocode. Или же есть другой класс инструментов, для которых обфускация никогда не была главной особенностью, а служила в качестве дополнения к основной функциональнсти. Вот к таким можно отнести C# Source Code Formatter. Наверняка много чего не попало в поле моего зрения и по каким то причинам было мною пропущено. К сожалению,  такой момент тоже присутствует. Однако я думаю, что того что я все таки описал в данном обзоре хватит даже самому требовательному разработчику что бы начать защищать свою интелектуальную собсвенность используя качественные методы и инструменты.