À propos de Dotfuscator Community et Visual Studio

PreEmptive Protection - Dotfuscator fournit une protection complète des applications .NET qui s’adapte facilement à votre cycle de vie de développement de logiciels sécurisé. Utilisez cet outil pour renforcer, protéger et nettoyer vos applications bureau, mobiles, serveur et intégrées afin de sécuriser les secrets industriels et autres droits de propriété intellectuelle (IP), réduire le piratage et la contrefaçon et vous protéger contre la falsification et le débogage non autorisé. Dotfuscator fonctionne avec des assemblys compilés sans nécessiter de programmation supplémentaire ni même d’accès au code source.

PreEmptive Protection - Dotfuscator

Importance de la protection

Il est important de protéger votre propriété intellectuelle (IP). Le code de votre application contient des informations de conception et d’implémentation qui peuvent être considérées comme une propriété intellectuelle. Toutefois, les applications basées sur le .NET Framework contiennent des métadonnées importantes et un code intermédiaire de haut niveau, ce qui les rend vulnérables face à l’ingénierie inverse en utilisant simplement quelques outils automatisés gratuits. En perturbant et en bloquant toute tentative d’ingénierie inverse, vous pouvez empêcher la divulgation non autorisée de votre propriété intellectuelle et montrer ainsi que votre code contient des secrets commerciaux. Dotfuscator peut obfusquer vos assemblys .NET afin d’empêcher l’ingénierie inverse tout en conservant le comportement original de l’application.

Il est également important de protéger l’intégrité de votre application. En plus de l’ingénierie inverse, des personnes mal intentionnées peuvent chercher à pirater votre application, modifier son comportement lors de l’exécution ou manipuler les données. Dotfuscator s’intègre à votre application pour vous permettre de détecter et répondre à des utilisations non autorisées, notamment la falsification, le débogage par des tiers et les appareils rootés.

Pour plus d’informations sur l’intégration de Dotfuscator dans un cycle de vie de développement de logiciels sécurisé, consultez la page SDL App Protection de PreEmptive Solutions.

À propos de Dotfuscator Community

Votre copie de Microsoft Visual Studio comprend une copie de PreEmptive Protection - Dotfuscator Community, dont vous pouvez profiter gratuitement pour un usage personnel. (Cette version gratuite était connue sous le nom de Dotfuscator Community Edition ou Dotfuscator CE.) Pour des instructions sur l’installation de la version de Dotfuscator Community fournie avec Visual Studio, consultez la page d’installation.

Dotfuscator Community propose toute une gamme de services de protection et de durcissement destinés aux développeurs, architectes et testeurs. Voici des exemples d’obfuscation .NET et d’autres fonctionnalités de protection d’application incluses dans Dotfuscator Community :

  • Renommage des identificateurs afin de compliquer l’ingénierie inverse des assemblys compilés.
  • Anti-effraction pour détecter l’exécution des applications falsifiées et fermer ou répondre aux sessions falsifiées.
  • Anti-débogage pour détecter l’attachement d’un débogueur à une application en cours d’exécution et fermer ou répondre aux sessions déboguées.
  • Appareil anti-rooté pour détecter si l’application s’exécute sur un appareil Android rooté et fermer ou répondre aux sessions sur ces appareils.
  • Comportements d’expiration des applications qui codent la date de « fin de vie » et ferment les sessions d’application qui ont expiré.

Pour plus d’informations sur ces fonctionnalités, notamment leur intégration dans votre stratégie de protection des applications, consultez la page sur les fonctionnalités.

Dotfuscator Community offre une protection de base prête à l’emploi. D’autres mesures de protection d’application sont disponibles pour les utilisateurs inscrits de Dotfuscator Community et les utilisateurs de PreEmptive Protection - Dotfuscator Professional, l’obfuscateur .NET leader mondial. Pour plus d’informations sur l’amélioration de Dotfuscator, consultez la page des mises à niveau.

Bien démarrer

Pour commencer à utiliser Dotfuscator Community depuis Visual Studio, tapez dotfuscator dans la Zone de recherche (Ctrl+Q).

  • Si Dotfuscator Community est déjà installé, la Zone de recherche affiche l’option de démarrage de Dotfuscator Community sous le titre Menus. Pour des détails, consultez la page de démarrage du guide complet de l’utilisateur de Dotfuscator Community.
  • Si Dotfuscator Community n’est pas encore installé, la Zone de recherche affiche à la place Installer PreEmptive Protection - Dotfuscator sous le titre Composants individuels. Consultez la page d’installation pour plus d’informations.

Vous pouvez également obtenir la dernière version de Dotfuscator Community dans la page des téléchargements de Dotfuscator sur preemptive.com.

Mettre à niveau Dotfuscator Community 5

Découvrez comment effectuer une mise à niveau vers PreEmptive Protection – Dotfuscator Community 6.

Selon votre historique d’installation et la version de Visual Studio, vous exécutez peut-être actuellement Dotfuscator Community 5, la version principale précédente. Dans ce cas, vous devez effectuer une mise à niveau, car il est important de vous assurer que votre code bénéficie des dernières mesures de protection. Les mises à niveau sont disponibles gratuitement.

Cet article explique comment déterminer la version que vous possédez actuellement, comment effectuer une mise à niveau vers la version 6 si nécessaire, et les fonctionnalités qui ont été remplacées ou supprimées entre les deux versions.

Déterminer la version de Dotfuscator

Si vous ne savez pas quelle version de Dotfuscator vous exécutez, vous pouvez la déterminer en effectuant l’une des opérations suivantes :

  • Lancez l’interface graphique utilisateur (GUI) de Dotfuscator Community en accédant au menu Outils de Visual Studio et en sélectionnant PreEmptive Protection – Dotfuscator Community.

    À partir de l’interface utilisateur graphique de Dotfuscator, ouvrez le menu Aide, puis sélectionnez À propos... pour afficher l’écran À propos.

    Cet écran indique la version de Dotfuscator.

  • Si Dotfuscator est intégré à votre build avec l’interface de ligne de commande (comme c’est le cas avec les applications Xamarin), vous pouvez également vérifier vos journaux de génération pour une ligne comme l’exemple suivant :

    Dotfuscator Community Version 5.42.0.9514-e0e25f754
    

    Vous devrez peut-être augmenter la verbosité de votre build pour voir ce texte. Pour Visual Studio, consultez Paramètres de verbosité.

Le premier entier de la version, avant le premier point ., indique la version principale de Dotfuscator. Si le premier entier est 5, vous devez suivre les étapes de mise à niveau de cette page afin de bénéficier des dernières fonctionnalités et mises à jour de la protection de Dotfuscator 6.

Instructions de mise à niveau

Cette section contient des ensembles d’instructions pour la mise à niveau des utilisations classiques de Dotfuscator Community de la version 5 vers la version 6.

Installer Dotfuscator 6

Dotfuscator Community est distribué en tant qu’extension pour Visual Studio. Les instructions d’installation de Dotfuscator 6 varient selon la version de Visual Studio dont vous disposez :

  • Visual Studio 2019 Dotfuscator Community 6 est inclus dans les versions plus récentes de Visual Studio 2019 (version 16.10.0 et ultérieures). Effectuez la mise à jour de Visual Studio 2019 vers la dernière version. La mise à jour de Visual Studio met automatiquement à niveau toute installation de Dotfuscator Community 5 vers Dotfuscator Community 6.

    • Si Dotfuscator n’est pas déjà installé, mettez d’abord à jour Visual Studio, puis consultez la section Installation.

    • En plus des versions avec Visual Studio, vous pouvez toujours obtenir les dernières versions de Dotfuscator Community à partir de la page Téléchargements Dotfuscator.

  • Visual Studio 2017 Cette version de Visual Studio est fournie uniquement avec Dotfuscator Community 5. Toutefois, vous pouvez installer ou mettre à niveau vers Dotfuscator Community 6 en accédant à la page Téléchargements Dotfuscator et en sélectionnant le lien de téléchargement approprié.

    Exécutez le fichier .vsix téléchargé et suivez les invites pour installer Dotfuscator Community 6 dans Visual Studio. Les installations existantes de Dotfuscator Community 5 seront également mises à niveau.

  • Versions antérieures de Visual Studio Dotfuscator Community 6 n’est pas pris en charge dans ces versions de Visual Studio. Nous vous recommandons d’effectuer une mise à niveau vers une version plus récente de Visual Studio ou de passer de Dotfuscator Community à Dotfuscator Professional.

Si vous aviez déjà inscrit Dotfuscator Community 5, cette inscription est automatiquement convertie la première fois que vous exécutez Dotfuscator Community 6.

Mettre à jour les chemins d’accès à l’interface CLI

Si vous avez déjà utilisé l’interface de ligne de commande (CLI) de Dotfuscator 5 pour protéger votre application, vous devez mettre à jour le chemin vers l’interface CLI dans tous les projets et générer les scripts qui la référencent. Cela inclut les projets qui utilisent l’intégration Xamarin de Dotfuscator Community.

La raison pour laquelle un chemin d’accès à l’interface CLI de Dotfuscator peut maintenant être non valide est que les noms de certains des exécutables installés avec Dotfuscator Community ont changé dans Dotfuscator 6. Cette modification rend ces noms exécutables identiques dans Dotfuscator Community et Dotfuscator Professional.

Exécutable pour… Dotfuscator 5 Dotfuscator 6
Interface graphique utilisateur dotfuscator.exe dotfuscatorUI.exe
INTERFACE DE LIGNE DE COMMANDE dotfuscatorCLI.exe dotfuscator.exe

Notes

Le chemin d’accès à l’interface CLI peut également être non valide si vous effectuez une mise à niveau entre des versions principales de Visual Studio ou si vous changez d’édition de Visual Studio, car l’interface CLI Dotfuscator est installée sous le répertoire d’installation de Visual Studio. Les symptômes et la solution répertoriés ci-dessous s’appliquent également à ce scénario.

Si votre build utilise un chemin d’accès à l’interface CLI Dotfuscator non valide, vous pouvez obtenir des erreurs telles que l’un des exemples suivants :

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

Pour mettre à jour votre build afin d’utiliser le chemin d’accès à l’interface CLI approprié :

  1. Démarrez le GUI de Dotfuscator Community en accédant au menu Outils de Visual Studio et en sélectionnant PreEmptive Protection – Dotfuscator Community.

  2. Dans le GUI de Dotfuscator Community, accédez au menu Outils et sélectionnez Invite de commandes Dotfuscator.

  3. Dans l’invite de commandes qui s’ouvre, tapez where dotfuscator.exe. Copiez le premier chemin d’accès affiché dans un document texte brut pour référence ultérieure. Ce chemin est le nouveau chemin d’accès à l’interface CLI de Dotfuscator Community 6.

  4. Ouvrez le projet ou la configuration de build en fonction de votre système de build.

    • Pour les projets Visual Studio, ouvrez le fichier projet (.csproj, .vbproj, ou .fsproj) en tant que texte brut. Ouvrez un fichier projet dans Visual Studio.

    • Si vous avez déjà utilisé l’intégration Xamarin de Dotfuscator Community pour protéger une application Xamarin, rappelez-vous que Dotfuscator est intégré dans chaque projet d’application individuel (par exemple, MyProject.Android.csproj et MyProject.iOS.csproj) séparément et non dans des projets de bibliothèque partagée. Mettez à jour tous les projets d’application qui utilisent actuellement Dotfuscator.

  5. Localisez tous les emplacements de votre projet ou de votre configuration de build où un ancien chemin d’accès à l’interface CLI de Dotfuscator Community 5 est utilisé. Il s’agit généralement d’un chemin se terminant par dotfuscatorCLI.exe.

    • Lors de la mise à jour d’un projet en utilisant l’intégration Xamarin de Dotfuscator Community, l’ancien chemin se trouve entre les balises <DotfuscatorXamarinCliPath> et </DotfuscatorXamarinCliPath>.
  6. Remplacez les anciens chemins d’accès situés à l’étape 5 par le nouveau chemin que vous avez noté à l’étape 3.

    Si l’un des anciens chemins d’accès n’est pas un chemin absolu, vous devez ajuster le nouveau chemin en fonction du contexte. Dans l’exemple ci-dessous, la variable d’environnement VSInstallDir était utilisée dans l’ancien chemin : le nouveau chemin correspondant doit donc faire de même.

    • Nouveau chemin d’accès de l’étape 3 : C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
    • Ancien chemin d’accès dans le fichier projet : %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe
    • Nouveau chemin d’accès dans le fichier projet : %VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
  7. Si vous utilisez un système de contrôle de code source, tel que Git, vérifiez que les modifications de l’étape 6 sont reflétées dans ce système. Distribuez ces modifications au reste de votre équipe, selon les besoins de votre système et de votre organisation.

Avertissement

Étant donné que dotfuscator.exe fait référence à l’interface graphique utilisateur (GUI) dans Dotfuscator 5, mais fait référence à l’interface de ligne de commande (CLI) dans Dotfuscator 6, soyez prudent lorsque vous mettez à jour des scripts de build partagés sur plusieurs machines.

Une machine sur laquelle Dotfuscator 5 est installé et qui exécute un script mis à jour pour Dotfuscator 6 entraîne le lancement de l’interface graphique utilisateur par le script, au lieu de l’interface de ligne de commande prévue. Cela peut entraîner la réussite du build même si la protection de Dotfuscator n’est pas appliquée, ce qui signifie que vos packages de sortie ne seront PAS protégés.

Dans d’autres cas, cela peut provoquer un échec de build.

Pour éviter ces scénarios, effectuez la mise à niveau de Dotfuscator Community de la version 5 vers la version 6 sur toutes vos machines et générez des scripts en même temps.

Mettre à niveau des fichiers config de Dotfuscator

Tous les fichiers config de Dotfuscator (comme Dotfuscator.xml) qui ont été créés avant Dotfuscator 6 doivent être mis à niveau.

Si vous essayez d’exécuter l’interface CLI de Dotfuscator avec un ancien fichier de configuration, vous obtenez des erreurs comme dans les exemples suivants :

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.

Important

Vous recevez cette erreur et vous devez mettre à niveau votre fichier config même si vous n’utilisiez pas les fonctionnalités mentionnées.

Pour mettre à niveau un fichier config :

  1. Lancez l’interface graphique utilisateur (GUI) de Dotfuscator Community en accédant au menu Outils de Visual Studio et en sélectionnant PreEmptive Protection – Dotfuscator Community.

  2. Ouvrez le fichier config de Dotfuscator en question (Ctrl+O).

  3. Le message suivant s’affiche dans l’onglet Sortie de 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. Enregistrez le fichier config de Dotfuscator mis à jour (Ctrl+S).

  5. Si vous utilisez un système de contrôle de code source, tel que Git, vérifiez que les modifications apportées au fichier config de Dotfuscator sont reflétées dans ce système. Distribuez ces modifications au reste de votre équipe, selon les besoins de votre système et de votre organisation.

Mettre à jour l’intégration de Xamarin

Si vous avez intégré Dotfuscator Community 5 à votre projet Xamarin, l’une des étapes vous oblige à télécharger des cibles et des tâches MSBuild personnalisées, telles que PreEmptive.Dotfuscator.Xamarin.targets. Ces cibles et ces tâches ayant été mises à jour dans Dotfuscator Community 6, vous devez remplacer les anciennes versions par les nouvelles.

Pour mettre à jour vos fichiers d’intégration Xamarin :

  1. Recherchez le répertoire dans lequel vous avez initialement téléchargé ces fichiers. L’exemple donné dans les instructions utilise un sous-répertoire nommé PreEmptive.Dotfuscator.Xamarin, mais vous avez peut-être téléchargé les fichiers dans un autre répertoire, qui peut ou non contenir des fichiers non liés à Dotfuscator.

  2. Dans le répertoire situé à l’étape 1, supprimez les fichiers liés à l’intégration Xamarin de Dotfuscator.

  3. Téléchargez le fichier ZIP lié à la version actuelle de la section Guide de l’utilisateur suivante : Télécharger l’ensemble personnalisé de cibles et de tâches MSBuild pour Dotfuscator.

  4. Extrayez le contenu du fichier ZIP dans le même répertoire que celui indiqué à l’étape 1.

  5. Si vous utilisez un système de contrôle de code source, tel que Git, assurez-vous que la suppression des anciens fichiers et l’ajout des nouveaux fichiers sont reflétés dans ce système. Selon le type de système, ces modifications peuvent apparaître sous forme de fichiers modifiant le contenu, plutôt que d’être remplacées. Distribuez ces modifications au reste de votre équipe, selon les besoins de votre système et de votre organisation.

D’autres sous-sections de cette page s’appliquent également aux projets Xamarin : veillez donc à consulter les autres instructions de cette page.

Mettre à jour des références aux bibliothèques d’attributs

Dotfuscator vous permet de configurer certaines fonctionnalités via des attributs .NET dans votre code source. Si vos projets utilisaient de tels attributs, vous devrez peut-être les mettre à jour pour résoudre les modifications apportées à Dotfuscator 6.

Attributs d’obfuscation

Aucune modification n’a été apportée aux attributs d’obfuscation. Ces attributs sont définis dans les bibliothèques de classes de base .NET et Dotfuscator Community 6 continue de les respecter.

Attributs de vérification

La bibliothèque contenant les attributs de vérification a changé. Dans Dotfuscator Community 5, elle a été distribuée sous forme de fichier avec Dotfuscator lui-même. À partir de Dotfuscator Community 6, elle est distribuée en tant que package NuGet public.

Si vous essayez de générer un projet Visual Studio qui fait toujours référence à l’ancien emplacement, vous pouvez obtenir des erreurs comme dans les exemples suivants :

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

Vous pouvez également recevoir cet avertissement :

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.

Pour mettre à jour votre projet afin d’utiliser le nouvel emplacement :

  1. Supprimez la référence d’assembly du projet à PreEmptive.Attributes.dll.

  2. Ajoutez la référence de package NuGet PreEmptive.Protection.Checks.Attributes au projet. Le package est disponible sur le flux NuGet par défaut, nuget.org.

Les paramètres ExtendedKey de chaque attribut de vérification ont également été supprimés. Ces paramètres étaient ignorés dans Dotfuscator Community 5, mais si votre code source les utilisait néanmoins, supprimez ces utilisations pour que votre projet soit compilé.

Attributs d’instrumentation

Des attributs d’instrumentation ont été utilisés pour configurer la fonctionnalité PreEmptive Analytics dans Dotfuscator 5. Toutefois, PreEmptive Analytics a été supprimé dans Dotfuscator 6 ; consultez la sous-section Fonctionnalités supprimées PreEmptive Analytics. Par conséquent, les attributs d’instrumentation ont également été supprimés.

Si vous essayez de générer un projet Visual Studio qui utilise des attributs d’instrumentation, vous pouvez obtenir les mêmes types d’erreurs et d’avertissements que ceux indiqués dans les attributs de vérification, bien que les noms des attributs diffèrent (par exemple, FeatureAttribute au lieu de TamperCheckAttribute).

Si vous essayez d’exécuter Dotfuscator sur des assemblys déjà générés qui contiennent des utilisations d’attributs d’instrumentation, vous obtenez des erreurs comme dans les exemples suivants :

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

Pour résoudre ces problèmes, supprimez toutes les utilisations des attributs d’instrumentation de votre code source. Vous devez aussi supprimer les références d’assembly à la bibliothèque qui définissait les attributs, PreEmptive.Attributes.dll. (Si vous utilisiez également les attributs de vérification définis dans cette bibliothèque, ils ont été déplacés ; consultez Attributs de vérification ci-dessus.)

Fonctionnalités supprimées

Dotfuscator Community 6 introduit des changements cassants par rapport à Dotfuscator Community 5. Si vous utilisiez Dotfuscator Community 5, cette section explique comment gérer les modifications qui peuvent nécessiter des modifications de build ou affecter la sortie de Dotfuscator.

La liste complète des modifications est disponible dans le journal des modifications.

PreEmptive Analytics

Dotfuscator 6 ne prend pas en charge PreEmptive Analytics, y compris la télémétrie de vérification. Toutefois, les vérifications elles-mêmes (y compris la notification d’application et les actions de vérification) sont toujours prises en charge.

Pour utiliser Dotfuscator 6, mettez à niveau votre fichier de configuration afin de supprimer les paramètres de PreEmptive Analytics.

Si vous utilisiez des attributs dans le code pour configurer PreEmptive Analytics, supprimez-les de votre code source et regénérez vos assemblys d’entrée avant que Dotfuscator 6 puisse protéger ces assemblys.

Si vous utilisez la télémétrie de vérification pour signaler lorsqu’une vérification détecte un état non valide (par exemple, lorsqu’une falsification est détectée), vous pouvez le remplacer par une notification d’application personnalisée qui signale l’incident à Azure Application Insights ou à un autre service de votre choix.

Types d'applications non pris en charge

Les types d’application suivants ne sont plus pris en charge dans Dotfuscator 6 :

  • Windows Phone
  • WinRT (applications Windows 8)
  • Silverlight
  • Unity (moteur de jeu)

En outre, les applications plateforme Windows universelle (UWP) sont uniquement prises en charge pour les scénarios Xamarin.

Pour protéger d’autres types d’applications UWP, effectuez une mise à niveau vers Dotfuscator Professional et suivez les instructions Protéger votre application.

Entrées non prises en charge

Dotfuscator Community ne prend plus en charge les packages plateforme Windows universelle (UWP) .appx en tant qu’entrées. Vous pouvez continuer à protéger les applications Xamarin ciblant UWP avec l’intégration Xamarin. Pour protéger d’autres types d’applications UWP, effectuez une mise à niveau vers Dotfuscator Professional et suivez les instructions Protéger votre application.

En outre, les packages .xap ne peuvent plus être utilisés comme entrées, car Silverlight n’est plus pris en charge.

Introduire des remplacements de méthode explicites

L’option Renommer pour introduire des remplacements de méthode explicites a été supprimée de Dotfuscator. Pour utiliser Dotfuscator 6, mettez à niveau votre fichier de configuration pour supprimer ce paramètre.

Documentation complète

Consultez le guide de l’utilisateur de Dotfuscator Community sur preemptive.com pour obtenir des instructions d’utilisation détaillées, notamment comment commencer à utiliser l’interface utilisateur de Dotfuscator Community.