Partager via


Obfuscation déclarative à l'aide d'attributs personnalisés

.NET Framework version 2.0 fournit deux nouveaux attributs personnalisés conçus pour simplifier l'obfuscation automatique des assemblys sans devoir installer des fichiers de configuration. Cette section explique comment utiliser ces attributs avec Dotfuscator. Vous êtes censé bien connaître l'utilisation des attributs personnalisés et leur application dans votre langage de développement.

System.Reflection.ObfuscateAssemblyAttribute

Cet attribut est utilisé au niveau de l'assembly pour indiquer à Dotfuscator comment obfusquer l'ensemble de l'assembly. L'affectation de la valeur false à la propriété AssemblyIsPrivate indique à Dotfuscator d'exécuter l'assembly en mode bibliothèque. Si vous affectez à cette propriété la valeur true, Dotfuscator n'exécute pas l'assembly en mode bibliothèque et attribue autant de nouveaux noms que possible, y compris pour les types et membres publics.

System.Reflection.ObfuscationAttribute

Cet attribut est utilisé sur les types et leurs membres ; il indique à Dotfuscator comment obfusquer l'élément.

Propriété Feature

Cette propriété de type chaîne a la valeur « all » par défaut. Cette propriété est fournie pour vous permettre de configurer plusieurs transformations par obfuscation de manière indépendante en balisant un élément avec plusieurs ObfuscationAttributes, chacun ayant une chaîne des fonctionnalités différente.

Dotfuscator mappe les chaînes des fonctionnalités « default » et « all » à « renaming ».

Voici une liste d'autres chaînes des fonctionnalités comprises par Dotfuscator.

Chaîne des fonctionnalités Action
renaming L'attribut configure l'attribution d'un nouveau nom.
controlflow L'attribut configure l'obfuscation du flux de contrôle.
stringencryption L'attribut configure le chiffrement de chaînes.
trigger L'attribut configure la réduction en marquant l'élément annoté en tant que point d'entrée.
conditionalinclude L'attribut configure la réduction en incluant de manière conditionnelle l'élément annoté.

Si nécessaire, vous pouvez mapper d'autres chaînes des fonctionnalités à « renaming » via la feuille de propriétés Chaînes de mappage des fonctionnalités sous l'onglet Installation.

Dotfuscator ignore les attributs dont il ne comprend pas les chaînes des fonctionnalités.

Propriété Exclude

Cette propriété booléenne a la valeur True par défaut. La valeur True indique que l'élément avec balises doit être exclu des transformations impliquées par la propriété Feature. La valeur False indique que l'élément avec balises doit être inclus.

La version actuelle de Dotfuscator prend en charge une seule valeur de la propriété Exclude pour une transformation donnée. Dotfuscator ignore les règles dont les valeurs Exclude ne sont pas prises en charge. Les valeurs prises en charge sont résumées dans la liste ci-après.

Chaîne des fonctionnalités Valeur prise en charge pour Exclude
renaming True
controlflow True
stringencryption False
trigger False
conditionalinclude False

Propriété ApplyToMembers

Cette propriété booléenne a la valeur True par défaut. Lorsque l'attribut est appliqué à un assembly ou à un type, la valeur True indique que l'opération doit être également appliquée à tous les membres (y compris les types imbriqués) des types sélectionnés. La valeur False indique que l'opération est appliquée uniquement aux types et non à leurs membres (ou types imbriqués).

Activation ou désactivation de l'obfuscation déclarative

Dotfuscator vous permet d'activer ou de désactiver l'obfuscation déclarative pour tous les assemblys d'entrée. Si elle n'est pas activée, Dotfuscator ignore les attributs personnalisés liés à l'obfuscation. Vous pouvez également la désactiver pour des assemblys spécifiques.

Suppression des attributs d'obfuscation déclarative

Dotfuscator peut supprimer les attributs d'obfuscation lorsque le traitement est terminé, pour que rien dans vos assemblys de sortie n'indique de quelle manière ils ont été obfusqués. Les deux attributs d'obfuscation déclarative incluent une propriété booléenne « StripAfterObfuscation » dont la valeur par défaut est true.

Dotfuscator dispose également de paramètres de configuration qui interagissent avec la valeur de la propriété StripAfterObfuscation lors de l'obfuscation.

Les paramètres qui affectent la suppression des attributs d'obfuscation déclarative et leurs interactions sont résumés dans le tableau ci-dessous.

Dotfuscator honore les attributs Dotfuscator supprime les attributs Propriété StripAfterObfuscation de l'attribut Résultat
Oui Oui True ou False Attribut supprimé
Oui Non True Attribut supprimé
Oui Non False Attribut conservé
Non Oui True ou False Attribut supprimé
Non Non True ou False Attribut conservé

Utilisation des chaînes de mappage des fonctionnalités

Dotfuscator vous permet de mapper les valeurs contenues dans la propriété Feature d'un attribut d'obfuscation pour caractériser les chaînes comprises par Dotfuscator.

Par exemple, vous pouvez annoter votre application avec des attributs d'obfuscation qui font référence à une fonctionnalité appelée « testmode ». Par défaut, Dotfuscator ne comprend pas cette chaîne des fonctionnalités ; par conséquent, il ignore les attributs. Si ultérieurement, vous souhaitez que Dotfuscator utilise ces attributs pour configurer l'obfuscation par attribution d'un nouveau nom et l'obfuscation du flux de contrôle, vous pouvez mapper la chaîne des fonctionnalités « testmode » aux chaînes intégrées « renaming » et « controlflow » de Dotfuscator.

© 2002-2007 PreEmptive Solutions. Tous droits réservés.