Защита приложений - Создание проекта

Создание проекта обфускации из консоли Inquartos ® Obfuscator

Запускаем консоль через меню Пуск


После запуска появится графическая консоль с пустым проектом




1. В начале надо сохранить новый пустой проект, через меню Проект\Сохранить как...




2. Выбрать директорию и имя проекта для сохранения. Лучше всего выбирать для сохранения корневую директорию Вашего проекта (где лежит Solution (.sln))

Для примера мы воспользуемся тестовым проектом, в котором есть исполнимый модуль TestProject.exe и библиотека ClassLibrary1.dll
Исходный код: TestProject.zip




3. Добавим сборки (TestProject.exe, ClassLibrary1.dll) к проекту обфускации. Добавление осуществляется либо через кнопку добавить, либо через контекстное меню




4. Теперь у нас есть проест обфускации с реальными сборками, дальше будем настраивать опции обфускации

Опции:

  • Опция участия сборки в обфускации - включено
  • Имя ключа - не задано
  • Файл ключа - не задано


5. Настраиваем параметры переименования сборок

  • Переключаемся на вкладку Обфускация (пункты меню слева);
  • Выбираем раздел Переименование;
  • Включаем опцию Разрешить переименование - в результате классы, методы, и т.д. будут переименовываться;
  • Выбираем метод переименования Юникод - после переименования символы будут не читабельного вида;
  • Включаем опцию Сохранить таблицу - для того чтобы в последствии можно было восстановить реальные имена по измененным (например при возникновении Exception);

Пример результата переименования с использованием метода Юникод (просмотр осуществляется с использованием утилиты .Net Reflector):




6. Настраиваем параметры раздела Графа потока управления

  • Выбираем раздел Граф потока управления;
  • Включаем опцию Разрешить обфускацию графа потока управления - в результате код методов будет перемешан (условия, циклы, вызовы функций);

Пример результата обфускации с опцией Граф потока управления (просмотр осуществляется с использованием утилиты .Net Reflector):




7. Настраиваем параметры раздела Удаления событий и свойств

  • Выбираем раздел События и свойства;
  • Включаем опцию Разрешить удаление свойств и событий - в результате в метаданных сборки не останется описания событий и свойств (только функции);



8. Настраиваем параметры раздела Параметры метода

  • Выбираем раздел Параметры метода;
  • Включаем опцию Разрешить переименование параметров метода - в результате в метаданных сборки названия параметров функций будут переименованы;
  • Включаем опцию Не переименовывать открытые методы - в результате при переименовании будут исключены открытые методы (обычно нужно для COM объектов, либо для библиотек компонентов);



9. Настраиваем параметры раздела Шифрование строк

  • Выбираем раздел Шифрование строк;
  • Включаем опцию Разрешить шифрование строк - в результате в метаданных сборки строки будут, храниться в зашифрованном виде, что защищает от поиска фраз в сборке, а также усложняет анализ кода;



10. Настраиваем параметры раздела Создание Win32 оболочки

  • Переключаемся на вкладку Защита;
  • Выбираем раздел Создание Win32 оболочки;
  • Включаем опцию Разрешить создание Win32 оболочки - в результате после обфускации получаем исполняемую сборку TestProject.exe, которая видится как обычное Win32 приложение, просмотреть его с помощью .NET дизассемблеров уже не получится. Так же он становится защищенным от Windows отладчиков;

Пример результата обфускации с опцией Создание Win32 оболочки (просмотр осуществляется с использованием утилиты .Net Reflector):




11. Настраиваем параметры раздела Защита от декомпиляторов

  • Выбираем раздел Защита от декомпиляторов;
  • Включаем опцию Разрешить защиту от декомпиляторов - в результате обфускации - сборка с точки зрения дизассемблеров будет некорректной. Если дизассемблировать сбоку в ней большей частью будут ошибки, а остальная часть будет не корректной с точки зрения семантики языков высокого уровня (C#, VB и.д.) кроме низкого уровня IL ассемблера. Таким образом, изучения такого кода становится крайне сложной или невозможной;



12. Настраиваем параметры раздела Шифрование сборок

  • Выбираем раздел Шифрование сборок;
  • Включаем опцию Разрешить шифрование сборок - в результате обфускации dll сборки будут сжаты (zip) и зашифрованы по алгоритму AES (Rijndael), а в исполняемую сборку интегрируется ключи шифрования и код осуществляющую автоматическую распаковку и загрузку сборки в памяти при первом обращении к элементам сборки;

Пример результата обфускации с опцией Шифрование сборок (просмотр осуществляется с использованием утилиты .Net Reflector):


13. Компиляция проекта обфускации

  • Сохраняем проект;
  • Компилируем - в результате компиляции получатся модули, защищенные от:
    • отладки;
    • декомпиляторов;
    • анализа кода;

Отчет о компиляции:

Обфускация сборки.

> Количество ядер используемых при компиляции: 4

> На входе: "ClassLibrary1.dll"

> Директория результата: ".\OutputObfuscate"

> Framework v 2.0/3.0/3.5

> На входе: "TestProject.exe"


> Декомпиляция "TestProject.exe"
> Декомпиляция "ClassLibrary1.dll"


> Удаление метаданных свойств.
> Удаление метаданных событий.
> Шифрование строк (быстрое).
> Обфускация условных переходов.
> Обфускация вызовов функций (высокий уровень).
> Вставка не декомпилируемых методов (низкий уровень).
> Удаление метаданных свойств.
> Удаление метаданных событий.
> Сделать как 'Загрузчик сборок'.
> Шифрование строк (быстрое).
> Переименование параметров метода...
> Обфускация условных переходов.
> Обфускация вызовов функций (высокий уровень).
> Вставка не декомпилируемых методов (низкий уровень).
> Переименование параметров метода...


> Переименование...
> Сохранение таблицы переименований.


> Компилирование "ClassLibrary1.dll"
> Компилирование "TestProject.exe"
> Активация не декомпилируемых методов.
> Активация не декомпилируемых методов.
> Win32 shell protection. TestProject.exe
> Шифрование сборки. ClassLibrary1.dll

>
> Компиляция завершена.
>


В результата обфускации тестового приложения получили защищенное приложение в директории .\OutputObfuscate:




Пример тестового проекта по которому делалось описание: TestProject (для VS 2005) (zip)

 

Вопросы по данной тематике можно задать на форуме: http://forum.inquartos.ru, Форум - Inquartos Obfuscator или по почте support@netobf.com


 

 

 
15.11.2008
 
 
 
 
10.12  .NET Reactor
15.11  n
15.11  C# ClickOnce
 
01.08  Task Context
01.08  XLSX в Mono