Sobre o Dotfuscator Community e o Visual Studio

O PreEmptive Protection – Dotfuscator fornece uma proteção abrangente de aplicativos .NET que pode ser adaptada facilmente ao seu ciclo de vida de desenvolvimento seguro de software. Use-o para otimizar, proteger e remover aplicativos para desktop, móveis, servidores e incorporados, a fim de ajudar a proteger segredos comerciais e outras propriedades intelectuais (IP), reduzir a pirataria e a falsificação e proteger contra violação e depuração não autorizada. O Dotfuscator funciona em assemblies compilados sem a necessidade de mais programação ou até mesmo de acesso ao código-fonte.

PreEmptive Protection - Dotfuscator

Por que a proteção é importante

É importante proteger sua propriedade intelectual (IP). O código do seu aplicativo contém detalhes de design e implementação que podem ser considerados como IP. No entanto, os aplicativos desenvolvidos no .NET Framework contêm metadados significativos e um código intermediário de alto nível, facilitando a engenharia reversa apenas usando uma das muitas ferramentas automatizadas e gratuitas. Ao interromper e parar a engenharia reversa, você pode evitar a divulgação não autorizada de IP e demonstrar que seu código contém segredos comerciais. O Dotfuscator pode ofuscar seus assemblies .NET para atrapalhar a engenharia reversa, mantendo o comportamento do aplicativo original.

Também é importante proteger a integridade do seu aplicativo. Além da engenharia reversa, atores mal-intencionados podem tentar piratear seu aplicativo, alterar o comportamento do aplicativo no tempo de execução ou manipular dados. O Dotfuscator pode injetar em seu aplicativo a capacidade de detectar usos não autorizados e responder a eles, incluindo violação, depuração de terceiros e dispositivos com raiz.

Para saber mais sobre como o Dotfuscator se encaixa em um ciclo de vida de desenvolvimento seguro de software, confira a página Proteção de aplicativo do SDL da PreEmptive Solutions.

Sobre o Dotfuscator Community

Sua cópia do Microsoft Visual Studio inclui uma cópia gratuita do PreEmptive Protection – Dotfuscator Community para uso pessoal. Esta versão gratuita era conhecida anteriormente como Dotfuscator Community Edition ou Dotfuscator CE. Para obter instruções sobre como instalar a versão do Dotfuscator Community incluída no Visual Studio, confira a página de Instalação.

O Dotfuscator Community oferece uma ampla variedade de serviços de proteção para software aos desenvolvedores, arquitetos e testadores. Entre os exemplos de ofuscação para .NET e outros recursos de Proteção do aplicativo incluídos no Dotfuscator Community estão:

  • Renomeação de identificadores para dificultar a engenharia reversa de assemblies compilados.
  • Antiadulteração para detectar a execução de aplicativos adulterados e encerrar as sessões adulteradas ou responder a elas.
  • Antidepuração para detectar a anexação de um depurador a um aplicativo em execução e encerrar as sessões depuradas ou responder a elas.
  • Proteção contra dispositivos com raiz para detectar se o aplicativo está em execução em um dispositivo Android com raiz e encerrar as sessões nesses dispositivos ou responder a elas.
  • Comportamentos de expiração do aplicativo que codificam uma data de "fim da vida útil" e encerram as sessões expiradas do aplicativo.

Para obter detalhes sobre esses recursos, incluindo como eles se encaixam em sua estratégia de proteção do aplicativo, confira a página Funcionalidades.

O Dotfuscator Community oferece proteção básica pronta para uso. Há ainda mais medidas de proteção do aplicativo disponíveis para usuários registrados do Dotfuscator Community e para os usuários do PreEmptive Protection - Dotfuscator Professional, o principal ofuscador para .NET do mundo. Para saber mais sobre como melhorar o Dotfuscator, confira a página Atualizações.

Introdução

Para começar a usar o Dotfuscator Community no Visual Studio, digite dotfuscator na caixa de pesquisa (Ctrl+Q).

Também é possível obter a versão mais recente do Dotfuscator Community na página de Downloads do Dotfuscator em preemptive.com.

Atualização do Dotfuscator Community 5

Saiba como atualizar para a PreEmptive Protection – Dotfuscator Community 6.

Dependendo do histórico de instalação e da versão do Visual Studio, você pode estar executando o Dotfuscator Community 5, a versão principal anterior. Nesse caso, você deve atualizar, pois é importante garantir que seu código esteja recebendo as medidas de proteção mais recentes. As atualizações estão disponíveis sem custo.

Este artigo explica como determinar qual versão você tem atualmente, como atualizar para a versão 6, se necessário, e quais recursos foram substituídos ou removidos entre as duas versões.

Determinar a versão do Dotfuscator

Se você não tiver certeza de qual versão do Dotfuscator está executando, poderá determinar a versão fazendo um dos seguintes opções:

  • Inicie a GUI ( interface gráfica do usuário ) do Dotfuscator Community acessando o menu Ferramentas do Visual Studio e selecionando PreEmptive Protection – Dotfuscator Community.

    Na GUI do Dotfuscator, abra o menu Ajuda e selecione Sobre... para exibir a tela Sobre.

    Esta tela lista a versão do Dotfuscator.

  • Se você tiver o Dotfuscator integrado ao build com a interface de linha de comando (como com aplicativos Xamarin), também poderá verificar os logs de build para obter o seguinte exemplo:

    Dotfuscator Community Version 5.42.0.9514-e0e25f754
    

    Talvez seja necessário aumentar o detalhamento do build para ver esse texto. Para o Visual Studio, consulte Configurações de detalhamento.

O primeiro inteiro da versão, antes do primeiro ponto ., indica a versão principal do Dotfuscator. Se o primeiro inteiro for 5, você deverá executar as etapas de atualização nesta página, para que possa aproveitar os recursos mais recentes do Dotfuscator 6 e as atualizações de proteção.

Instruções de atualização

Esta seção inclui conjuntos de instruções para atualizar os usos típicos do Dotfuscator Community da versão 5 para a versão 6.

Instalar o Dotfuscator 6

O Dotfuscator Community é distribuído como uma extensão para o Visual Studio. As instruções para instalar o Dotfuscator 6 variam de acordo com a versão do Visual Studio que você tem:

  • Visual Studio 2019 O Dotfuscator Community 6 está incluído nas versões posteriores do Visual Studio 2019 (versão 16.10.0 e posterior). Atualize o Visual Studio 2019 para a última versão. Fazer upgrade do Visual Studio atualizará automaticamente qualquer instalação do Dotfuscator Community 5 para o Dotfuscator Community 6.

    • Se você ainda não tiver o Dotfuscator instalado, atualize o Visual Studio primeiro e confira Instalação.

    • Além das versões com o Visual Studio, você sempre pode obter as versões mais recentes do Dotfuscator Community na página Downloads do Dotfuscator.

  • Visual Studio 2017 Esta versão do Visual Studio é fornecida apenas com o Dotfuscator Community 5. No entanto, você pode instalar ou atualizar para o Dotfuscator Community 6 acessando a página Downloads do Dotfuscator e selecionando o link de download apropriado.

    Execute o arquivo .vsix baixado e siga as solicitações para instalar o Dotfuscator Community 6 no Visual Studio. As instalações existentes do Dotfuscator Community 5 também são atualizadas.

  • Versões anteriores do Visual Studio Não há suporte para o Dotfuscator Community 6 nessas versões do Visual Studio. Recomendamos atualizar para uma versão mais recente do Visual Studio ou atualizar do Dotfuscator Community para o Dotfuscator Professional.

Se você já tiver registrado o Dotfuscator Community 5, esse registro será convertido automaticamente na primeira vez em que você executar o Dotfuscator Community 6.

Atualizar caminhos para a CLI

Se você usou a CLI (interface de linha de comando) do Dotfuscator 5 anteriormente para proteger seu aplicativo, é necessário atualizar o caminho para a CLI em todos os projetos e criar scripts que fazem referência a ele. Ele inclui projetos que usam a integração do Xamarin da Comunidade Dotfuscator.

O motivo pelo qual um caminho para a CLI do Dotfuscator agora pode ser inválido é porque os nomes de alguns dos executáveis instalados com o Dotfuscator Community foram alterados no Dotfuscator 6. Essa alteração torna esses nomes executáveis iguais no Dotfuscator Community e no Dotfuscator Professional.

Executável para... Dotfuscator 5 Dotfuscator 6
GUI dotfuscator.exe dotfuscatorUI.exe
CLI dotfuscatorCLI.exe dotfuscator.exe

Observação

O caminho da CLI também poderá ser inválido se você atualizar entre as versões principais do Visual Studio ou alternar as edições do Visual Studio, pois a CLI do Dotfuscator está instalada no diretório de instalação do Visual Studio. Os sintomas e a solução listados abaixo também se aplicam a esse cenário.

Se o build estiver usando um caminho inválido da CLI do Dotfuscator, você poderá receber erros como um dos seguintes exemplos:

'"[...]\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.

Para atualizar o build para usar o caminho correto da CLI:

  1. Inicie a GUI do Dotfuscator Community acessando o menu Ferramentas do Visual Studio e selecionando Proteção PreEmptiva – Dotfuscator Community.

  2. Na GUI do Dotfuscator Community, acesse o menu Ferramentas e selecione Prompt de Comando do Dotfuscator.

  3. No prompt de comando que é aberto, digite where dotfuscator.exe. Copie o primeiro caminho exibido em um documento de texto sem formatação para referência posterior. Esse caminho é o novo caminho para a CLI do Dotfuscator Community 6.

  4. Abra a configuração do projeto ou do build conforme apropriado ao sistema.

    • Para projetos do Visual Studio, abra o arquivo de projeto (.csproj, .vbprojou .fsproj) como texto sem formatação. Abrir um arquivo de projeto no Visual Studio.

    • Se você usou anteriormente a integração do Xamarin com o Dotfuscator Community para proteger um aplicativo Xamarin, lembre-se de que o Dotfuscator está integrado a cada projeto de aplicativo de modo individual (como MyProject.Android.csproj e MyProject.iOS.csproj) separado e não em projetos de biblioteca compartilhada. Atualize todos os projetos de aplicativo que estão usando o Dotfuscator no momento.

  5. Localize todos os locais em seu projeto ou configuração de build em que um caminho antigo para a CLI do Dotfuscator Community 5 é usado. Normalmente, é um caminho que termina em dotfuscatorCLI.exe.

    • Ao atualizar um projeto usando a integração do Xamarin com o Dotfuscator Community, o caminho antigo é localizado entre as marcas <DotfuscatorXamarinCliPath> e </DotfuscatorXamarinCliPath>.
  6. Substitua os caminhos antigos localizados na etapa 5 pelo novo caminho que você anotou na etapa 3.

    Se um dos caminhos antigos não for um caminho absoluto, você deverá ajustar o novo caminho adequadamente com base no contexto. No exemplo a seguir, a variável de ambiente VSInstallDir foi usada no caminho antigo. Portanto, o novo caminho correspondente também deve fazer o mesmo.

    • Novo caminho da etapa 3: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
    • Caminho antigo no arquivo de projeto: %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe
    • Novo caminho no arquivo de projeto: %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
  7. Se você está usando um sistema de controle do código-fonte, como o Git, verifique se as alterações da etapa 6 são refletidas nesse sistema. Distribua essas alterações para o restante da sua equipe, conforme adequado para seu sistema e organização.

Aviso

Como dotfuscator.exe se refere à GUI (interface gráfica do usuário) no Dotfuscator 5, mas refere-se à CLI (interface de linha de comando) no Dotfuscator 6, tenha cuidado ao atualizar scripts de build compartilhados em vários computadores.

Um computador com o Dotfuscator 5 instalado que executa um script atualizado para o Dotfuscator 6 faz com que o script inicie a interface gráfica do usuário, em vez da interface de linha de comando pretendida. Isso poderá fazer com que o build tenha êxito, mas não aplicar a proteção do Dotfuscator, o que significa que seus pacotes de saída NÃO serão protegidos.

Em outros casos, isso pode causar uma falha de build.

Para evitar esses cenários, atualize o Dotfuscator Community da versão 5 para a versão 6 em todos os computadores e crie scripts ao mesmo tempo.

Atualizar arquivos de configuração do Dotfuscator

Todos os arquivos de configuração do Dotfuscator (como Dotfuscator.xml) que foram criados antes do Dotfuscator 6 precisam ser atualizados.

Se você tentar executar a CLI do Dotfuscator com um arquivo de configuração antigo, receberá erros como os seguintes exemplos:

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.

Importante

Você receberá esse erro e precisa atualizar o arquivo de configuração mesmo se não estiver usando os recursos mencionados.

Para atualizar um arquivo de configuração:

  1. Inicie a GUI ( interface gráfica do usuário ) do Dotfuscator Community acessando o menu Ferramentas do Visual Studio e selecionando Proteção PreEmptiva – Dotfuscator Community.

  2. Abra o arquivo de configuração do Dotfuscator em questão (Ctrl+O).

  3. A seguinte mensagem é exibida na guia Saída do Build:

    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. Salve o arquivo de configuração do Dotfuscator atualizado (Ctrl+S).

  5. Se você está usando um sistema de controle de origem, como o Git, garanta que as alterações no arquivo de configuração do Dotfuscator sejam refletidas nesse sistema. Distribua essas alterações para o restante da sua equipe, conforme adequado para seu sistema e organização.

Atualizar integração do Xamarin

Se você integrou o Dotfuscator Community 5 ao seu projeto Xamarin, uma das etapas exigia que você baixasse tarefas e destinos personalizados do MSBuild, como PreEmptive.Dotfuscator.Xamarin.targets. Esses destinos e tarefas foram atualizados no Dotfuscator Community 6. Portanto, você precisa substituir as versões antigas pelas novas.

Para atualizar seus arquivos de integração do Xamarin:

  1. Localize o diretório em que você baixou inicialmente esses arquivos. O exemplo fornecido nas instruções usa um subdiretório chamado PreEmptive.Dotfuscator.Xamarin, mas você pode ter baixado os arquivos em um diretório diferente, que pode ou não ter arquivos não relacionados ao Dotfuscator.

  2. No diretório localizado na etapa 1, exclua os arquivos relacionados à integração do Dotfuscator com o Xamarin.

  3. Baixe o arquivo ZIP vinculado na versão atual da seguinte seção da Guia do Usuário: Baixe o conjunto personalizado de Destinos e Tarefas do MSBuild para Dotfuscator.

  4. Extraia o conteúdo do arquivo ZIP para o mesmo diretório visto na etapa 1.

  5. Se você está usando um sistema de controle do código-fonte, como o Git, garanta que remoção dos arquivos antigos e a adição dos novos arquivos são refletidas nesse sistema. Dependendo do tipo de sistema, essas alterações podem aparecer como arquivos alterando o conteúdo, em vez de serem substituídos. Distribua essas alterações para o restante da sua equipe, conforme adequado para seu sistema e organização.

Outras subseções nessa página também se aplicam a projetos do Xamarin. Portanto, não deixe de examinar o restante das instruções desta página.

Atualizar referências a bibliotecas de atributos

O Dotfuscator permite configurar determinados recursos por meio de atributos do .NET em seu código-fonte. Se os seus projetos estão usando esses atributos, talvez seja necessário atualizá-los para resolver alterações no Dotfuscator 6.

Atributos de ofuscação

Não houve nenhuma alteração nos Atributos de Ofuscação. Esses atributos são definidos nas bibliotecas de classes base do .NET e o Dotfuscator Community 6 continua a honrá-los.

Verificar atributos

A biblioteca que contém os Atributos de Verificação foi alterada. No Dotfuscator Community 5, ele foi distribuído como um arquivo juntamente ao próprio Dotfuscator. A partir do Dotfuscator Community 6, ele é distribuído como um pacote NuGet público.

Se você tentar criar um projeto do Visual Studio que ainda faz referência ao local antigo, poderá receber erros como os seguintes exemplos:

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?)

Você também pode receber este aviso:

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.

Para atualizar seu projeto para usar o novo local:

  1. Remova a referência de assembly do projeto para PreEmptive.Attributes.dll.

  2. Adicione uma referência PreEmptive.Protection.Checks.Attributes ao pacote do NuGet ao projeto. O pacote está disponível no feed do NuGet padrão, nuget.org.

Os parâmetros ExtendedKey de Cada Atributo de Verificação também foram removidos. Esses parâmetros foram ignorados no Dotfuscator Community 5, mas se o código-fonte os usou independentemente disso, remova esses usos para que seu projeto seja compilado.

Atributos de instrumentação

Os atributos de instrumentação foram usados para configurar o recurso de Análise PreEmptiva no Dotfuscator 5. No entanto, a Análise PreEmptiva foi removido no Dotfuscator 6; confira a Seção PreEmptive Analytics de subseção de recursos removida. Como resultado, os atributos de instrumentação também foram removidos.

Se você tentar criar um projeto do Visual Studio que usou atributos de instrumentação, você poderá obter os mesmos tipos de erros e avisos, conforme observado em Verificar Atributos, embora os nomes de atributo sejam diferentes (por exemplo, FeatureAttribute em vez de TamperCheckAttribute).

Se você tentar executar o Dotfuscator em assemblies já criados e que contenham usos de atributos de instrumentação, receberá erros como os seguintes exemplos:

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

Para corrigir esses problemas, remova todos os usos de atributos de instrumentação do código-fonte. Você também precisa remover as referências de assembly para a biblioteca que definiu os atributos, PreEmptive.Attributes.dll. (Se você também estava usando os atributos de verificação definidos nessa biblioteca, eles foram movidos; confira os Atributos de Verificação acima.)

Recursos removidos

O Dotfuscator Community 6 apresenta alterações interruptivas do Dotfuscator Community 5. Se você está usando o Dotfuscator Community 5, esta seção descreve como lidar com as alterações que podem exigir modificações de build ou afetar a saída do Dotfuscator.

Uma lista completa das alterações está disponível no log de alterações.

PreEmptive Análises

O Dotfuscator 6 não dá suporte à Análise PreEmptiva, incluindo o recurso Verificar Telemetria. No entanto, as próprias verificações (incluindo Notificação de Aplicativo e Ações de Verificação) ainda têm suporte.

Para usar o Dotfuscator 6, atualize o arquivo de configuração para remover as configurações de PreEmptive Analytics.

Se você estava usando atributos no código para configurar a PreEmptive Analytics, remova-os do código-fonte e recompile os assemblies de entrada antes que o Dotfuscator 6 possa proteger esses assemblies.

Se você estava usando Verificar Telemetria para relatar quando uma Verificação detecta um estado inválido (como quando a adulteração é detectada), você pode substituí-la por uma Notificação de Aplicativo personalizada que relata o incidente para Aplicativo do Azure Insights ou outro serviço de sua escolha.

Tipos de aplicativos sem suporte

Os seguintes tipos de aplicativo não têm mais suporte no Dotfuscator 6:

  • Windows Phone
  • WinRT (aplicativos Windows 8)
  • Silverlight
  • Unity (mecanismo de jogo)

Além disso, os aplicativos UWP (Plataforma Universal do Windows ) só têm suporte para cenários Xamarin.

Para proteger outros tipos de aplicativos UWP, atualize para o Dotfuscator Professional e siga as instruções para proteger seu aplicativo.

Entradas sem suporte

O Dotfuscator Community não dá mais suporte a pacotes UWP (Plataforma Universal do Windows) .appx como entradas. Você pode continuar a proteger aplicativos Xamarin direcionados à UWP com a integração do Xamarin. Para proteger outros tipos de aplicativos UWP, atualize para o Dotfuscator Professional e siga as instruções para proteger seu aplicativo.

Além disso, os pacotes do .xap não podem mais ser usados como entradas porque o Silverlight não tem mais suporte.

Introduzir substituições explícitas de método

A opção Renomear para introduzir substituições explícitas de método foi removida do Dotfuscator. Para usar o Dotfuscator 6, atualize o arquivo de configuração para remover essa configuração.

Documentação completa

Confira o Guia do Usuário Completo do Dotfuscator Community em preemptive.com para obter instruções de uso detalhadas, inclusive como começar a usar a interface do usuário do Dotfuscator Community.