Paramètres de la cible
Chaque cible a ses propres paramètres Babel Obfuscator. Le panneau des propriétés les modifie une cible à la fois ; les commandes de configuration et les niveaux de protection en changent un grand nombre en une seule opération.
Le panneau des propriétés
Sélectionnez une cible et cliquez sur le bouton Propriétés en haut à droite de la barre d’outils, appuyez sur Enter lorsqu’un nœud est sélectionné, ou choisissez Propriétés dans le menu d’un nœud ou d’une ligne. Le panneau s’ancre à droite et porte le titre Propriétés de l’assembly suivi du nom de la cible. Il comporte deux onglets : Paramètres et Règles XML.
L’onglet Paramètres répertorie toutes les options Babel Obfuscator de la cible sélectionnée, regroupées en Fichiers map, Renommage, Flux de contrôle, Chiffrement du code, Optimisation, Signature et protection, Fichiers et dépendances, Output & diagnostics et Advanced. Chaque groupe indique le nombre d’options qu’il contient et peut être replié. Saisissez du texte dans Rechercher un paramètre pour filtrer la liste.



Le panneau des propriétés de la cible sélectionnée
Les paramètres portent les noms d’options de la tâche MSBuild ; leur effet est décrit dans la référence de la tâche Babel et dans les pages consacrées à chaque protection. Chaque option dispose d’un contrôle adapté à son type : cases à cocher pour les options à deux états, listes pour les algorithmes, sélecteurs de fichiers et de dossiers pour les chemins, éditeurs pour les filtres et les tables de propriétés. Une liste réglée sur Par défaut omet l’option dans le projet, si bien que le moteur utilise sa propre valeur par défaut. Les modifications ne s’appliquent qu’à la cible sélectionnée ; pour modifier plusieurs cibles à la fois, utilisez la grille.



Paramètres de chiffrement du code : chiffrement des chaînes, chiffrement MSIL et chiffrement des valeurs
Les options composites, comme Control Flow Obfuscation, affichent un contrôle par propriété. L’image suivante montre les options du flux de contrôle. La dernière, chain, active l’algorithme d’état chaîné de l’édition Ultimate.



Les propriétés de Control Flow Obfuscation
Les mots de passe, par exemple celui d’une clé de signature ou d’un fichier de mappage, ne sont conservés que pour la session en cours. Ils ne sont jamais écrits dans le fichier de projet, et vous devez les saisir à nouveau après un redémarrage. Lorsque le moteur a besoin d’un mot de passe pendant une exécution, Babel Desktop vous le demande.
Fichiers de mappage
Le groupe Fichiers map, en haut de l’onglet Paramètres, réunit les paramètres de mappage de la cible sélectionnée :
- Écrit sa map de renommage active ou désactive le fichier de mappage de la cible. La ligne affichée en dessous indique où le fichier est écrit : À côté de l’assembly obfusqué par défaut, ou le nom de fichier choisi avec Modifier….
- Maps d’autres cibles répertorie les liens de mappage qui aboutissent à cette cible. Cliquez sur le nom d’une cible pour la sélectionner, ou sur son × pour supprimer le lien.
- Autres fichiers de map répertorie les fichiers de mappage que cette cible lit et qu’aucune cible du projet n’écrit, par exemple celui d’une bibliothèque obfusquée lors d’un build précédent. Ajouter un fichier de map… en ajoute un et Retirer l’enlève.



Le groupe Fichiers map d’une cible qui lit le fichier de mappage d’une bibliothèque
Règles XML
L’onglet Règles XML permet de modifier les règles d’obfuscation XML intégrées de la cible sélectionnée. L’éditeur applique la coloration syntaxique au XML, et Valider le vérifie par rapport au schéma des règles Babel en indiquant la ligne et la colonne de chaque erreur. Ouvrir le XML charge un fichier de règles dans l’éditeur, Enregistrer le fichier XML écrit le contenu de l’éditeur dans un fichier et Appliquer à l’assembly enregistre les règles dans la cible. Les règles intégrées sont enregistrées dans le fichier de projet.



Les règles XML intégrées d’une cible
Tant que des règles ne sont pas appliquées, le panneau reste sur la même cible : appliquez-les, ou abandonnez-les avec Paramètres : annuler les modifications non appliquées et recharger dans la palette de commandes, avant de sélectionner une autre cible ou d’exécuter le projet. Les fichiers de règles conservés hors du projet sont répertoriés dans l’onglet Règles des détails de la grille.
Plugins du moteur
Les plugins Babel Obfuscator se définissent pour chaque cible avec Plugins du moteur : configurer les chemins des DLL dans la palette de commandes, ou dans l’onglet Plug-ins des détails de la grille. Plugins du moteur : découvrir les noms d’arguments lit les noms d’arguments que déclare un plugin, ce qui vous permet de renseigner ses arguments. Comme les plugins sont du code .NET qui s’exécute dans le moteur, n’utilisez que des plugins auxquels vous faites confiance.
Commandes de configuration
Les deux commandes de configuration configurent tout un projet en une seule opération, et Obfuscation : définir le niveau… applique un niveau de protection à la cible sélectionnée. Ajoutez d’abord les assemblies, puis exécutez la commande adaptée à l’application. Les trois commandes figurent dans la palette de commandes ; les deux commandes de configuration se trouvent aussi dans la barre d’outils de la grille, sous les noms Configurer l’obfuscation publique et Configurer la fusion.



Les commandes de configuration dans la palette de commandes
| Commande | Effet |
|---|---|
| Obfuscation : configurer la fusion dans l’assembly principal | Fusionne toutes les autres cibles dans l’assembly principal, de sorte que le projet produit un seul fichier de sortie. L’assembly principal est le seul .exe du projet, ou la première cible s’il n’y en a aucun ou s’il y en a plusieurs. Un assembly que le moteur ne peut pas fusionner est laissé tel quel. |
| Obfuscation : configurer l’obfuscation publique (tous les assemblies) | Prépare un ensemble d’assemblies distribués ensemble pour que leurs symboles publics soient renommés. Chaque cible reçoit une règle XML nommée obfuscate public et écrit son fichier de mappage, et une cible qui compte une autre cible parmi ses dépendances de fusion, d’incorporation ou de référence lit le fichier de mappage de celle-ci au moyen d’un lien de mappage. |
| Obfuscation : définir le niveau… | Applique l’un des trois niveaux de protection à la cible sélectionnée. |
Les deux commandes de configuration ignorent les cibles de type paquet (.apk, .appx et .xap). Aucune des trois ne s’exécute tant qu’une tâche est en cours ou qu’une modification attend d’être appliquée. Elles modifient le projet ouvert sans l’enregistrer, ce qui vous permet de vérifier d’abord le résultat sur le canevas, dans la grille et dans le panneau des propriétés.
Niveaux de protection
Obfuscation : définir le niveau… dans la palette de commandes applique un niveau à la cible sélectionnée ; Définir le niveau d’obfuscation dans le menu d’une ligne de la grille l’applique à toutes les lignes sélectionnées. Les niveaux définissent les options suivantes et laissent les autres inchangées :
| Niveau | Protection |
|---|---|
| Léger | Renommage des types, méthodes, champs, propriétés et événements. Le flux de contrôle, les fonctionnalités de chiffrement et les protections anti-analyse sont désactivés. |
| Équilibré | Renommage, obfuscation du flux de contrôle avec l’algorithme goto, chiffrement des chaînes et blocage d’ILDASM. |
| Maximal | Renommage, obfuscation du flux de contrôle avec goto, switch, case, if et l’état chaîné, chiffrement des chaînes avec l’algorithme stream, chiffrement des valeurs, chiffrement MSIL, détection de falsification, protection contre le débogage et blocage d’ILDASM. Si la licence n’inclut pas l’algorithme stream, le chiffrement des chaînes par défaut est utilisé. |
Appliquer un niveau inférieur après un niveau supérieur désactive de nouveau les protections supplémentaires. Un niveau est un point de départ : vous pouvez ensuite modifier chaque option séparément.
Maximal active le chiffrement MSIL sans filtre : il ne chiffre donc que les méthodes que vous sélectionnez avec une règle XML ou l’attribut Obfuscation. Pour chiffrer par espace de noms ou par type, ajoutez un filtre à Msil Encryption dans le groupe Chiffrement du code. Voir Chiffrement du code.
Un niveau ne touche ni au renommage des symboles publics, ni aux fichiers de mappage, ni à la fusion, ni à la signature. Ces réglages dépendent de la façon dont les assemblies sont distribués, et c’est le rôle des commandes de configuration.