Запутывание приложения Silverlight с помощью Dotfuscator

Страница обновлена :
Дата создания страницы :

О Дотфускаторе

Dotfuscator — это обфускатор, который затрудняет чтение исходного кода при дизассемблировании приложений, написанных с помощью .NET Framework. Dotfuscator доступен как в бесплатной, так и в платной розничной версиях, которые поставляются с Visual Studio.

Бесплатная версия доступна только со многими ограниченными функциями и предположением, что Visual Studio запущена, но любой, у кого установлена Visual Studio, может использовать ее. Платная версия имеет много мощных функций обфускации, которые недоступны в бесплатной версии, но может раздражать, что она предлагается по цене, которую трудно себе позволить широкой публике.

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

Дотфускатор

Парсированный код

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

解析されたコード

Процедура обфускации

Начните с создания приложения Silverlight, как обычно, и выполните сборку Release. Здесь мы создаем приложение, которое размещает только две кнопки.

Release ビルド

В папке Bin\Release папки, в которой находится проект, введите . xap" — это файл пакета, в котором обобщаются программы и файлы, используемые в приложениях Silverlight.

XAP ファイル

На самом деле, этот файл сжимается и компилируется как ZIP-файл, поэтому расширение " zip".

拡張子を .zip に変更

Он был изменен на ZIP-файл.

ZIP ファイル

При открытии файла он содержит файл манифеста и библиотеку DLL. Эта библиотека DLL является скомпилированной версией программы, которая выполняется как приложение.

Кстати, DLL-файл также помещается в папку Release при сборке, поэтому на этот раз мы запутаем этот файл.

ZIP ファイルの中身

В меню Visual Studio выберите Инструменты, а затем выберите PreEmptive Dotfuscator And Analytics.

При первом запуске отобразится диалоговое окно «Лицензионное соглашение», поэтому внимательно прочитайте содержимое, установите флажок «Да, я принимаю лицензионное соглашение» и нажмите кнопку «ОК».

PreEmptive Dotfuscator And Analytics を選択

Запускается упреждающий Dotfuscator And Analytics CE.

PreEmptive Dotfuscator And Analytics CE

Выберите «Входы» в дереве слева и нажмите кнопку «Добавить ввод».

入力の追加

Выберите DLL-файл, созданный во время сборки.

ビルドで生成した DLL ファイルを選択

Выберите добавленный DLL-файл и снимите флажок Режим библиотеки > преобразование XAML.

Если установлен флажок "Режим библиотеки", классы и методы, определенные в общедоступном доступе, не будут запутаны.

Если установлен флажок «Преобразование XAML», классы, определенные в XAML, будут запутаны, но в зависимости от того, как вы его создаете, это вызовет ошибку запуска, поэтому, если она возникает, снимите флажок.

「ライブラリ モード」「XAML の変換」のチェックを外す

По сути, все классы, методы, свойства и имена переменных запутываются, но если вы не хотите запутывать определенное пространство имен или класс из-за сериализации, выберите «Переименовать» в дереве слева, выберите вкладку «Исключить» и проверьте целевое пространство имен или класс.

難読化の除外

В разделе Встроенные правила убедитесь, что установлен флажок Поля для Silverlight и WPF UserControls. Проверка этого параметра приведет к обфускации поля UserControls и успешному запуску. Вы можете снять флажок, если кажется, что он работает правильно, даже после запутывания.

Silverlight および WPF UserControls のフィールド

Когда вы закончите, нажмите кнопку «Построить проект» на панели инструментов.

プロジェクトのビルド

При внесении изменений в проект отобразится диалоговое окно подтверждения сохранения проекта, поэтому нажмите кнопку «Да» для сохранения.

プロジェクト保存確認ダイアログ

Проект называется". xml". Обфускированные файлы сохраняются в том же расположении.

プロジェクト保存

Дождитесь завершения сборки. Обратите внимание, что чем больше программа, тем больше времени занимает ее сборка. Когда он выглядит как рисунок, сборка завершена.

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

ビルド完了

Если выбрать Результаты в дереве слева, можно увидеть сведения об изменении имен классов и методов.

Под именами классов и методов будет значок Dotfuscator и такие имена, как «a» и «b», которые будут запутанным именем. Изменение имени класса или метода на бессмысленное имя таким образом, даже если оно разбирается, может затруднить чтение содержимого исходного кода.

難読化結果

Обфускированный файл создается в папке с именем "Dotfuscated" в папке .xml файла, сохраненного в Save Project. В дополнение к обфускированному файлу был создан файл "Map.xml", но это результат обфускации и не используется.

難読化したファイル

Если разобрать обфускированный файл, можно увидеть, что некоторые имена классов и методов были изменены на "a" или "b".

На этот раз созданный по умолчанию проект был запутан почти так, как это было, поэтому я думаю, что есть образ, что он не так запутан, но я думаю, что эффект обфускации становится более ясным, потому что количество классов и т. Д. Увеличивается по мере роста проекта.

В качестве отступления, . NET Framework и не подлежат переименованию, поскольку они являются сборками, которые уже установлены, например, в Windows.

難読化したコードの解析

Silverlight не использует библиотеки DLL как есть, поэтому они упаковываются как XAP-файлы. Как упоминалось в начале, XAP-файл — это просто изменение расширения ZIP-файла, поэтому он создает ZIP-файл, собирая файлы, содержащиеся в XAP-файле, и обфускированные библиотеки DLL.

Создание ZIP-файла может быть выполнено с помощью стандартных функций ОС.

ファイルを ZIP 化

Создается ZIP-файл.

ZIP ファイル

Расширение изменено на '. xap" и если имя файла отличается, измените его на исходное имя файла пакета.

Поместите XAP-файл в расположение дистрибутива.

XAP ファイルに変更

Пожалуйста, проверьте операцию и посмотрите, правильно ли она работает.

Если он не запускается, проверьте, пока он не работает нормально, уменьшив обфускированный код. Обратите внимание, что Silverlight часто застревает в вопросах, связанных с XAML.

動作確認

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

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