Защита в облаках: AppFuscator 2.0

    И вот минуло уже почти три месяца с момента нашего первого анонса облачная защита для .NET приложений. Все это время мы не теряли времени даром и активно работали над улучшением нашего продукта. В выявлении приоритетных направлений и обнаружении наиболее острых проблем нам очень помогло активно включившееся в испытания первой публичной версии хабросообщество. Большое спасибо Вам, от лица нашей команды!

    В новой версии



    Новое ядро WPF обфускации

    • Теперь классы, задействованные в WPF, не исключаются, а обфусцируются наравне со всеми остальными. WPF ресурсы при этом пересобираются
    • Поддерживается линкинг сборок содержащих WPF (что невозможно сделать в ILMerge)
    • Умные автоматические исключения классов и полей недопустимых к переименованию, в том числе для сложных выражений типа PropertyPath
    • BAML ресурсы переименовываются


    image

    (нажмите для увеличения)

    Поддержка Unity 3D

    • Переименовываются все внутренние методы, поля и классы
    • Поддерживаются все режимы, включая String Encryption, External Method Call Hiding, Decomposition

    Для того, чтобы защитить Unity 3D приложение, достаточно отправить на обфускацию сборки с пользовательским кодом из папки Managed, и затем заменить их на защищенные версии.

    Полная совместимость с .NET Framework 4.5

    • Теперь обфускатор одинаково хорошо работает с .NET 2.0, 3.0, 3.5, 4.0, 4.5.
    • Корректно обфусцируется код с async/await
    • Осуществлен переход на последнюю версию Mono Cecil




    Автоматическая интеллектуальная обфускация

    • Новый мощный механизм анализа деревьев иерархии и зависимостей
    • Существенно усовершенствован анализатор кода
    • Автоопределение сериализуемых классов по типовым конструкциям в коде
    • Автоматическое исключение из переименования типов явно или косвенно связанных с сериализацией (например Enum'ы используемые в сериализуемых классах)
    • Корректно обрабатываются проекты с использованием Microsoft Unity Container
    • Интеллектуальный алгоритм выбора соответствующего метода на основе поиска наиболее полного соответствия. Пример случая разрешения неоднозначных перегрузок: Method(int arg) и Method<T>(T arg), где T = int
    • Исправлена проблема совместимости алгоритмов декомпозиции с Expressions и LINQ
    • Поддержка constrained prefix
    • Автоматическое распознавание типов для Activator.CreateInstance и ConstructorInfo.Invoke по приведению к интерфейсу\типу.
    • Доработаны предупреждения, теперь они реже выдаются по мелочам


    Некоторые примеры умного распознавания

    Enums

    string name = "Second";
    var result = (Mode)Enum.Parse(typeof(Mode), name);
    

    Анализатор определяет, что для enum'а Mode используется определение значения по имени, и помечает его вместе со всеми членами, как запрещенный к переименованию.

    Serializer

    var serializer = new XmlSerializer(typeof(RealySerializable));
    var writer = new StringWriter(new StringBuilder());
    serializer.Serialize(writer, new RealySerializable());
    string res = writer.ToString();
    
    public enum DataState
    {
        One,
        Two
    }
    
    public class RealySerializable
    {
        public int MyProperty { get; set; }
        public DataState State { get; set; }
    }
    

    Как видите, RealySerializable и DataState не помечены атрибутом SerializableAttribute, но обнаружив инициализацию XmlSerializer с типом RealySerializable, анализатор кода исключает его из переименования. Аналогичный подход работает и для других сериалайзеров (JSON, Binary и т.п.). Обнаружив, что в сериалзиуемом типе задействован enum DataState, анализатор так же пометит его как сериализуемый.

    CreateInstance by interface

    var instance = Activator.CreateInstance(anyUnresolvedName);
    var work = instance as IRef;
    

    Допустим имя формируется динамически, соответственно анализатор не может понять чему равен anyUnresolvedName, но он находит явное приведение к интерфейсу IRef, и запрещает переименование всех его наследников.

    Аналогично работают и другие случаи, попробуйте сами: appfuscator.com

    Подводя итоги


    В этой версии мы еще плотнее приблизились к нашей заветной цели — сделать так, чтобы Вы вообще не думали об обфускации, а просто получали готовый результат для любого Вашего проекта.

    Очень скоро мы планируем запуск личного кабинета пользователя и еще пару приятных и полезных нововведений. Следите за новостями.

    И конечно, как всегда, мы будем очень рады Вашим пожеланиям и хорошим идеям.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое