Masquer votre application Silverlight avec Dotfuscator

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

À propos de Dotfuscator

Dotfuscator est un obscurcisseur qui rend le code source difficile à lire lorsque des applications écrites avec le .NET Framework sont désassemblées. Dotfuscator est disponible dans les versions commerciales gratuites et payantes fournies avec Visual Studio.

La version gratuite n’est disponible qu’avec de nombreuses fonctionnalités limitées et l’hypothèse que Visual Studio est en cours d’exécution, mais toute personne avec Visual Studio installé peut l’utiliser. La version payante possède de nombreuses fonctionnalités d’obscurcissement puissantes qui ne sont pas disponibles dans la version gratuite, mais il peut être ennuyeux qu’elle soit proposée à un prix difficile à payer pour le grand public.

Dotfuscator peut avoir des fonctionnalités, des prix et des éditions différents selon la version, veuillez donc vous référer au site Web suivant pour plus de détails.

Dotfuscator

Code analysé

Comme mentionné ci-dessus, les applications créées avec le .NET Framework peuvent facilement lire le code source d’origine en désassembleant, mais ce qui se passe réellement, c’est que lorsque vous désassemblez un fichier d’assembly comme illustré dans la figure, la plupart du code source d’origine tel que les espaces de noms, les noms de classe et les noms de méthode peuvent être reproduits.

解析されたコード

Procédure d’obscurcissement

Commencez par créer l’application Silverlight comme d’habitude et effectuez une génération release. Ici, nous créons une application qui ne place que deux boutons.

Release ビルド

Dans le dossier Bin\Release du dossier où se trouve le projet, tapez . xap » est un fichier de package qui résume les programmes et les fichiers utilisés dans les applications Silverlight.

XAP ファイル

En fait, ce fichier est compressé et compilé en tant que fichier ZIP, donc l’extension est « . zip ».

拡張子を .zip に変更

Il a été remplacé par un fichier ZIP.

ZIP ファイル

Lorsque vous ouvrez le fichier, il contient un fichier manifeste et une DLL. Cette DLL est la version compilée du programme qui s’exécute en tant qu’application.

Soit dit en passant, le fichier DLL est également placé dans le dossier Release lorsqu’il est construit, donc cette fois, nous allons obscurcir ce fichier.

ZIP ファイルの中身

Dans le menu Visual Studio, sélectionnez Outils, puis PreEmptive Dotfuscator And Analytics.

Lors du premier démarrage, la boîte de dialogue « Contrat de licence » s’affiche, alors lisez attentivement le contenu, cochez « Oui, j’accepte le contrat de licence. » et cliquez sur le bouton « OK ».

PreEmptive Dotfuscator And Analytics を選択

Le CE PreEmptive Dotfuscator And Analytics démarre.

PreEmptive Dotfuscator And Analytics CE

Sélectionnez « Entrées » dans l’arborescence de gauche et cliquez sur le bouton « Ajouter une entrée ».

入力の追加

Sélectionnez le fichier DLL que vous avez généré pendant la génération.

ビルドで生成した DLL ファイルを選択

Sélectionnez le fichier DLL que vous avez ajouté et décochez Mode bibliothèque > conversion XAML.

Si l’option « Mode bibliothèque » est cochée, les classes et les méthodes définies en public ne seront pas obscurcies.

Si l’option « Conversion XAML » est cochée, les classes définies en XAML seront masquées, mais selon la façon dont vous la créez, cela provoquera une erreur de démarrage, donc si elle se produit, décochez cette option.

「ライブラリ モード」「XAML の変換」のチェックを外す

Fondamentalement, toutes les classes, méthodes, propriétés et noms de variables sont obscurcis, mais si vous ne souhaitez pas obscurcir un espace de noms ou une classe spécifique en raison de la sérialisation, sélectionnez « Renommer » dans l’arborescence de gauche, sélectionnez l’onglet « Exclure » et vérifiez l’espace de noms ou la classe cible.

難読化の除外

Sous Règles intégrées, assurez-vous que les champs pour Silverlight et WPF UserControls sont cochés. Si vous cochez cette case, le champ UserControls sera masqué et s’exécutera correctement. Vous pouvez le décocher s’il semble fonctionner correctement même après l’obscurcissement.

Silverlight および WPF UserControls のフィールド

Lorsque vous avez terminé, cliquez sur le bouton « Générer le 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 ». Les fichiers obfusqués sont enregistrés au même emplacement.

プロジェクト保存

Attendez que la génération se termine au démarrage. Notez que plus le programme est grand, plus il faut de temps pour le construire. Quand il ressemble à la figure, la construction est terminée.

Le champ de message montre la progression de la génération et un bref résultat tel que son degré d’obscurcissement.

ビルド完了

Si vous sélectionnez Résultats dans l’arborescence de gauche, vous pouvez voir des détails sur 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 aura une icône Dotfuscator et des noms tels que « a » et « b », qui seront le nom masqué. En changeant le nom de la classe ou du nom de la méthode en un nom sans signification de cette manière, même s’il est désassemblé, cela peut rendre le contenu du code source difficile à lire.

難読化結果

Le fichier obfusqué est créé dans un dossier appelé « Dotfuscated » dans le dossier du fichier .xml enregistré dans Enregistrer le projet. En plus du fichier obfusqué, un fichier « Map.xml » a été créé, mais il est le résultat de l’obscurcissement et n’est pas utilisé.

難読化したファイル

Si vous désassemblez le fichier obscurci, vous pouvez voir que certains noms de classe et de méthode ont été remplacés par « a » ou « b ».

Cette fois, le projet par défaut créé a été obscurci presque 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 plus clair parce que le nombre de classes, etc. augmente à mesure que le projet grandit.

Soit dit en passant, . Les bibliothèques NET Framework et ne sont pas sujettes à changement de nom car il s’agit d’assemblys déjà installés sur Windows, par exemple.

難読化したコードの解析

Silverlight n’utilise pas les DLL telles quelles, elles sont donc empaquetées sous forme de fichiers XAP. Comme mentionné au début, un fichier XAP est juste une modification dans l’extension du fichier ZIP, il crée donc un fichier ZIP en collectant les fichiers contenus dans le fichier XAP et les DLL obscurcies.

La création d’un fichier ZIP peut être effectuée à l’aide des fonctionnalités standard du système d’exploitation.

ファイルを ZIP 化

Un fichier ZIP est créé.

ZIP ファイル

L’extension est remplacée par '. XAP » et si le nom de fichier est différent, remplacez-le par le nom de fichier du package d’origine.

Placez le fichier XAP dans un emplacement de distribution.

XAP ファイルに変更

Veuillez vérifier l’opération et voir si elle fonctionne correctement.

S’il ne démarre pas, vérifiez jusqu’à ce qu’il fonctionne normalement en réduisant le code obscurci. Notez que Silverlight reste souvent bloqué dans les questions liées au code XAML.

動作確認

Bien que les instructions ne soient pas répertoriées ici, si vous souhaitez signer un programme, générez-le dans un état signé différément, obscurcissez l’assembly, puis signez à nouveau. Même si vous l’obscurcissez pendant qu’il est signé, le code de signature attaché au moment de la génération et le code de signature après l’obscurcissement ne correspondront pas, vous ne pourrez donc pas le démarrer.

Dans cet article, j’ai énuméré les étapes pour la version gratuite, mais si vous utilisez la version payante, vous pouvez effectuer un obscurcissement plus complexe et empêcher le désassemblage lui-même. Cependant, l’obscurcissement a le potentiel de causer divers effets indésirables, donc lors de l’obscurcissement est fait, il est nécessaire de déterminer s’il fonctionnera correctement dès le début de la conception.