Использование Dotfuscator Community Edition для обфускации .NET сборок
Хотя релиз 2010 студии уже состоялся, многие и дальше будут еще около года бродить кругами возле этой лакомки. Ситуация обычная для тех, кто как и раньше ориентируеться на клиента с установленым фреймвороком 2.0.
К таким программистам можно сказать отношусь и я. Не то чтобы я жалуюсь, просто как -то все руки не доходят перейти к использованию новой студии. И солюшены все поменяються, а у колег еще может и новая студия не стоять... Но не совсем об этом я хотел поведать в данном посте.
Во время установки 2008 студии в настраиваемом режиме, всегда выбирал для установки дополнительный компонент Dotfuscator Community Edition, понимая, что он пригодиться для обфускации. Но так особо никогда продукт мне и не был нужен. И вот настал тот час.
Когда не совсем понятному заказчику нужно было отослать демо продукта (в принципе полнофункционального, но с обрезаным UI), задумался о защите своего кода. Ведь любая .нет сборка являеться беззащитной в руках злоумышлеников :). Но как раз эта программа позволяет подпортить им нервы :).
1. Для начала опрелелим местонахождение установленого обфускатора. Лично у меня оно выглядит:
c:\Program Files\Microsoft Visual Studio 9.0\Application\PreEmptive Solutions\Dotfuscator Community Edition\
2. Создадим сборку некоторой апликации. Для примера, возьмем мою незащищенную сборку.
3. Попробуем открыть сборку с помощью апликации .NET Reflector.
Минимальный анализ показывает, что код читабельный. Все что относится к классам (методы, свойства, поля) не были изменены. Единственное, что поменялось - имена локальных переменных.
4. Теперь перейдем к использованию обфускатора.
4.а. После запуска dotfuscator.exe приложение сразу хочет создать или открыть некоторый проект. Создадите новый.
4.б. На вкладке Input добавте те сборки, которые вы хотели бы обработать.
4.в. Перейдите на панель Build и нажмите кнопку Build. Этих несложных манипуляций хватит для того, чтобы получить новую сборку, с уже измененными именами. Если ваша сборка ссылаеться на другие сборки (не системные), они должны быть доступны в папке с исходным файлом.
Также вы можете обрабатывать целые кипы сборок, сразу изменяя как сборку вызваную, так и вызывающую.
5. Вот такой результат получился например у меня:
Метод я смог найти только благодаря его сигнатуре. Имена классов, методов, свойств сильно изменились. Логику проследить в этом случае стало значительно труднее. Не скажу что невозможно, но в большой кипе эдакого хлама я бы долго поблудил.
6. Дополнительные возможности (Dotfuscator Professional Edition):
User String Encryption - приложение позволяет кодировать строки внутри кода для того чтобы скрыть важные сообщения (например место, где говориться о том что срок лицензии подходит к концу либо аналогичные).
Pruning - вырезание тех типов данных и имен, которые не используються в конкретной апликации - являються в ней излишними. Это позволяет уменьшить размер исходной сборки.
Linking - возможность обьеденять разные сборки в одну результирующую.
Tamper Notification and Runtime Intelligence with SO-signal - также приложение позволяет встраивать в результирующий продукт даже почтовые нотификации для разработчиков на случай если в сборку попытаются внести изменения.
Watermarking - позволяет идентифицировать ваши сборки как лицензионные. Позволяет отследить нелицензионные копии програмы.
Продукт продолжает развиваться и выпускаться. И бесплатная версия поставляется вместе с VS 2010.
Больше деталей о самом приложении можно найти здесь.
Быстрый Интернет просмотр дает еще много продуктов. Наиболее высоки в рейтинге Google:
Eazfuscator.NET - судя по сайту, украинская разработка.
Поддерживает:
- .NET Framework versions 2.0, 3.0, 3.5 and 4.0
- .NET Compact Framework versions 2.0, 3.5 and 4.0
- Silverlight assemblies and XAP packages
- XNA applications for Windows, Xbox 360 and Zune platforms
- Can obfuscate any 100% managed .NET assembly
Позволяет интегрироваться со студиями 2005 - 2010 (даже с Експрес).
Прост в использовании благодаря революционной технологии drag-and-drop.
Skater .NET Obfuscator - позволяет в принципе тоже что и другие... Без того чтбы покопаться тяжело найти отличия. Имеет платную и бесплатную версию. Говорит, что после декомпиляции собрать сборку заново становиться обычно нереально ("Obfuscated application usually is not recompilable").
Obfuscator.NET - то же что и предыдущие. Угрожает, что .NET Reflector упадет при декомпиляции. А если и нет, то получиться код такого типа:
И на закуску:
{Smartassembly} , Spices.Net Obfuscator
Продуктов защиты .NET кода достаточно, а тем более достаточно их бесплатных версий, чтобы хотя бы по минимуму защитить вашу интелектуальну собственность.
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |