Бесплатный обфускатор NetObf-Protector

 

"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() { } }

     

     

     
    01.12.2008

    Отзывы и комментарии

     


     
    Тема
    Ваше имя
    Почтовый адрес
    Текст сообщения
    Ключ защиты:
    Защита от спама
     
     
     
     
    10.12  .NET Reactor
    15.11  n
    15.11  C# ClickOnce
     
    01.08  Task Context
    01.08  XLSX в Mono