Сведения о сообществе Dotfuscator и Visual Studio

PreEmptive Protection - Dotfuscator — это решение для комплексной защиты приложений .NET, которое легко встраивается в жизненный цикл разработки безопасного программного обеспечения. Используйте его, чтобы обеспечить усиленную безопасность и настроить очистку рабочего стола, мобильных устройств, сервера и встроенных приложений. Так вы сможете защитить коммерческие тайны и другую интеллектуальную собственность от пиратства, подделки, изменения данных и несанкционированной отладки. Dotfuscator работает на скомпилированных сборках без необходимости программирования или даже доступа к исходному коду.

PreEmptive Protection - Dotfuscator

Почему важна защита

Защищать интеллектуальную собственность очень важно. Код вашего приложения содержит сведения о проектировании и реализации, которые могут считаться интеллектуальной собственностью. Однако приложения, создаваемые на платформе .NET Framework, содержат большой объем метаданных и промежуточного высокоуровневого кода, поэтому их можно легко изучать и декомпилировать с помощью множества бесплатных автоматизированных средств. Прервав и остановив обратную инженерию, вы можете предотвратить несанкционированное раскрытие IP-адресов и продемонстрировать, что ваш код содержит торговые секреты. Решение Dotfuscator позволяет маскировать ваши сборки .NET (выполнять их обфускацию), чтобы затруднить их изучение. При этом оно сохраняет исходное поведение приложений.

Также важно обеспечить целостность приложения. Помимо декомпиляции, злоумышленники могут попытаться скопировать ваше приложение (компьютерное пиратство), изменить его поведение во время выполнения или манипулировать его данными. Dotfuscator позволяет внедрить в приложение возможность обнаруживать и реагировать на неавторизованное использование: незаконное изменение данных, отладку третьими лицами, запуск на рутованных устройствах и другие случаи.

Дополнительные сведения о том, как Dotfuscator встраивается в жизненный цикл разработки защищенных приложений (SDL), см. на странице SDL App Protection (Защита приложений в рамках цикла SDL) в разделе решений компании PreEmptive.

О Dotfuscator Community

Ваша копия Microsoft Visual Studio включает копию PreEmptive Protection — Dotfuscator Community, доступную для бесплатного личного использования. (Эта бесплатная версия была ранее известна как Dotfuscator Community Edition или Dotfuscator CE.) Инструкции по установке версии Dotfuscator Community, включенной в Visual Studio, см. на странице установки.

Dotfuscator Community предлагает разработчикам, архитекторам и тест-инженерам набор служб для обеспечения и усиления защиты программного обеспечения. Примеры обфускации .NET и других функций защиты приложений, входящих в Dotfuscator Community:

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

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

Dotfuscator Community предоставляет настроенную систему базовой защиты. А зарегистрированные пользователи Dotfuscator Community и пользователи PreEmptive Protection — Dotfuscator Professional, ведущего маскировщика .NET в мире, получают еще больше функций для защиты своих приложений. Сведения о расширении Dotfuscator см. на странице по обновлениям.

Начало работы

Чтобы начать использовать Dotfuscator Community в рамках Visual Studio, введите dotfuscator на панели поиска (CTRL+Q).

Вы также можете скачать последнюю версию Dotfuscator Community на странице загрузок Dotfuscator сайта preemptive.com.

Обновление с Dotfuscator Community 5

Узнайте, как выполнить обновление до PreEmptive Protection — Dotfuscator Community 6.

В зависимости от истории установки и версии Visual Studio, возможно, в настоящее время используется Dotfuscator Community 5, более ранний основной номер версии. В этом случае следует выполнить обновление, поскольку важно убедиться, что вашему коду предоставлены актуальные меры защиты. Обновления доступны бесплатно.

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

Определение версии Dotfuscator

Если вы не уверены, какая версия Dotfuscator установлена, можно определить версию, выполнив одно из следующих действий:

  • Запустите графический пользовательский интерфейс Dotfuscator Community: в Visual Studio откройте меню Сервис и выберите PreEmptive Protection — Dotfuscator Community.

    В графическом интерфейсе Dotfuscator откройте меню Справка и выберите пункт О программе…, чтобы открыть соответствующий экран.

    На этом экране перечислены версии Dotfuscator.

  • Если вы интегрировали Dotfuscator в сборку с помощью интерфейса командной строки (как с приложениями Xamarin), вы также можете проверить журналы сборки на наличие строки, как показано в следующем примере:

    Dotfuscator Community Version 5.42.0.9514-e0e25f754
    

    Чтобы увидеть этот текст, может потребоваться увеличить уровень детализации сборки. Для Visual Studio см. раздел Параметры уровня детализации.

Первое целое число версии до первой точки . указывает основной номер версии Dotfuscator. Если первое целое число равно 5, необходимо выполнить действия по обновлению на этой странице, чтобы воспользоваться преимуществами последних компонентов Dotfuscator 6 и обновлений для защиты.

Инструкции по обновлению

В этом разделе приводятся наборы инструкций по обновлению Dotfuscator Community с версии 5 до версии 6.

Установка Dotfuscator 6

Dotfuscator Community распространяется как расширение для Visual Studio. Инструкции по установке Dotfuscator 6 зависят от используемой версии Visual Studio:

  • Visual Studio 2019 Dotfuscator Community 6 входит в последние версии Visual Studio 2019 (16.10.0 и более поздние). Обновите Visual Studio 2019 до последней версии. При обновлении Visual Studio Dotfuscator Community 5 автоматически обновляется до версии Dotfuscator Community 6.

    • Если вы еще не установили Dotfuscator, сначала обновите Visual Studio, а затем см. раздел Установка.

    • Помимо Visual Studio вы всегда можете получить последние версии Dotfuscator Community со страницы Загрузки Dotfuscator.

  • Visual Studio 2017 Эта версия Visual Studio поставляется только с Dotfuscator Community 5. Однако можно установить Dotfuscator Community 6 или выполнить обновление, перейдя на страницу Загрузки Dotfuscator и выбрав соответствующую ссылку для загрузки.

    Запустите скачанный файл .vsix и следуйте инструкциям на экране, чтобы установить Dotfuscator Community 6 в Visual Studio. Существующие установки Dotfuscator Community 5 также обновляются.

  • Более ранние версии Visual Studio Dotfuscator Community 6 не поддерживается в этих версиях Visual Studio. Рекомендуется выполнить обновление до более новой версии Visual Studio или обновить Dotfuscator Community до Dotfuscator Professional.

Если вы ранее зарегистрировали Dotfuscator Community 5, эта регистрация автоматически преобразуется при первом запуске Dotfuscator Community 6.

Обновление путей к CLI

Если вы ранее использовали интерфейс командной строки Dotfuscator 5 для защиты приложения, необходимо обновить путь к интерфейсу командной строки в любых проектах и скриптах сборки, ссылающихся на него. Сюда входят проекты, в которых используется интеграция Dotfuscator Community с Xamarin.

Путь к Dotfuscator CLI может быть недопустимым, так как имена некоторых исполняемых файлов, установленных с Dotfuscator Community, были изменены в Dotfuscator 6. В результате этого изменения в Dotfuscator Community и Dotfuscator Professional используются одинаковые имена файлов.

Исполняемый файл для… Dotfuscator 5 Dotfuscator 6
GUI dotfuscator.exe dotfuscatorUI.exe
CLI dotfuscatorCLI.exe dotfuscator.exe

Примечание.

Путь к CLI может также быть недопустимым, если вы выполняете обновление до следующего основного номера версии Visual Studio или переключаете выпуски Visual Studio, так как Dotfuscator CLI устанавливается в каталоге установки Visual Studio. Симптомы и решения, перечисленные ниже, также применяются к этому сценарию.

Если в вашей сборке используется недопустимый путь к Dotfuscator CLI, могут возникать ошибки, как в следующих примерах:

'"[...]\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe"' is not recognized as an internal or external command, operable program or batch file.

The command ""[...]\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe" Dotfuscator.xml" exited with code 9009.

When the DotfuscatorXamarinEnabled property is 'true', the Dotfuscator command line interface specified by DotfuscatorXamarinCliPath ('[...]\DotfuscatorCE\dotfuscatorCLI.exe') must exist.

Чтобы обновить сборку для использования правильного пути к CLI, выполните следующие действия:

  1. Запустите графический пользовательский интерфейс Dotfuscator Community: в Visual Studio откройте меню Сервис и выберите PreEmptive Protection — Dotfuscator Community.

  2. В графическом интерфейсе Dotfuscator Community откройте меню Сервис и выберите пункт Командная строка Dotfuscator.

  3. В открывшейся командной строке введите where dotfuscator.exe. Скопируйте первый путь, отображаемый в текстовом документе, для последующего использования. Это новый путь к CLI в Dotfuscator Community 6.

  4. Откройте проект или конфигурацию сборки в соответствии с системой сборки.

    • Для проектов Visual Studio откройте файл проекта (.csproj.vbprojили.fsproj) в виде обычного текста. Откройте файл проекта в Visual Studio.

    • Если ранее вы использовали интеграцию Dotfuscator Community с Xamarin для защиты приложения Xamarin, помните, что Dotfuscator интегрируется в каждый проект приложения (например MyProject.Android.csproj и MyProject.iOS.csproj) по отдельности, а не в проекты общей библиотеки. Обновите все проекты приложений, которые в настоящее время используют Dotfuscator.

  5. Найдите в проекте или конфигурации сборки все места, где используется старый путь к CLI в Dotfuscator Community 5. Обычно это путь, который заканчивается на dotfuscatorCLI.exe.

    • При обновлении проекта с помощью интеграции Dotfuscator Community Xamarin старый путь расположен между <DotfuscatorXamarinCliPath> тегами и </DotfuscatorXamarinCliPath> тегами.
  6. Замените старые пути, найденные в шаге 5, на новый путь, записанный на шаге 3.

    Если один из старых путей не является абсолютным, следует настроить новый путь в зависимости от контекста. В приведенном ниже VSInstallDir примере переменная среды использовалась в старом пути, поэтому соответствующий новый путь должен сделать то же самое.

    • Новый путь из шага 3: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
    • Старый путь в файле проекта: %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe
    • Новый путь в файле проекта: %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
  7. Если используется система управления версиями, например Git, убедитесь, что изменения, выполненные на шаге 6, отражаются в этой системе. Распространите эти изменения на остальную часть команды в зависимости от требований вашей системы и организации.

Предупреждение

Поскольку dotfuscator.exe относится к графическому пользовательскому интерфейсу в Dotfuscator 5, но ссылается на интерфейс командной строки (CLI) в Dotfuscator 6, будьте внимательны при обновлении скриптов сборки, совместно используемых на нескольких компьютерах.

Компьютер с dotfuscator 5 установлен, который запускает скрипт, обновленный для Dotfuscator 6, приводит к запуску скрипта графического пользовательского интерфейса вместо предполагаемого интерфейса командной строки. Сборка может быть выполнена успешно, но к ней не будет применяться защита Dotfuscator, то есть исходящие пакеты НЕ будут защищены.

В других случаях это может привести к сбою сборки.

Чтобы избежать этих ситуаций, обновите Dotfuscator Community с версии 5 до версии 6 на всех компьютерах и скриптах сборки одновременно.

Обновление файлов конфигурации Dotfuscator

Необходимо обновить все файлы конфигурации Dotfuscator (например Dotfuscator.xml), созданные до Dotfuscator 6.

Если вы пытаетесь запустить CLI Dotfuscator со старым файлом конфигурации, вы получите такие ошибки, как показано в следующих примерах:

Dotfuscator Engine Initialization error: PreEmptive Analytics, Authenticode signing, and the Introduce Explicit Method Overrides setting are no longer supported. Please open your Dotfuscator config in the Config Editor which automatically upgrades it.

Важно!

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

Чтобы обновить файл конфигурации, выполните следующие действия:

  1. Запустите графический пользовательский интерфейс Dotfuscator Community: в Visual Studio откройте меню Сервис и выберите PreEmptive Protection — Dotfuscator Community.

  2. Откройте соответствующий файл конфигурации Dotfuscator (CTRL+O).

  3. На вкладке "Выходные данные сборки" отображается следующее сообщение:

    PreEmptive Analytics, Authenticode signing, and the Introduce Explicit Method Overrides setting are no longer supported. The associated settings have been removed. Please save your upgraded Dotfuscator config.

  4. Сохраните обновленный файл конфигурации Dotfuscator (CTRL+S).

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

Обновление интеграции с Xamarin

Если вы интегрировали Dotfuscator Community 5 в проект Xamarin, на одном из шагов вы должны были загрузить пользовательские целевые объекты и задачи MSBuild, например PreEmptive.Dotfuscator.Xamarin.targets. Эти целевые объекты и задачи были обновлены в Dotfuscator Community 6, поэтому вам необходимо заменить старые версии новыми версиями.

Чтобы обновить файлы интеграции Xamarin, выполните следующие действия:

  1. Откройте каталог, в который изначально были скачаны эти файлы. В примере, приведенном в инструкциях, используется подкаталог с именем PreEmptive.Dotfuscator.Xamarin, но файлы, возможно, скачаны в другой каталог, в котором могут находиться файлы, не связанные с Dotfuscator.

  2. В каталоге, найденном на шаге 1, удалите файлы, связанные с интеграцией Dotfuscator и Xamarin.

  3. Скачайте ZIP-файл, связанный с текущей версией следующего раздела руководство пользователя: Загрузка пользовательского набора целевых сборок и задач MSBuild для Dotfuscator.

  4. Извлеките содержимое ZIP-файла в тот же каталог, который указан на шаге 1.

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

Другие подразделы на этой странице также применяются к проектам Xamarin, поэтому обязательно просмотрите остальные инструкции этой страницы.

Обновление ссылок на библиотеки атрибутов

Dotfuscator позволяет настраивать определенные функции с помощью атрибутов .NET в исходном коде. Если проекты использовали такие атрибуты, может потребоваться обновить их для соответствия изменениями в Dotfuscator 6.

Атрибуты обфускации

Атрибуты обфускации остались прежними. Эти атрибуты определены в библиотеках базовых классов .NET, и Dotfuscator Community 6 продолжает их учитывать.

Атрибуты проверки

Библиотека, содержащая атрибуты проверки, изменилась. В Dotfuscator Community 5 она предоставлялась как файл вместе с Dotfuscator. Начиная с Dotfuscator Community 6 она будет распространяться как общедоступный пакет NuGet.

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

The type or namespace name 'PreEmptive' could not be found (are you missing a using directive or an assembly reference?)

The type or namespace name 'TamperCheckAttribute' could not be found (are you missing a using directive or an assembly reference?)

Также могут возникать предупреждения:

Could not resolve this reference. Could not locate the assembly "PreEmptive.Attributes". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

Чтобы обновить проект для использования нового расположения, сделайте следующее:

  1. Удалите ссылку на сборку проекта в PreEmptive.Attributes.dll.

  2. Добавьте в проект ссылку на пакет NuGet PreEmptive.Protection.Checks.Attributes. Пакет доступен в веб-канале NuGet по умолчанию — nuget.org.

Параметры ExtendedKey каждого атрибута проверки также были удалены. Эти параметры были проигнорированы в Dotfuscator Community 5, но если исходный код использовал их независимо от того, удалите эти действия для компиляции проекта.

Атрибуты инструментирования

Атрибуты инструментирования использовались для настройки функции PreEmptive Analytics в Dotfuscator 5. Однако функция PreEmptive Analytics удалена из Dotfuscator 6. См. подраздел PreEmptive Analytics в разделе "Удаленные компоненты". В результате атрибуты инструментирования также были удалены.

Если вы пытаетесь создать проект Visual Studio, использующий атрибуты инструментирования, вы можете получить те же виды ошибок и предупреждений, что и в check Attributes, хотя имена атрибутов отличаются (например, FeatureAttribute вместо TamperCheckAttribute).

При попытке запустить Dotfuscator на уже созданных сборках, содержащих использование атрибутов инструментирования, вы получите такие ошибки, как в следующих примерах:

The PreEmptive.Attributes.FeatureAttribute attribute (annotating SomeNamespace.SomeType::SomeMethod) is not recognized by this version of Dotfuscator.

Чтобы устранить эти проблемы, удалите все использование атрибутов инструментирования из исходного кода. Кроме того, необходимо удалить ссылки на сборки в библиотеку, определяющую атрибуты PreEmptive.Attributes.dll. (Если вы также использовали атрибуты проверки, определенные в этой библиотеке, они были перемещены; см. раздел Атрибут проверки выше.)

Удаленные компоненты

В Dotfuscator Community 6 появились критические изменения по сравнению с Dotfuscator Community 5. Если вы использовали Dotfuscator Community 5, в этом разделе описано, что делать с изменениями, которые могут потребовать модификации сборки или повлиять на выходные данные Dotfuscator.

Полный список изменений доступен в журнале изменений.

Предварительная аналитика

Dotfuscator 6 не поддерживает PreEmptive Analytics, включая проверку телеметрии. Однако сами проверки (включая уведомления приложений и действия по проверке) по-прежнему поддерживаются.

Чтобы использовать Dotfuscator 6, обновите файл конфигурации, чтобы удалить параметры предварительной аналитики.

Если вы использовали атрибуты в коде для настройки PreEmptive Analytics, удалите их из исходного кода и перестроите входные сборки до того, как Dotfuscator 6 сможет защитить эти сборки.

Если вы использовали проверку телеметрии для сообщения о том, что проверка обнаружила недопустимое состояние (например, при обнаружении незаконных изменений), вы можете заменить ее пользовательским уведомлением приложения, которое сообщает об инциденте в Azure Application Insights или другую службу по вашему усмотрению.

Неподдерживаемые типы приложений

Следующие типы приложений больше не поддерживаются в Dotfuscator 6:

  • Windows Phone
  • WinRT (приложения Windows 8)
  • Silverlight
  • Unity (игровой обработчик)

Кроме того, приложения универсальной платформы Windows (UWP) поддерживаются только для сценариев Xamarin.

Чтобы защитить другие типы приложений UWP, выполните обновление до Dotfuscator Professional и следуйте инструкциям по защите приложения.

Неподдерживаемые входные данные

Dotfuscator Community больше не поддерживает пакеты универсальной платформы Windows (UWP) .appx в качестве входных данных. Вы можете и дальше защищать приложения Xamarin, предназначенные для UWP, с помощью интеграции с Xamarin. Чтобы защитить другие типы приложений UWP, выполните обновление до Dotfuscator Professional и следуйте инструкциям по защите приложения.

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

Введение в явные переопределения методов

Из Dotfuscator удален параметр переименования для предоставления явных переопределений методов. Чтобы использовать Dotfuscator 6, обновите файл конфигурации, чтобы удалить этот параметр.

Полная документация

Подробные инструкции по его использованию, в том числе как приступить к работе с пользовательским интерфейсом Dotfuscator Community, см. в полном руководстве пользователя Dotfuscator Community на сайте preemptive.com.