Masquer les applications créées à l’aide de Dotfuscator (version Visaul Studio 2022)

Page mise à jour :
Date de création de la page :

résumé

Les applications basées sur la série de frameworks .NET sont créées dans ce qu’on appelle un langage intermédiaire commun, de sorte qu’elles peuvent être lues sous une forme proche du code source d’origine à l’aide d’outils de désassemblage et autres. Cette section explique comment masquer des classes et des noms de méthodes dans des formats facilement illisibles à l’aide de la version gratuite de Dotfuscator, l’outil d’obscurcissement fourni avec Visual Studio.

Il est décrit à l’aide de Visual Studio 2022, mais il peut également être utilisé dans d’autres versions de Dotfuscator.

Environnement d’exploitation

Visual Studio
  • Visual Studio 2022

À propos de Dotfuscator

Dotfuscator est un outil d’obscurcissement qui rend le code source difficile à lire lorsqu’il est désassemblé pour les applications écrites avec la famille de frameworks .NET (ci-après dénommée .NET). Dotfuscator est fourni avec Visual Studio gratuitement et moyennant des frais.

La version gratuite n’est pas disponible à moins que la plupart de ses fonctionnalités ne soient limitées ou que Visual Studio soit démarré, mais tout le monde peut l’utiliser tant que Visual Studio est installé. La version payante a de nombreuses fonctionnalités d’obscurcissement puissantes qui ne se trouvent pas dans la version gratuite, mais elle est offerte à un prix difficile à payer pour le grand public.

Dotfuscator a des fonctionnalités, des prix et des éditions différents en fonction de la version, veuillez donc vous référer à la page d’accueil suivante pour plus de détails.

A propos du démontage

J’ai mentionné plus tôt que les applications écrites en .NET peuvent facilement désassembler et lire le code source d’origine, mais ce qui se passe réellement, c’est que si vous désassemblez un fichier .exe (ou un fichier .dll) comme illustré dans la figure suivante, vous pouvez presque reproduire le code source d’origine, tel que l’espace de noms, le nom de classe, le nom de la méthode, etc.

Types de programmes qui devraient être obscurcis

Il s’applique principalement aux programmes distribués et exécutés à des utilisateurs non spécifiés. Par exemple, les applications de bureau. Inversement, les applications Web qui ont des difficultés à accéder directement aux fichiers programme sont moins importantes pour l’obscurcissement.

Cette fois, nous examinons un projet dans WPF, une application de bureau.

Installation de Dotfuscator

Cette application est fournie avec Visual Studio 2022 mais n’est pas incluse dans l’installation standard (dans certains Visual Studios précédents, elle peut être installée à partir de zéro).

Pour ajouter un Dotfuscator : Démarrez Visaul Studio et sélectionnez Obtenir des outils et des fonctionnalités à partir d’Outils.

Sélectionnez « Composants individuels » dans l’onglet ci-dessus, cochez « Protection préventive - Dotfuscator » dans le groupe « Outils de code » et cliquez sur le bouton Installer dans le coin inférieur droit. Ce faisant, fermez la console Visual Studio.

Procédure d’obscurcissement

Décrit les étapes à suivre pour rendre ces noms confus et obscurcis.

Créez une application dans Visual Studio, générez .exe fichier, puis cliquez sur le fichier . Créez un fichier dll. Jusqu’à présent, c’est la même chose que de créer une application régulière. L’application que vous créez doit être destinée à ceux créés dans la version Release. (Parce que vous ne publiez généralement pas dans Debug.)

Après avoir créé .exe ou .dll, sélectionnez Outils dans le menu Visual Studio, puis choisissez Protection préventive - Communauté Dotfuscator.

L’écran d’enregistrement s’affiche, mais il n’est pas obligatoire, donc si cela n’est pas nécessaire, cliquez sur le bouton Annuler tel quel.

Restez et cliquez sur le bouton OK.

Dotfuscator démarre. L’application fonctionne toute seule, vous pouvez donc masquer les fichiers qui ne sont pas pertinents pour le projet actuellement ouvert. (Dans le cas de la version gratuite de l’application elle-même, il est supposé que Visual Studio est démarré.) )

Dans cet article, je vais masquer un projet d’application WPF .NET 6.0 généré avec des valeurs par défaut comme exemple.

Sélectionnez « Entrée » dans la liste de gauche et cliquez sur le bouton « + ».

Sélectionnez le fichier programme que vous souhaitez masquer. Les applications écrites dans le .NET Framework ont souvent obscurci .exe, mais dans .NET et .NET Core, les programmes sont souvent des entités .dll. Les applications NET WPF auront également des entités .dll, alors choisissez .dll.

Il sera ajouté à la liste. S’il se compose de plusieurs DLL, ajoutez-en plusieurs.

Après avoir ajouté le fichier cible, cliquez sur le bouton « Générer » dans la barre d’outils.

Il vous sera demandé où enregistrer le fichier de projet masqué, alors spécifiez-le. L’emplacement peut être arbitraire, mais il peut également être l’emplacement de sortie d’un programme obscurci. Il enregistre votre entrée et ouvrira ce fichier de projet d’obscurcissement si vous souhaitez l’obscurcir à nouveau. L’extension est « . xml ».

Si la génération a démarré et que « Build completed » s’affiche dans le message ci-dessous, cela indique une réussite. L’écran affiche le journal de génération et une liste de classes et de variables obscurcies.

Sélectionnez « Résultat » dans la liste de gauche pour voir les détails de la façon dont les noms de classe et de méthode ont changé.

Les noms de classe et les noms de méthode dans l’arborescence de droite, tels que « -> », sont les noms après l’obscurcissement. En changeant le nom de la classe ou du nom de la méthode par un nom sans signification comme celui-ci, vous pouvez rendre le contenu du code source difficile à lire, même s’il est désassemblé.

Les programmes obfusqués sont enregistrés dans un dossier appelé « Dotfuscated » à l’endroit où vous avez enregistré le fichier projet.

Map.xml est un fichier de résultats d’obscurcissement, vous pouvez donc le supprimer en toute sécurité.

Étant donné que .NET 6.0 WPF ne peut pas être démarré par une DLL seule, copiez « XXXX.exe » et « XXXX.runtimeconfig.json » générés au moment de la sortie de génération dans le même dossier et démarrez-le. Si vous pouvez commencer normalement, il n’y a pas de problème pour le moment. Si vous ne pouvez pas le démarrer, il se peut que vous manquiez des fichiers ou que vous créiez un programme qui devient incohérent en raison de l’obscurcissement.

Si vous analysez le programme qui a été réellement obscurci, vous verrez quelques traces d’obscurcissement. La première feuille de la figure ci-dessous est avant l’obscurcissement, et la seconde est après l’obscurcissement.

Notez que les noms de classe définis dans les bibliothèques .NET ne sont pas susceptibles d’être renommés car ils existent en tant qu’infrastructure.

Cette fois, j’ai obscurci le projet par défaut créé tel quel, donc je pense qu’il y a une image qui n’est presque pas obscurcie, mais je pense que l’effet de l’obscurcissement devient clair car plus le projet est grand, plus les classes uniques augmenteront.

De plus, bien que nous ayons inclus la procédure dans la version gratuite cette fois-ci, la version payante permet une obscurcissement plus complexe et empêche également le démontage lui-même. Cependant, l’obscurcissement a divers effets indésirables et le potentiel de se produire, donc lorsque l’obscurcissement est effectué, il est nécessaire de le faire tout en considérant si cela fonctionnera correctement dès le début de la conception.

Exclure l’obscurcissement

Si vous avez des noms de classe ou de propriété que vous ne souhaitez pas masquer, vous pouvez les exclure.

Pendant le chargement de l’assemblage, sélectionnez Renommer > Exclure sur le côté gauche de l’écran. Puisque le contenu de l’assemblage est affiché, je vais vérifier ceux que je ne veux pas obscurcir.

Il est possible d’exclure l’obscurcissement à un niveau granulaire, mais je pense qu’il est plus facile de l’ajuster sur la base d’un espace de noms.

Mode Bibliothèque

Lorsque vous sélectionnez l’assemblage d’entrée, vous pouvez voir que « Mode bibliothèque » est coché.

« Mode bibliothèque » consiste à attacher à des DLL qui peuvent être appelées par d’autres programmes. Si cette option est cochée, les classes publiques et les propriétés appelées par d’autres programmes sont exclues de l’obscurcissement.

Cependant, en général, il est rare d’exposer une bibliothèque appelée générativement à partir d’autres programmes, et je pense qu’elle est souvent obscurcie aux applications qui fonctionnent seules, il est donc acceptable de supprimer cette vérification.

Obfuscation de .exe à fichier unique (non confirmée)

Les enquêtes sur cet élément dans Visual Studio 2022 ne sont actuellement pas confirmées.

Ce sera probablement de l’obscurcissement avec MSBuild, mais je le mets en attente en raison du manque d’informations pour le moment.