понедельник, 21 января 2013 г.

Обфускация С# кода средствами VS2010

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

Dotfuscator Software Services, который встроен в VS2010.

Допустим, у нас есть какой то проект, возьмем мой - FormulaToTruthTable. Для того, чтобы начать, зайдем в Tools->Dotfuscator Software Services. 

Вылезет окошко с лицензией. Тщательно читаем еврейским методом и принимаем лицензию. После нескольких минут раздумываний появится окошко дотфускатора:
Программа содержит:
  • Дерево навигации (слева от синего окошка)
  • Рабочее поле (синее окошко)
  • И Build Output (там появляется информация во время построения кода)
Теперь правой клавишей по Dotfuscator1->Add Assemblies. Добавляем все .exe .dll файлы из проекта. В моем случае у меня 2 файла (выберите Input Assemblies в дереве для просмотра):
Далее выберем нужные нам свойства:
  • Honor instrumentation attributes - выбрав галочку, дотфускатор трансформирует все функциональные аттрибуты (к-ые влияют на юзабильность, функциональность программы). Они описаны здесь : msdn
  • Honor obfuscation attributes - для того, чтобы производилось обфусцирование с помощью специальных аттрибутов.
  • Library mode - говорит дотфускатору, что входная сборка является библиотекой.
  • Strip obfuscation attributes - (Strip - снимать (engl)) - снимает аттрибуты запутывания, т.е. не будут видны аттрибты обфусцирования, таким образом над методами не будут красоваться: [Obfuscation(Feature = "trigger", ApplyToMembers = true, Exclude = false)]
Я выбрал вот так:
Вообще дальше лучше ничего не менять, а то напортачите :D, так что сразу нажимайте Build->Build Project. После некоторого времени, В блоге появится вот такая статистика:
Build Finished.
Build Statistics    Total  Renamed  Percent Renamed
Types:                 10        6           60,00%
Methods:               67       58           86,57%
Fields:                34       33           97,06%
Это означает, что построение завершено. В папке Папка вашего проекта\obj\x86\Debug\Dotfuscated появится exe и все ваши dll файлы. Все ваши файлы обфусцированы и при запуске .exe все должно работать.
Результат в папке:

1 коммент.:

Отправить комментарий