|
|
 |
|
|
Продукт "Unity 3D Obfuscator" предназначен для обеспечения защиты Unity 3D приложений от декомпиляции (декомпиляция - просмотра кода на языке высокого уровня). Осуществляет обфускацию .NET сборок, входящих в проект.
Обфускация (от лат. obfuscare, «затенять, затемнять») — запутывание кода программы, то есть приведение исходного текста или исполняемого кода к виду, сохраняющему функциональность программы, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции. «Запутывание» кода может осуществляться на уровне алгоритма, на уровне исходного текста, ассемблерного текста.
Цели обфускации
- Защита программ от декомпиляции и незаконного использования, нарушения авторских прав программистов.
- Оптимизация программы с целью уменьшения размера работающего кода и (если используется некомпилируемый язык) ускорения работы.
Функциональные возможности продукта:
- Символьная обфускация:
- Удаление событий и свойств:
- Метод заключается в удалении метаданных свойств и событий из сборки, в результате чего становится невозможным восстановление или использование данных свойств из языков высокоуровневых языков (C#, Boo, ...)
- Переименование параметров метода:
- Преобразование имен методов, переменных и т.д. в набор неотображаемых символов
Суть метода в замене имен на нечитаемые символы, например символы японского языка. Хотя .Net и работает с кодировкой UTF8, не все декомпиляторы адекватно обрабатывают ее символы. Некоторые заменяют имена с такими символами на более понятные, некоторые проставляют вместо непонятных символов их код, некоторые просто отказываются работать с данными символами.
- Обфускация графа потока исполнения:
- Обфускация условных переходов
Метод заключается во внедрении в тело алгоритма различных ложных условий и рассеивании проверок существующих условий, циклов и безусловных переходов по телу функции. Подобные манипуляции разрушают стандартные схемы построения циклов и условий, используемые компиляторами высокоуровневых языков (C#, VB, ..), что не позволяет в дальнейшем преобразовать код программы в язык высокого уровня. В тоже время, даже анализ IL-кода, с учетом перемешивания и наличия ложных ветвей представляет собой довольно сложную задачу.
- Защита от декомпиляторов:
Защита от декомпиляторов существенно ограничивает возможности восстановления исходного кода приложения на язык ассемблера или языки высокого уровня (C#, VB и т.д.). Для обеспечения защиты от восстановления исходного кода используются следующие методы:
- Внедрение в защищаемое приложение дополнительных методов, обладающих корректной семантикой для языка ассемблера, но не корректной для компиляторов языков высокого уровня, и, соответственно, вызывающие ошибки при восстановлении кода на эти языки.
- Внедрение в защищаемое приложение дополнительных методов, обладающих не корректной семантикой даже для языка ассемблера, и, соответственно, вызывающие ошибки при восстановлении кода на язык ассемблера.
- Внедрение в методы сборки недостижимых в процессе исполнения вызовов функций с некорректным кодом, формирующих скрытые ошибки, проявляющиеся при попытке скомпилировать дизассемблированный код.
- Бинарная обработка сборки для защиты от декомпиляции.
- Внедрение в методы сборки, кода с некорректной для компиляторов языков высокого уровня семантикой (при включенном режиме обфускации "Граф потока управления").
- Преобразование кода методов сборки, в код с некорректной семантикой для языков высокого уровня (при включенном режиме обфускации "Граф потока управления").
- Strong name:
- Поддержка подписи сборок с использованием ключей .SNK или .PFX
- Поддержка .NET Framework:
- .NET Mono;
- .NET Framework v 1.1;
- .NET Framework v 2.0;
- .NET Framework v 3.0;
- .NET Framework v 3.5;
Внешний вид
Описание интерфейса:
- Создать проект защиты - Открывает окно мастера создания проекта обфускации на основе скомпилированных данных в режиме Windows Standalone;
- Распаковать проект в дирепкторию - Распаковыает данные из скомпилированного проекта .unity3d в укзанную директорию. Данный пункт действителен для проектов .unity3d (Web Player, Web Player Streamed);
- Беспланый режим - Актуален только для незарегистрированной версии. Деактивирует функционал, относящийся к платной версии, что исключает возможность случайного использования функций, влекущих установку ограничения времени функционирования программы (один день)
- Переименование имен объектов - Включает опцию переименования имен классов, функций, полей, свойств и событий (для не public объектов);
- Не переименовывать классы - Отключает переименование классов;
- Не переименовывать функции - Отключает переименование имен функций;
- Удаление имформации о свойствах и событиях - Включает опцию удаления метаданных свойств и событий.
- Запутать граф управления - Обеспечивает невозможность востановления исходного кода на языке высокого уровня
- Переименовать параметры метода
- Защита от декомпиляторов - Защитить проект от декомпиляции в коррекный код, как на языке высокого уровня, так и на языке ассемблера
- Посмотреть обновление
-
Открыть проект обфускации либо проект .unity3d (Web Player)
-
Раскрыть список последних проектов
-
Страница запроса и установки лицензии
-
Запускает процесс обфускации
Исключение при переименования - из исходного кода
Иногда бывает нужно указать обфускатору на необходимость исключения имени из процесса обфускации. Например, при наличии в коде обращений к объекту по данному имени с использованием .NET Reflection.
Задавать исключения можно непосредственно в исходном коде (C#, VB и т.д.). Для этих целей предназначен атрибут System.Reflection.Obfuscation
[System.Reflection.Obfuscation( Exclude = true [, ApplyToMembers = true|false [, Feature = "Public"]])]
Например: //
// Исключить из переименования класс 'Class1' со всем вложением
//
[System.Reflection.Obfuscation(Exclude = true,
ApplyToMembers = true)]
public class Class1
{
public void Function1() { }
protected void Function2() { }
internal void Function3() { }
}
//
// Исключить из переименования класс 'Class1' со всеми дочерними
// Public элементами
//
[System.Reflection.Obfuscation(Exclude = true, ApplyToMembers = true,
Feature = "Public")]
public class Class1
{
public void Function1() { }
protected void Function2() { }
internal void Function3() { }
}
//
// Исключить из переименования только метод 'Function2'
//
public class Class1
{
public void Function1() { }
[System.Reflection.Obfuscation(Exclude = true)]
protected void Function2() { }
internal void Function3() { }
}
//
// Исключить из переименования только класс 'Class1' и метод 'Function2'
//
[System.Reflection.Obfuscation(Exclude = true)]
public class Class1
{
public void Function1() { }
[System.Reflection.Obfuscation(Exclude = true)]
protected void Function2() { }
internal void Function3() { }
}
Страница запроса лицензии
Мастер создания проекта обфускации
Результат процесса обфускации
Контакты
Tech-Next.
E-mail:
Форум: www.unity3d.ru
|
|
|
|
|
|
 |
|
|
|
|
|