Обфускатор, который правильно поддерживает WPF - PullRequest
31 голосов
/ 14 февраля 2011

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

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

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

Ответы [ 6 ]

5 голосов
/ 05 мая 2013

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

4 голосов
/ 16 февраля 2011

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

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

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

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

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

4 голосов
/ 14 февраля 2011

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

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

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

2 голосов
/ 18 февраля 2011

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

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

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

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

0 голосов
/ 03 апреля 2019

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

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

0 голосов
/ 26 декабря 2017

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

enter image description here

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

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

enter image description here

После (с шифрованием ресурсов)

enter image description here

...