"NetObf-Protector" — бесплатная утилита, с простым, удобным и интуитивно понятным интерфейсом, обеспечивающая .NET приложения базовыми средствами защиты.
Назначение:
- Защита программ от ре-инжиниринга.
- Уменьшение размера рабочего кода с целью оптимизации программы в сторону увеличения производительности.
Функциональные возможности:
- Символьная обфускация:
- Защита текстовой информации:
- Объединение сборок;
- Strong name:
- Поддержка подписи сборок с использованием ключей .SNK или .PFX
- Поддержка .NET Framework:
- .NET Framework v 1.1;
- .NET Framework v 2.0;
- .NET Framework v 3.0;
- .NET Framework v 3.5;
Расширенные функциональные возможности (Inquartos Obfuscator)
Внешний вид
Описание интерфейса:
- Закрытый проект - При обфускации будут переименовываться даже "public" объекты;
- Плагин или открытая библиотека - При обфускации "public" объекты будут исключены из процесса переименования;
- Шифровать строки - Включает опцию шифрования строк;
- Объединить сборки - Включает опцию объединения сборок;
- Установить защиту - Запускает процесс обфускации;
- О программе
- Обновить - Обновляет список сборок
- Пустой проект - Создает пустой проект обфускации
- Открыть проект
- Сохранить проект
Исключение при переименовании - из исходного кода
Указать обфускатору объекты, переименование которых не требуется, можно непосредственно в исходном коде программы (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() { }
}