Запутывание приложения Silverlight с помощью Dotfuscator
О Дотфускаторе
Dotfuscator — это обфускатор, который затрудняет чтение исходного кода при дизассемблировании приложений, написанных с помощью .NET Framework. Dotfuscator доступен как в бесплатной, так и в платной розничной версиях, которые поставляются с Visual Studio.
Бесплатная версия доступна только со многими ограниченными функциями и предположением, что Visual Studio запущена, но любой, у кого установлена Visual Studio, может использовать ее. Платная версия имеет много мощных функций обфускации, которые недоступны в бесплатной версии, но может раздражать, что она предлагается по цене, которую трудно себе позволить широкой публике.
Dotfuscator может иметь различные функции, цены и выпуски в зависимости от версии, поэтому, пожалуйста, обратитесь к следующему веб-сайту для получения подробной информации.
Парсированный код
Как упоминалось выше, приложения, созданные с помощью .NET Framework, могут легко читать исходный код путем дизассемблирования, но на самом деле происходит то, что при дизассемблировании файла сборки, как показано на рисунке, можно воспроизвести большую часть исходного кода, такого как пространства имен, имена классов и имена методов.
Процедура обфускации
Начните с создания приложения Silverlight, как обычно, и выполните сборку Release. Здесь мы создаем приложение, которое размещает только две кнопки.
В папке Bin\Release папки, в которой находится проект, введите . xap" — это файл пакета, в котором обобщаются программы и файлы, используемые в приложениях Silverlight.
На самом деле, этот файл сжимается и компилируется как ZIP-файл, поэтому расширение " zip".
Он был изменен на ZIP-файл.
При открытии файла он содержит файл манифеста и библиотеку DLL. Эта библиотека DLL является скомпилированной версией программы, которая выполняется как приложение.
Кстати, DLL-файл также помещается в папку Release при сборке, поэтому на этот раз мы запутаем этот файл.
В меню Visual Studio выберите Инструменты, а затем выберите PreEmptive Dotfuscator And Analytics.
При первом запуске отобразится диалоговое окно «Лицензионное соглашение», поэтому внимательно прочитайте содержимое, установите флажок «Да, я принимаю лицензионное соглашение» и нажмите кнопку «ОК».
Запускается упреждающий Dotfuscator And Analytics CE.
Выберите «Входы» в дереве слева и нажмите кнопку «Добавить ввод».
Выберите DLL-файл, созданный во время сборки.
Выберите добавленный DLL-файл и снимите флажок Режим библиотеки > преобразование XAML.
Если установлен флажок "Режим библиотеки", классы и методы, определенные в общедоступном доступе, не будут запутаны.
Если установлен флажок «Преобразование XAML», классы, определенные в XAML, будут запутаны, но в зависимости от того, как вы его создаете, это вызовет ошибку запуска, поэтому, если она возникает, снимите флажок.
По сути, все классы, методы, свойства и имена переменных запутываются, но если вы не хотите запутывать определенное пространство имен или класс из-за сериализации, выберите «Переименовать» в дереве слева, выберите вкладку «Исключить» и проверьте целевое пространство имен или класс.
В разделе Встроенные правила убедитесь, что установлен флажок Поля для Silverlight и WPF UserControls. Проверка этого параметра приведет к обфускации поля 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-файл.
Расширение изменено на '. xap" и если имя файла отличается, измените его на исходное имя файла пакета.
Поместите XAP-файл в расположение дистрибутива.
Пожалуйста, проверьте операцию и посмотрите, правильно ли она работает.
Если он не запускается, проверьте, пока он не работает нормально, уменьшив обфускированный код. Обратите внимание, что Silverlight часто застревает в вопросах, связанных с XAML.
Хотя инструкции здесь не перечислены, если вы хотите подписать программу, постройте ее в состоянии с задержкой, запутайте сборку, а затем переподпишите. Даже если вы запутаете его во время его подписания, код подписи, прикрепленный во время сборки, и код подписи после обфускации не будут совпадать, поэтому вы не сможете его запустить.
В этой статье я перечислил шаги для бесплатной версии, но если вы используете платную версию, вы можете выполнить более сложную обфускацию и предотвратить саму разборку. Тем не менее, обфускация может вызвать различные неблагоприятные эффекты, поэтому при обфускации необходимо учитывать, будет ли она работать должным образом с самого начала проектирования.