Описание 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)



    Внешний вид

    NetObf-Protector

    Описание интерфейса:

    • Закрытый проект - При обфускации будут переименовываться даже "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

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

     
    13.03.2009 - [Андрей] Описание NetObf-Protector

    Выбираю объединение сборок. Устанавливаю защиту. Мое приложение запускается, но при использовании модуля где используются подключенные сборки выдает ошибку Мол не найдет метод ...


     
    Тема
    Ваше имя
    Почтовый адрес
    Текст сообщения
    Ключ защиты:
    Защита от спама