Skip to Content
Nouvelle version 12 disponible 🎉

Attributs personnalisés

Babel prend en charge l’obfuscation déclarative au moyen des attributs personnalisés System.Reflection.ObfuscationAttribute et System.Reflection.ObfuscateAssemblyAttribute fournis par .NET Framework et .NET.

L’attribut ObfuscateAssembly

System.Reflection.ObfuscateAssemblyAttribute est un attribut de niveau assembly qui demande à Babel Obfuscator d’appliquer les règles d’obfuscation réservées aux assemblies privés.

Un assembly privé est un assembly qui ne sera pas utilisé comme bibliothèque : aucun autre composant logiciel ne l’utilisera. Babel obfusque entièrement les assemblies privés, ce qui renomme tous les symboles publics.

[assembly: ObfuscateAssembly(true)]

L’argument booléen du constructeur, assemblyIsPrivate=true, indique à Babel que l’assembly est utilisé dans le cadre d’une seule application et que son interface publique peut être renommée sans risque.

L’attribut Obfuscation

L’attribut System.Reflection.ObfuscationAttribute peut être appliqué aux membres d’un assembly, tels que les types, les méthodes, les événements, les propriétés et les champs, afin de configurer l’action à effectuer pour une fonctionnalité d’obfuscation donnée.

L’attribut Obfuscation possède les propriétés suivantes :

Feature

La propriété Feature associe une valeur de chaîne à une fonctionnalité de l’obfuscateur ou à une liste de fonctionnalités. La valeur par défaut de la propriété Feature est « all ».

Babel utilise « all » pour désigner l’ensemble des fonctionnalités disponibles et « default » pour désigner la fonctionnalité de renommage.

Pour en savoir plus, consultez le tableau des fonctionnalités d’obfuscation.

Exclude

Indique si la fonctionnalité d’obfuscation doit être exclue pour le membre associé.

ApplyToMembers

Indique si l’action effectuée par l’obfuscateur pour le type associé doit s’appliquer à tous ses membres.

StripAfterObfuscation

Indique si l’attribut doit être supprimé après le traitement.

L’exemple de code suivant montre comment utiliser ObfuscationAttribute sur une méthode pour activer le chiffrement du code :

[Obfuscation(Feature="msil encryption", Exclude=false)] public string DoSomething() {

Syntaxe étendue des fonctionnalités

Babel Obfuscator prend en charge une syntaxe étendue pour les chaînes de fonctionnalité, qui permet de définir les propriétés d’une fonctionnalité sous la forme d’une liste de paires clé-valeur placée après le nom de la fonctionnalité.

[Obfuscation(Feature="msil encryption:source=opt;cache=true", Exclude=false)]#

La syntaxe étendue de Feature permet d’appliquer ObfuscationAttribute au niveau de l’assembly pour configurer les fonctionnalités de l’assembly entier :

Renommage

[assembly: Obfuscation(Feature="renaming:flatten namespaces=ACME.Test.*", Exclude=false)] [assembly: Obfuscation(Feature="renaming:flattenNamespaces=ACME.Data.*", Exclude=false)] [assembly: Obfuscation(Feature="renaming:internalize=true;rename parameters=true", Exclude=false)] [assembly: Obfuscation(Feature="renaming:overloaded=true;unicode=false", Exclude=false)] [assembly: Obfuscation(Feature="renaming:name length=5;name prefix=Acme_", Exclude=false)]

Agent d’obfuscation

Désactive l’agent d’obfuscation pour les tâches Serializable types et Reflected enums.

[assembly: Obfuscation(Feature="agent:tasknamelist=Serializable types,Reflected enums", Exclude=true)]

Chiffrement des valeurs

Chiffre les valeurs et les tableaux des méthodes dont le nombre d’instructions est compris entre 10 et 100.

[assembly: Obfuscation(Feature="value encryption:min instruction count=10; max instruction count=100", Exclude=false)]

L’attribut Obfuscation ne suffit pas à lui seul à activer la fonctionnalité choisie. Il n’a d’effet que si la fonctionnalité est activée globalement dans la configuration.

Autres exemples

N’obfusque pas le code généré par le compilateur.

[assembly: Obfuscation(Feature="all:compilergenerated=true", Exclude=true)]
Last updated on