Acerca de Dotfuscator Community y Visual Studio

PreEmptive Protection – Dotfuscator proporciona una protección integral para aplicaciones .NET que se adapta fácilmente a su ciclo de desarrollo de software seguro. Se utiliza para consolidar, proteger y eliminar aplicaciones de escritorio, móviles, de servidor e insertadas a fin de ayudar a salvaguardar secretos comerciales y propiedad intelectual de otra índole, reducir la piratería y la falsificación y proteger contra la manipulación y la depuración no autorizada. Dotfuscator funciona en ensamblados compilados sin necesidad de más programación ni de obtener acceso al código fuente.

PreEmptive Protection - Dotfuscator

Por qué es importante la protección

Es importante proteger su propiedad intelectual. El código de su aplicación contiene detalles de diseño e implementación que se pueden considerar propiedad intelectual. Sin embargo, las aplicaciones que se basan en .NET Framework contienen metadatos importantes y código intermedio de alto nivel, con lo que quedan expuestas a la utilización de técnicas de ingeniería inversa mediante el uso de alguna de las muchas herramientas gratuitas y automatizadas que existen. Al interrumpir y detener la utilización de técnicas de ingeniería inversa, se puede evitar la divulgación no autorizada de la propiedad intelectual y demostrar que el código contiene secretos comerciales. Dotfuscator puede ofuscar los ensamblados de .NET para obstaculizar la utilización de técnicas de ingeniería inversa y, al mismo tiempo, mantener el comportamiento de la aplicación original.

También es importante proteger la integridad de la aplicación. Además de técnicas de ingeniería inversa, los actores malintencionados pueden tratar de piratear su aplicación, modificar su comportamiento en tiempo de ejecución o manipular los datos. Dotfuscator puede dotar a su aplicación de la capacidad de detectar y responder a usos no autorizados, incluidos los casos de manipulación, depuración de terceros y dispositivos con privilegios de usuario root.

Para obtener más información acerca de cómo Dotfuscator se ajusta a un ciclo de vida de desarrollo de software seguro, consulte la página de protección de aplicaciones de SDL de PreEmptive Solutions.

Información sobre Dotfuscator Community

Su copia de Microsoft Visual Studio incluye una copia de PreEmptive Protection - Dotfuscator Community, gratis para uso personal. (Esta versión gratuita se conocía anteriormente como Dotfuscator Community Edition o Dotfuscator CE). Para instrucciones sobre cómo instalar la versión de Dotfuscator Community que se incluye con Visual Studio, consulte la página de instalación.

Dotfuscator Community ofrece una gama de servicios de consolidación y protección de software para desarrolladores, arquitectos y evaluadores. A continuación se presentan algunos ejemplos de ofuscación de .NET y otras características de protección de aplicaciones incluidas en Dotfuscator Community:

Para obtener información acerca de estas características, incluyendo cómo encajan en su estrategia de protección de aplicaciones, consulte la página de funcionalidades.

Dotfuscator Community ofrece protección básica inmediata. Pero hay más medidas de protección para aplicaciones disponibles para los usuarios registrados de Dotfuscator Community, y para los usuarios de PreEmptive Protection - Dotfuscator Professional, el ofuscador de .NET líder en el mundo. Para obtener información sobre cómo mejorar Dotfuscator, consulte la página de actualizaciones.

Introducción

Para empezar a usar Dotfuscator Community de Visual Studio, escriba dotfuscator en el cuadro de búsqueda (CTRL+Q).

  • Si ya está instalado Dotfuscator Community, el cuadro de búsqueda mostrará la opción para iniciar Dotfuscator Community en el encabezado Menús. Para conocer los detalles, consulte la página de introducción de la guía de usuario completa de Dotfuscator Community.
  • Si Dotfuscator Community todavía no está instalado, el cuadro de búsqueda mostrará en su lugar una opción para instalar PreEmptive Protection - Dotfuscator en el encabezado Componentes individuales. Consulte la página de instalación para obtener más información.

También puede obtener la versión más reciente de Dotfuscator Community en la página de descargas de Dotfuscator en preemptive.com.

Actualización desde Dotfuscator Community 5

Obtenga información sobre cómo llevar a cabo la actualización a PreEmptive Protection - Dotfuscator Community 6.

Según el historial de instalación y la versión de Visual Studio, es posible que esté ejecutando Dotfuscator Community 5, la versión principal anterior. Si es así, debe llevar a cabo la actualización, ya que es importante asegurarse de que el código dispone de las medidas de protección más recientes. Las actualizaciones están disponibles sin cargo alguno.

En este artículo se explica cómo determinar la versión que tiene actualmente, cómo llevar a cabo la actualización a la versión 6, si es necesario, y qué características se han reemplazado o quitado entre las dos versiones.

Determinación de la versión de Dotfuscator

Si no sabe con certeza qué versión de Dotfuscator está ejecutando, puede determinar la versión mediante una de las siguientes opciones:

  • Inicie la interfaz gráfica de usuario (GUI) de Dotfuscator Community haciendo clic en el menú Herramientas de Visual Studio y seleccionando PreEmptive Protection - Dotfuscator Community.

    En la GUI de Dotfuscator, abra el menú Ayuda y seleccione Acerca de... para mostrar la pantalla Acerca de.

    En esta pantalla se muestra la versión de Dotfuscator.

  • Si tiene Dotfuscator integrado en la compilación con la interfaz de la línea de comandos (por ejemplo, con las aplicaciones de Xamarin), también puede comprobar los registros de compilación para obtener una línea como la del ejemplo siguiente:

    Dotfuscator Community Version 5.42.0.9514-e0e25f754
    

    Es posible que tenga que aumentar el nivel de detalle de la compilación para ver este texto. Para Visual Studio, consulte Configuración de nivel de detalle.

El primer entero de la versión, antes del primer punto ., indica la versión principal de Dotfuscator. Si el primer entero es 5, debe realizar los pasos de actualización en esta página para que pueda aprovechar las últimas características y actualizaciones de protección de Dotfuscator 6.

Instrucciones de actualización

En esta sección se incluyen conjuntos de instrucciones para actualizar las utilizaciones típicas de Dotfuscator Community de la versión 5 a la 6.

Instalación de Dotfuscator 6

Dotfuscator Community se distribuye como una extensión para Visual Studio. Las instrucciones para instalar Dotfuscator 6 varían según la versión de Visual Studio que tenga:

  • Visual Studio 2019: Dotfuscator Community 6 se incluye en versiones posteriores de Visual Studio 2019 (versión 16.10.0 y posteriores). Actualice Visual Studio 2019 a la última versión. Al actualizar Visual Studio, se actualiza automáticamente cualquier instalación de Dotfuscator Community 5 a Dotfuscator Community 6.

    • Si aún no tiene Dotfuscator instalado, actualice primero Visual Studio y, después, consulte Instalación.

    • Además de las versiones disponibles con Visual Studio, siempre puede obtener las versiones más recientes de Dotfuscator Community de la página Descargas de Dotfuscator.

  • Visual Studio 2017: esta versión de Visual Studio solo incluye Dotfuscator Community 5. Para instalar Dotfuscator Community 6 o llevar a cabo la actualización a dicha versión, vaya a la página Descargas de Dotfuscator y seleccione el vínculo de descarga adecuado.

    Ejecute el archivo .vsix descargado y siga las indicaciones para instalar Dotfuscator Community 6 en Visual Studio. También se actualizarán las instalaciones de Dotfuscator Community 5 existentes.

  • Versiones anteriores de Visual Studio: Dotfuscator Community 6 no es compatible con estas versiones de Visual Studio. Se recomienda llevar a cabo una actualización a una versión más reciente de Visual Studio o actualizar de Dotfuscator Community a Dotfuscator Professional.

Si previamente había registrado Dotfuscator Community 5, ese registro se convertirá automáticamente la primera vez que ejecute Dotfuscator Community 6.

Actualización de las rutas a la CLI

Si anteriormente usó la interfaz de la línea de comandos (CLI) de Dotfuscator 5 para proteger la aplicación, debe actualizar la ruta a la CLI en cualquier proyecto y compilar los scripts que hacen referencia a ella. Incluye proyectos que usan la integración de Xamarin de Dotfuscator Community.

La razón por la que una ruta a la CLI de Dotfuscator puede no ser válida ahora es porque los nombres de algunos de los ejecutables instalados con Dotfuscator Community han cambiado en Dotfuscator 6. Dicho cambio hace que estos nombres ejecutables sean los mismos en Dotfuscator Community y Dotfuscator Professional.

Ejecutable para... DotFuscator 5 DotFuscator 6
GUI dotfuscator.exe dotfuscatorUI.exe
CLI dotfuscatorCLI.exe dotfuscator.exe

Nota

La ruta a la CLI también puede no ser válida si actualiza entre versiones principales de Visual Studio o cambia las ediciones de Visual Studio, ya que la CLI de Dotfuscator se instala en el directorio de instalación de Visual Studio. Los síntomas y la solución que se enumeran a continuación también se aplican a este escenario.

Si la compilación usa una ruta a la CLI de Dotfuscator no válida, puede obtener errores como los de los ejemplos siguientes:

'"[...]\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 actualizar la compilación y usar la ruta correcta a la CLI:

  1. Inicie la GUI de Dotfuscator Community haciendo clic en el menú Herramientas de Visual Studio y seleccionando PreEmptive Protection - Dotfuscator Community.

  2. En la GUI de Dotfuscator Community, vaya al menú Herramientas y seleccione el símbolo del sistema de Dotfuscator.

  3. En el símbolo del sistema que se abre, escriba where dotfuscator.exe. Copie la primera ruta que se muestra en un documento de texto sin formato para consultarla más adelante. Esta ruta es la nueva ruta a la CLI de Dotfuscator Community 6.

  4. Abra el proyecto o la configuración de compilación según corresponda para el sistema de compilación.

    • Para los proyectos de Visual Studio, abra el archivo del proyecto (.csproj, .vbproj o .fsproj) como texto sin formato. Abra un archivo del proyecto en Visual Studio.

    • Si anteriormente usó la integración de Xamarin de Dotfuscator Community para proteger una aplicación de Xamarin, recuerde que Dotfuscator se integra en cada proyecto de la aplicación individual (como MyProject.Android.csproj y MyProject.iOS.csproj) por separado y no en proyectos de biblioteca compartidos. Actualice todos los proyectos de la aplicación que actualmente usan Dotfuscator.

  5. Busque cualquier lugar dentro del proyecto o la configuración de compilación donde se usa una ruta antigua a la CLI de Dotfuscator Community 5. Normalmente es una ruta que termina en dotfuscatorCLI.exe.

    • Al actualizar un proyecto mediante la integración de Xamarin de Dotfuscator Community, la ruta antigua se ubicará entre las etiquetas <DotfuscatorXamarinCliPath> y </DotfuscatorXamarinCliPath>.
  6. Reemplace las rutas antiguas que se encuentran en el paso 5 por la nueva ruta que anotó en el paso 3.

    Si una de las rutas antiguas no es una ruta absoluta, debe ajustar la nueva ruta adecuadamente en función del contexto. En el ejemplo siguiente, la variable de entorno VSInstallDir se usó en la ruta antigua, por lo que la nueva ruta correspondiente debería hacer lo mismo.

    • Nueva ruta del paso 3: C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
    • Ruta antigua en el archivo del proyecto: %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe
    • Nueva ruta en el archivo del proyecto: %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
  7. Si usa un sistema de control de código fuente, como Git, asegúrese de que los cambios del paso 6 se reflejan en ese sistema. Distribuya estos cambios al resto del equipo, según sea adecuado para el sistema y la organización.

Advertencia

Dado que dotfuscator.exe hace referencia a la interfaz gráfica de usuario (GUI) en Dotfuscator 5, pero hace referencia a la interfaz de la línea de comandos (CLI) en Dotfuscator 6, tenga cuidado al actualizar los scripts de compilación compartidos entre varias máquinas.

Una máquina con Dotfuscator 5 instalado que ejecute un script actualizado para Dotfuscator 6 hará que el script inicie la interfaz gráfica de usuario, en lugar de la interfaz de la línea de comandos deseada. Esto puede hacer que la compilación se realice correctamente a pesar de no aplicar la protección de Dotfuscator, lo que significa que los paquetes de salida NO se protegerán.

En otros casos podría provocar, por el contrario, un error de compilación.

Para evitar estos escenarios, actualice Dotfuscator Community de la versión 5 a la 6 en todas las máquinas y compile scripts al mismo tiempo.

Actualización de archivos de configuración de Dotfuscator

Se deberán actualizar todos los archivos de configuración de Dotfuscator (como Dotfuscator.xml) que se crearon antes de Dotfuscator 6.

Si intenta ejecutar la CLI de Dotfuscator con un archivo de configuración antiguo, recibe errores como los siguientes:

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

Recibe este error y tiene que actualizar el archivo de configuración, aunque no usara las características mencionadas.

Para actualizar un archivo de configuración:

  1. Inicie la interfaz gráfica de usuario (GUI) de Dotfuscator Community haciendo clic en el menú Herramientas de Visual Studio y seleccionando PreEmptive Protection - Dotfuscator Community.

  2. Abra el archivo de configuración de Dotfuscator en cuestión (Ctrl+O).

  3. Se muestra el mensaje siguiente en la pestaña Resultados de la compilación:

    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. Guarde el archivo de configuración de Dotfuscator actualizado (Ctrl+S).

  5. Si usa un sistema de control de código fuente, como Git, asegúrese de que los cambios en el archivo de configuración de Dotfuscator se reflejan en ese sistema. Distribuya estos cambios al resto del equipo, según sea adecuado para el sistema y la organización.

Actualización de la integración de Xamarin

Si ha integrado Dotfuscator Community 5 en el proyecto de Xamarin, uno de los pasos que debe realizar es descargar destinos y tareas de MSBuild personalizados, como PreEmptive.Dotfuscator.Xamarin.targets. Estos destinos y tareas se han actualizado en Dotfuscator Community 6, por lo que debe reemplazar las versiones anteriores por las nuevas versiones.

Para actualizar los archivos de integración de Xamarin:

  1. Busque el directorio donde descargó inicialmente estos archivos. En el ejemplo que se proporciona en las instrucciones se usa un subdirectorio denominado PreEmptive.Dotfuscator.Xamarin, pero es posible que haya descargado los archivos en otro directorio, que también puede o no tener archivos no relacionados con Dotfuscator.

  2. En el directorio ubicado en el paso 1, elimine los archivos relacionados con la integración de Xamarin de Dotfuscator.

  3. Descargue el archivo ZIP vinculado en la versión actual de la siguiente sección del manual del usuario sobre la descarga del conjunto personalizado de destinos y tareas de MSBuild para Dotfuscator.

  4. Extraiga el contenido del archivo ZIP en el mismo directorio que se indicó en el paso 1.

  5. Si usa un sistema de control de código fuente, como Git, asegúrese de que la eliminación de los archivos antiguos y la adición de los nuevos archivos se reflejan en ese sistema. En función del tipo de sistema, estos cambios pueden aparecer como archivos que cambian el contenido, en lugar de reemplazarse. Distribuya estos cambios al resto del equipo, según sea adecuado para el sistema y la organización.

Otras subsecciones de esta página también se aplican a los proyectos de Xamarin, así que asegúrese de revisar el resto de las instrucciones de esta página.

Actualización de referencias a bibliotecas de atributos

Dotfuscator permite configurar determinadas características a través de los atributos .NET en el código fuente. Si los proyectos usaban estos atributos, es posible que deba actualizarlos para abordar los cambios en Dotfuscator 6.

Atributos de ofuscación

No se ha realizado ningún cambio en los atributos de ofuscación. Estos atributos se definen en las bibliotecas de clase base de .NET y Dotfuscator Community 6 los sigue respetando.

Atributos de comprobación

La biblioteca que contiene los atributos de comprobación ha cambiado. En Dotfuscator Community 5 se distribuyó como un archivo junto con el propio Dotfuscator. A partir de Dotfuscator Community 6 se distribuye como un paquete NuGet público.

Si intenta compilar un proyecto de Visual Studio que todavía hace referencia a la ubicación anterior, puede obtener errores como los siguientes:

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

También puede recibir 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 actualizar el proyecto para que use la nueva ubicación:

  1. Mueva la referencia de ensamblado del proyecto a PreEmptive.Attributes.dll.

  2. Agregue la referencia PreEmptive.Protection.Checks.Attributes de paquete NuGet al proyecto. El paquete está disponible en la fuente de NuGet predeterminada, nuget.org.

También se han quitado los parámetros ExtendedKey de cada atributo de comprobación. Estos parámetros se omitían en Dotfuscator Community 5, pero si el código fuente los usaba independientemente, quite estas utilizaciones para que el proyecto se compile.

Atributos de instrumentación

Los atributos de instrumentación se usaron para configurar la característica PreEmptive Analytics en Dotfuscator 5. Sin embargo, PreEmptive Analytics se ha quitado en Dotfuscator 6; consulte la subsección sobre la característica eliminada PreEmptive Analytics. Como resultado, también se han quitado los atributos de instrumentación.

Si intenta compilar un proyecto de Visual Studio que usa atributos de instrumentación, puede obtener los mismos tipos de errores y advertencias que se indica en Atributos de comprobación, aunque los nombres de atributo varían (por ejemplo, FeatureAttribute en lugar de TamperCheckAttribute).

Si intenta ejecutar Dotfuscator en ensamblados ya creados que contienen utilizaciones de atributos de instrumentación, recibe errores como los siguientes:

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

Para corregir estos errores, quite todas las utilizaciones de los atributos de instrumentación del código fuente. También deberá mover las referencias de ensamblado a la biblioteca que definió los atributos, PreEmptive.Attributes.dll. Si también usaba los atributos de comprobación definidos en esta biblioteca, estos se han movido; consulte los atributos de comprobación mencionados anteriormente.

Características eliminadas

Dotfuscator Community 6 presenta cambios importantes frente a Dotfuscator Community 5. Si ha estado usando Dotfuscator Community 5, en esta sección se describe cómo tratar los cambios que podrían requerir modificaciones de compilación o afectar a la salida de Dotfuscator.

Hay una lista completa de los cambios disponibles en el registro de cambios.

Analíticas preferentes

Dotfuscator 6 no admite PreEmptive Analytics, incluida la telemetría de comprobación. Sin embargo, todavía se admiten las propias Comprobaciones (incluidas las Notificaciones de la aplicación y las Acciones de comprobación).

Para usar Dotfuscator 6, deberá actualizar el archivo de configuración para quitar la configuración de PreEmptive Analytics.

Si usaba atributos en el código para configurar PreEmptive Analytics, quítelos del código fuente y recompile los ensamblados de entrada antes de que Dotfuscator 6 pueda proteger esos ensamblados.

Si usaba Telemetría de comprobación para informar cuando una Comprobación detecta un estado no válido (por ejemplo, cuando se detecta la manipulación), puede reemplazarlo por una Notificación de la aplicación personalizada que informe del incidente a Azure Application Insights u otro servicio de su elección.

Tipos de aplicación no admitidos

Los siguientes tipos de aplicación ya no se admiten en Dotfuscator 6:

  • Windows Phone
  • WinRT (aplicaciones de Windows 8)
  • Silverlight
  • Unity (motor de juegos)

Además, las aplicaciones para la Plataforma universal de Windows (UWP) solo se admiten en escenarios de Xamarin.

Para proteger otros tipos de aplicaciones para UWP, actualice a Dotfuscator Professional y siga las instrucciones indicadas en Protect Your App (Proteger su aplicación).

Entradas no admitidas

Dotfuscator Community ya no admite paquetes .appx de la Plataforma universal de Windows (UWP) como entradas. Puede seguir protegiendo las aplicaciones de Xamarin destinadas a la UWP con la integración de Xamarin. Para proteger otros tipos de aplicaciones para UWP, actualice a Dotfuscator Professional y siga las instrucciones indicadas en Protect Your App (Proteger su aplicación).

Además, los paquetes .xap ya no se pueden usar como entradas porque ya no se admite Silverlight.

Inserción de invalidaciones de método explícitas

La opción de cambiar el nombre para incluir invalidaciones de método explícitas se ha quitado de Dotfuscator. Para usar Dotfuscator 6, actualice el archivo de configuración para quitar esta configuración.

Documentación completa

Consulte la guía de usuario completa de Dotfuscator Community en preemptive.com para instrucciones detalladas de uso; por ejemplo, cómo empezar a usar la interfaz de usuario de Dotfuscator Community.