Подтвердить что ты не робот

Обфускатор, который поддерживает WPF должным образом

Какие существуют варианты для хорошего инструмента обфускатора для .NET, который надлежащим образом поддерживает WPF в .NET 4.0?

В частности, какие инструменты обфускации обрабатывают переписывание BAML в сборках WPF и обрабатывают ссылки на кросс-сборку в BAML?

В то время как большинство обфускаторов перечисляют поддержку "WPF" и ".NET 3.5" или ".NET 4", на практике они не могут переписать встроенные ссылки BAML, в результате чего вызовы межсетевых сборок с использованием WPF обрабатываются ненадлежащим образом. Это предотвращает их использование в широкомасштабных приложениях WPF.

4b9b3361

Ответ 1

Eazfuscator.NET правильно переименовывает WPF начиная с версии 3.5. Мы прилагаем большие усилия в области исследований и разработок, чтобы создать решение, которое просто работает. Переименование XAML обеспечивается специальным анализатором, который учитывает привязки, команды и все другие аспекты XAML для получения точных результатов. Вы можете попробовать.

Ответ 2

Что ж, WPF сильно зависит от Reflection, и изменение имен ваших свойств может работать некорректно, так как привязка не будет работать правильно. Инструменты Obfuscator не будут обнаруживать строковые ссылки в коде, который может быть внутри вашей ViewModel и так далее. И что бы ты ни делал. Такие инструменты, как Blend, в любом случае могут создавать копии шаблонов и стилей из BAML, и именно поэтому BAML был введен вместо создания исполняемого кода из xaml.

И поскольку BAML представляет собой просто графическое представление, во время выполнения люди могут также использовать инструменты Snoop для определения вашего представления элементов управления во время выполнения.

Тем не менее, существует бесплатный инструмент, который генерирует код WPF за файлом как представление графов объектов чистого CLR вместо BAML, http://xamlgenerator.codeplex.com/ (Отказ от ответственности: этот xamlgenerator является бесплатным инструментом, созданным моей компанией)

Ответ 3

Отказ от ответственности: я работаю в PreEmptive Solutions (создатели Dotfuscator).

Если вы попробовали Dotfuscator некоторое время назад, вам, вероятно, придется попробовать еще раз. Мы постоянно совершенствуем возможности анализа и перезаписи XAML/BAML. Вы можете легко получить новую бесплатную ознакомительную версию с веб-сайта PreEmptive (или связавшись с продажами).

Большинство наших клиентов могут запутать большинство своих приложений WPF/Silverlight/WP7 без значительных исключений. Даже если обфускация BAML нарушает что-то в вашем приложении, вы должны иметь возможность выборочно исключать только те элементы, которые не должны быть переименованы.

Если у вас есть определенный сценарий того, что мы сломаем во время обфускации, пожалуйста, продолжайте и отправляйте его, мы всегда стараемся сделать наш продукт лучше.

В это время единственным другим obfuscator.NET(который я знаю), который утверждает, что может изменять XAML или BAML, является CodeFort. Я явно предвзято, поэтому я позволю вам исследовать продукты и сделать свое собственное мнение:)

Ответ 4

Я попробовал CodeFort в приложении с несколькими сборками Silverlight 4 с частичным успехом. Скремблирование ссылок и строковое шифрование отлично работают и обеспечивают некоторую степень защиты.

Функция переименования в CodeFort - это большой беспорядок. Включение переименования (с поддержкой XAML) во всех моих сборках нарушило приложение. Я попытался исключить из переименования все типы (включая всех участников), что было очень трудоемким из-за плохого UX. Это не принесло жизни приложение.

Отладка и устранение неполадок также не работают. CodeFort не поддерживает файлы PDB. Единственный способ отладить проблему состоял в том, чтобы позволить отладчику прервать все заброшенные исключения. Теперь я вижу, что парсер XAML жалуется на app.xaml, который выглядит нормально.

Теперь я просто придерживаюсь ссылки на скремблирование и строковое шифрование.

Ответ 5

В нашей компании мы используем Agile.NET Obfuscator - он поддерживает приложение WPF и может защищать/шифровать управляемые ресурсы, включая файлы BAML.

введите описание изображения здесь

Декомпиляция с использованием ILSpy:

До (только с кодовым шифрованием)

введите описание изображения здесь

После (с помощью шифрования ресурсов)

введите описание изображения здесь

Ответ 6

ConfuserEx - это обфускатор с открытым исходным кодом, который делает довольно хорошую работу, делая код очень сложным для понимания.

Если WPF exe не работает должным образом после использования одного из пресетов, попробуйте добавить защиту вручную (я обнаружил, что в моем случае "Защита имени" (переименование) нарушала обработку событий): enter image description here