Masquer les applications créées à l’aide de Dotfuscator

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

résumé

Étant donné que les applications basées sur le .NET Framework sont créées dans ce qu’on appelle un langage intermédiaire commun, elles peuvent être lues sous une forme proche du code source d’origine à l’aide d’outils de désassemblage, etc. Cette section explique comment obscurcir Dotfuscator, l’obfuscateur fourni avec Visual Studio, pour masquer les noms de classe et de méthode dans un format qui n’est pas facilement lisible.

Nous en parlons ici en utilisant Visual Studio 2010, mais vous pouvez également utiliser Dotfuscator en 2005 et 2008.

Dotfuscator を使用して作成したアプリケーションを難読化する

Environnement d’exploitation

Versions de Visual Studio prises en charge

  • 2005
  • 2008
  • 2010

Vérifier la version de Visual Studio

  • 2005
  • 2008
  • 2010

substance

À propos de Dotfuscator

Dotfuscator est un outil d’obscurcissement qui rend le code source difficile à lire lorsqu’il est désassemblé dans des applications écrites avec le .NET Framework. 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.

Procédure d’obscurcissement

難読化していないアプリケーションの逆アセンブル結果

J’ai mentionné plus tôt que les applications créées avec le .NET Framework peuvent désassembler et lire facilement le code source d’origine, mais la situation réelle est que si vous désassemblez le fichier exe comme indiqué dans la figure de droite, 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.

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

Dotfuscator Software Services

La création d’une application dans Visual Studio et la création d’un fichier exe sont exactement les mêmes que la façon normale de la créer.

Après avoir généré et créé le fichier exe, sélectionnez Outils dans le menu Visual Studio, puis sélectionnez Services logiciels Dotfuscator.

使用許諾契約書

Lorsque vous démarrez pour la première fois, la boîte de dialogue « Contrat de licence » s’affiche comme indiqué dans la figure de droite, alors lisez attentivement le contenu, cochez « Oui, j’accepte le contrat de licence. » et cliquez sur le bouton « OK ».

Dotfuscator Software Services

Les services logiciels Dotfuscator démarrent.

入力アセンブリの追加

Le fichier exe (ou dll) à masquer ne doit pas nécessairement provenir du projet actuellement ouvert.

Sélectionnez Assemblages d’entrée dans l’arborescence de gauche, puis cliquez sur Assemblages d’entrée à droite pour cliquer sur le bouton ....

難読化する exe ファイル

Sélectionnez le fichier exe que vous souhaitez masquer.

追加したアセンブリ

Le fichier exe sélectionné est ajouté à la liste. Si vous souhaitez masquer plusieurs fichiers, cliquez sur le bouton « ... » après la deuxième ligne pour les ajouter.

プロジェクトのビルド

Une fois que vous avez sélectionné l’exe que vous souhaitez masquer, cliquez sur le bouton Générer un projet dans la barre d’outils.

プロジェクトの保存

S’il y a des modifications au projet, la boîte de dialogue de confirmation d’enregistrement du projet s’affiche, alors cliquez sur « Oui » pour enregistrer.

プロジェクトの保存場所指定

Le projet s’appelle « . xml » fichier. Le fichier exe obscurci sera également enregistré au même emplacement, alors enregistrez le fichier .xml dans n’importe quel dossier.

ビルド

La génération démarrera et attendra d’être terminée. Notez que plus le programme est grand, plus il faut de temps pour le construire. S’il ressemble à la figure de droite, la construction est terminée.

Le champ de message affiche des résultats simples, tels que la progression de la génération et son obscurcissement.

難読化結果

Si vous sélectionnez « Résultat » dans l’arborescence de gauche, vous pouvez voir les détails de la façon dont les noms de classe et de méthode ont changé.

Sous les noms de classe et de méthode, il y a une icône Dotfuscator et un nom tel que « a » ou « b », qui est le nom masqué. 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 fichiers exe obfusqués sont créés dans le dossier de .xml fichiers enregistrés dans Save Project, appelés « Dotfuscated », et y sont créés. En plus du fichier exe, un fichier « Map .xml » a été créé, mais c’est le résultat d’une obscurcissement et ne doit pas être utilisé.

難読化したアセンブリの実行時エラー

Les ex obscurcis peuvent être exécutés et utilisés tels quels. Cependant, il existe des cas où il ne peut pas être démarré en raison d’une erreur inconnue comme indiqué dans la figure de droite.

Cette fois, j’ai écrit une application dans WPF, mais comme le fichier XAML de la première fenêtre à afficher est spécifié sous forme de chaîne, le changement de nom dû à l’obscurcissement entraînera la perte de la référence, entraînant une erreur.

Les applications Windows Form référencent directement la classe From afin qu’elles puissent s’exécuter sans erreur, même si elles sont masquées. Cependant, si vous spécifiez un nom de classe, un type enum, etc. par nom, vous devez être prudent car il est possible que la même erreur se produise.

難読化の除外

Si vous ne souhaitez pas masquer une classe ou quelque chose du genre, sélectionnez Renommer dans l’arborescence sur le côté gauche de Dotfuscator et sélectionnez Exclure dans l’onglet du milieu.

Chaque espace de noms, nom de classe, etc. sera affiché dans la liste de droite, alors vérifiez les éléments que vous ne voulez pas obscurcir.

Ici, je ne veux pas changer le nom de classe de la fenêtre à afficher en premier, alors je coche « MainWindow ».

難読化から除外されたクラス

Lorsque vous effectuez la génération, vous pouvez voir qu’il n’y a pas de nom modifié sous le nom de classe dans MainWindows. (La classe App a été convertie en « a »)

難読化したアセンブリの実行

Lorsque vous exécutez le fichier exe masqué, vous pouvez voir que la fenêtre s’affiche correctement.

難読化後の逆アセンブル

Si vous désassemblez le fichier exe obfusqué, vous pouvez voir que le nom de la classe et le nom de la méthode ont été modifiés correctement en " a » ou « b ».

Mais en passant. Les bibliothèques NET Framework telles que les noms de classe ne sont pas susceptibles d’être renommées car il s’agit d’assemblys déjà installés sur Windows et ailleurs.

Cette fois, j’ai obscurci le projet par défaut créé tel quel, donc je pense qu’il y a une image qu’il n’est pas si obscurci, mais je pense que l’effet de l’obscurcissement devient clair parce que le nombre de classes etc. augmente à mesure que le projet grandit.

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.