Skip to Content
Nouvelle version 12 disponible 🎉
DesktopProjets d’obfuscation

Projets d’obfuscation

Un projet d’obfuscation réunit les assemblies à protéger, leurs dépendances et les paramètres de chacun. Babel Desktop le présente sous forme de graphe sur un canevas et l’exécute avec le moteur de Babel Obfuscator.

Babel Desktop enregistre les projets sous forme de fichiers .babel, le format de projet MSBuild qu’utilise la tâche MSBuild. Vous pouvez générer avec MSBuild un projet enregistré dans l’application, et ouvrir dans l’application un projet .babel existant.

Créer un projet

Ajouter les assemblies

Cliquez sur Ajouter des assemblies dans l’écran d’accueil ou sur + Ajouter un assembly dans la barre d’outils du canevas (Ctrl+Shift+A, Cmd+Shift+A sous macOS), ou faites glisser des assemblies .NET du gestionnaire de fichiers vers le canevas. Chaque assembly devient une cible principale : un nœud du canevas que le moteur obfusque.

Relier les dépendances

Ajoutez les assemblies qui sont fusionnés dans une cible, incorporés à celle-ci ou référencés par elle, comme décrit dans Dépendances.

Configurer chaque cible

Sélectionnez un nœud et ouvrez le panneau des propriétés pour modifier ses paramètres et ses règles XML. Voir Paramètres de la cible.

Enregistrer et exécuter

Enregistrez le projet avec Fichier > Enregistrer (Ctrl+S, Cmd+S sous macOS), puis cliquez sur Exécuter le projet (Ctrl+Enter, Cmd+Enter sous macOS). Enregistrer écrit le fichier .babel ouvert et ne demande un nom de fichier que pour un nouveau projet. Pour enregistrer une copie sous un autre nom, utilisez Fichier > Enregistrer sous… (Ctrl+Shift+S, Cmd+Shift+S sous macOS).

Pour repartir de zéro, utilisez Projet : nouveau (Ctrl+N) ou le bouton Nouveau projet du canevas. Dans la palette de commandes, Projet : Ouvrir un récent… rouvre un projet récent, et la boîte de dialogue Ouvrir un projet s’ouvre sur le dossier du dernier projet ouvert. Si le projet en cours contient des modifications non enregistrées, Babel Desktop vous demande s’il faut les abandonner avant d’en créer ou d’en ouvrir un autre. Attendez d’abord la fin de la tâche en cours, s’il y en a une.

Le canevas du projet

Le canevas représente chaque assembly par un nœud. Pour vous déplacer, faites glisser l’arrière-plan, tournez la molette ou balayez avec deux doigts. Pour zoomer autour du pointeur, pincez ou maintenez Ctrl (Cmd sous macOS) pendant le défilement. Les boutons de zoom et Ajuster la vue cadrent le graphe. Faites glisser les nœuds pour les disposer, ou laissez Affichage > Disposer le graphe automatiquement (Ctrl+Shift+L, Cmd+Shift+L sous macOS) placer les cibles de gauche à droite dans l’ordre d’exécution, les dépendances de chaque cible étant empilées à sa gauche. La position des nœuds est enregistrée dans le fichier de projet.

Canevas du projet FullMerge.babel : la cible principale BubbleBurst.exe à droite et quatre entrées de fusion à gauche, BubbleBurst.View.dll, BubbleBurst.ViewModel.dll, MvvmFoundation.Wpf.dll et Thriple.dll, chacune reliée à la cible par une ligne portant l’étiquette MERGECanevas du projet FullMerge.babel : la cible principale BubbleBurst.exe à droite et quatre entrées de fusion à gauche, BubbleBurst.View.dll, BubbleBurst.ViewModel.dll, MvvmFoundation.Wpf.dll et Thriple.dll, chacune reliée à la cible par une ligne portant l’étiquette MERGECanevas du projet FullMerge.babel : la cible principale BubbleBurst.exe à droite et quatre entrées de fusion à gauche, BubbleBurst.View.dll, BubbleBurst.ViewModel.dll, MvvmFoundation.Wpf.dll et Thriple.dll, chacune reliée à la cible par une ligne portant l’étiquette MERGE

Une cible principale avec quatre assemblies fusionnés

Laissez le pointeur une demi-seconde sur un nœud, ou atteignez-le au clavier, pour ouvrir sa carte. La carte d’une cible principale indique son état, son ordre d’exécution, le nombre d’assemblies qu’elle fusionne, incorpore et référence, ses liens de mappage et le chemin du fichier d’entrée. Après une exécution, elle affiche aussi le score d’obfuscation.

Dépendances

Les points d’ancrage supérieur et inférieur d’un nœud relient les dépendances. Faites glisser du point d’ancrage inférieur de l’assembly source vers le point d’ancrage supérieur de la cible, ou cliquez sur les deux points l’un après l’autre. Une nouvelle dépendance reçoit l’un des trois types suivants :

TypeEffet
FusionnerL’assembly source est fusionné dans la cible et obfusqué avec elle, ce qui produit un seul assembly de sortie. Voir Fusion des assemblies.
IncorporerL’assembly source est stocké comme ressource de la cible et chargé à l’exécution. Voir Incorporation des assemblies.
RéférenceL’assembly source sert uniquement à résoudre les références de la cible.

Babel Desktop choisit le type à votre place. Si la cible référence l’identité exacte de l’assembly source (nom, version, culture et jeton de clé publique), la nouvelle dépendance est de type Fusionner ; sinon, elle est de type Référence. Pour changer de type, cliquez sur la ligne de la dépendance, choisissez Fusionner, Incorporer ou Référence dans la fenêtre contextuelle, puis cliquez sur Appliquer. Dans la palette de commandes, la commande Assembly : ajouter une dépendance automatiquement… et les commandes Assembly : ajouter entrée de fusion…, Assembly : ajouter assembly incorporé… et Assembly : ajouter référence… ajoutent des dépendances à partir d’un sélecteur de fichiers.

Un assembly utilisé comme entrée de fusion reste sur le canevas, mais il n’est pas obfusqué séparément, puisqu’il est intégré à sa destination.

Ordre d’exécution et fichiers de mappage

Les points d’ancrage gauche et droit relient deux cibles pour que l’une s’exécute avant l’autre. Faites glisser du point d’ancrage droit de la première cible vers le point d’ancrage gauche de la seconde. Babel Desktop demande alors à quoi sert la connexion :

ChoixEffet
Ordre d’exécution uniquementUne arête de flux : la cible A s’exécute avant la cible B. Rien n’est transmis de A à B.
Transmettre le fichier de mapUn lien de mappage, tracé avec une étiquette MAP : A écrit son fichier de mappage XML des renommages et B le lit, si bien que B utilise les nouveaux noms des symboles publics de A. A s’exécute avant B. Voir Renommage entre assemblies.

Un lien de mappage active Generate Map Out File pour la première cible et ajoute son fichier de mappage aux Map In Files de la seconde. Si la première cible ne définit ni chemin de sortie ni chemin de fichier de mappage, son fichier de mappage est écrit à un emplacement fixe à côté de son fichier d’entrée, par exemple BabelOut/Library2.dll.map.xml, de sorte que la seconde cible le trouve toujours. Les liens de mappage ne sont pas stockés à part : Babel Desktop les déduit de ces deux paramètres, et un projet écrit à la main ou avec Babel UI affiche donc lui aussi ses liens de mappage.

Chaque nœud affiche son étape, c’est-à-dire la position à laquelle il s’exécute dans son flux. Un flux est un groupe de cibles reliées entre elles par des arêtes de flux, des liens de mappage ou des dépendances de fusion, d’incorporation et de référence. Les cibles qui ne sont pas reliées entre elles forment des flux distincts. À l’intérieur d’un flux, les cibles s’exécutent dans l’ordre des étapes et, lorsque rien ne le détermine, dans l’ordre du projet. Les arêtes de flux sont enregistrées dans le projet comme des dépendances standard entre cibles MSBuild.

Babel Desktop rejette les liens d’une cible vers elle-même et les arêtes en double, et refuse toute connexion qui obligerait des cibles à s’attendre mutuellement. Si les cibles d’un projet ouvert depuis le disque attendent chacune le fichier de mappage de l’autre, le projet s’ouvre tout de même. Babel Desktop affiche une erreur qui nomme le cycle, par exemple Library1.dll → Library2.dll → Library1.dll, et le projet ne s’exécute pas tant que vous n’avez pas supprimé l’un des liens. Pour supprimer une arête ou un lien de mappage, cliquez dessus et appuyez sur Delete ou Backspace ; Esc annule une connexion en cours de tracé ou efface la sélection.

Remplacer une entrée

Pour faire pointer une cible vers une nouvelle génération de son assembly sans perdre ses paramètres, sélectionnez le nœud et exécutez Assembly : remplacer l’entrée et conserver les paramètres… depuis la palette de commandes. Assembly : retirer la cible sélectionnée retire une cible et ses arêtes.

Commandes de configuration

Trois commandes de la palette de commandes configurent un projet en une seule opération. Ajoutez d’abord les assemblies, puis exécutez la commande adaptée à l’application.

Palette de commandes filtrée par Obfuscation: Set, qui liste Obfuscation: Setup public obfuscation (all assemblies), Obfuscation: Setup merge into main assembly et Obfuscation: Set level...Palette de commandes filtrée par Obfuscation: Set, qui liste Obfuscation: Setup public obfuscation (all assemblies), Obfuscation: Setup merge into main assembly et Obfuscation: Set level...Palette de commandes filtrée par Obfuscation: Set, qui liste Obfuscation: Setup public obfuscation (all assemblies), Obfuscation: Setup merge into main assembly et Obfuscation: Set level...

Les commandes de configuration dans la palette de commandes

CommandeEffet
Obfuscation : configurer la fusion dans l’assembly principalFusionne 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 dépend d’une autre 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 niveaux définissent les options suivantes et laissent les autres inchangées :

NiveauProtection
LégerRenommage des types, méthodes, champs, propriétés et événements. Le flux de contrôle, les fonctions 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.
MaximalRenommage, 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é.

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 et dans le panneau des propriétés. Appliquer un niveau inférieur après un niveau supérieur désactive de nouveau les protections supplémentaires.

Paramètres de la cible

Pour ouvrir le panneau des propriétés, sélectionnez un nœud et cliquez sur le bouton Propriétés en haut à droite du canevas, ou appuyez sur Enter lorsqu’un nœud est sélectionné. L’onglet Paramètres répertorie toutes les options Babel Obfuscator de la cible sélectionnée, regroupées en Renommage, Flux de contrôle, Chiffrement du code, Optimisation, Signature et protection, Fichiers et dépendances, Output & diagnostics et Advanced. Saisissez du texte dans Rechercher un paramètre pour filtrer la liste.

Panneau des propriétés de la cible BubbleBurst.exe ouvert à côté du canevas, sur l’onglet Settings, avec le champ de recherche Find a setting, le groupe Map files où Writes its rename map est coché, et le groupe Renaming qui affiche Flatten Namespaces, Unicode Normalization et Detect If ObfuscatedPanneau des propriétés de la cible BubbleBurst.exe ouvert à côté du canevas, sur l’onglet Settings, avec le champ de recherche Find a setting, le groupe Map files où Writes its rename map est coché, et le groupe Renaming qui affiche Flatten Namespaces, Unicode Normalization et Detect If ObfuscatedPanneau des propriétés de la cible BubbleBurst.exe ouvert à côté du canevas, sur l’onglet Settings, avec le champ de recherche Find a setting, le groupe Map files où Writes its rename map est coché, et le groupe Renaming qui affiche Flatten Namespaces, Unicode Normalization et Detect If Obfuscated

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.

Panneau des propriétés sur le groupe Code encryption : String Encryption activé, Msil Encryption activé avec le filtre .*, Dynamic Proxy Call Filters défini sur ICollection.* et Value Encryption avec int32, int64, single, double et array activésPanneau des propriétés sur le groupe Code encryption : String Encryption activé, Msil Encryption activé avec le filtre .*, Dynamic Proxy Call Filters défini sur ICollection.* et Value Encryption avec int32, int64, single, double et array activésPanneau des propriétés sur le groupe Code encryption : String Encryption activé, Msil Encryption activé avec le filtre .*, Dynamic Proxy Call Filters défini sur ICollection.* et Value Encryption avec int32, int64, single, double et array activés

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.

Panneau des propriétés filtré par ControlFlow : la table Control Flow Obfuscation avec enable, goto, switch, case, if, call et value activés, token et underflow désactivés, et chain laissé à sa valeur par défautPanneau des propriétés filtré par ControlFlow : la table Control Flow Obfuscation avec enable, goto, switch, case, if, call et value activés, token et underflow désactivés, et chain laissé à sa valeur par défautPanneau des propriétés filtré par ControlFlow : la table Control Flow Obfuscation avec enable, goto, switch, case, if, call et value activés, token et underflow désactivés, et chain laissé à sa valeur par défaut

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.

Babel Desktop préserve les parties d’un fichier .babel qu’il ne modifie pas, comme les commentaires, les propriétés personnalisées et les tâches MSBuild personnalisées. Il n’évalue ni les imports, ni les conditions, ni les tâches personnalisées de MSBuild : un projet qui en dépend doit être généré avec MSBuild.

Fichiers de mappage

Le groupe Fichiers map du panneau des propriétés 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. Le chemin affiché en dessous indique où le fichier est écrit, par défaut à côté de l’assembly obfusqué ; Modifier… permet de choisir un autre fichier.
  • 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.
  • 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.

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 incluses sont enregistrées dans le fichier de projet.

Onglet XML rules de la cible avec une règle intégrée pour l’assembly fusionné BubbleBurst.View, qui définit la propriété Dynamic Proxy Call Filters sur IEnumerator.*, et les boutons Open XML, Validate, Save XML file et Apply to assemblyOnglet XML rules de la cible avec une règle intégrée pour l’assembly fusionné BubbleBurst.View, qui définit la propriété Dynamic Proxy Call Filters sur IEnumerator.*, et les boutons Open XML, Validate, Save XML file et Apply to assemblyOnglet XML rules de la cible avec une règle intégrée pour l’assembly fusionné BubbleBurst.View, qui définit la propriété Dynamic Proxy Call Filters sur IEnumerator.*, et les boutons Open XML, Validate, Save XML file et Apply to assembly

Les règles XML intégrées d’une cible

Plugins du moteur

Les plugins Babel Obfuscator se définissent pour chaque cible avec Plugins du moteur : configurer les chemins des DLL. 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.

Exécuter le projet

Cliquez sur Exécuter le projet en haut à droite du canevas, appuyez sur Ctrl+Enter (Cmd+Enter sous macOS) ou choisissez Exécution > Lancer l’obfuscation. Sauf si une cible définit son propre chemin de sortie, l’assembly obfusqué est écrit dans un dossier BabelOut à côté de chaque assembly d’entrée. Avant de démarrer l’exécution, Babel Desktop vérifie où la sortie sera écrite. Il n’écrase jamais un assembly d’entrée, un fichier de clé ou un plugin, et demande confirmation avant de remplacer des fichiers de sortie existants.

Le panneau Activité affiche la phase en cours, un indicateur de progression et le journal du moteur. L’onglet Journal répertorie tous les messages que le moteur écrit au niveau Verbose Level de la cible, et les avertissements et les erreurs sont également regroupés dans l’onglet Problèmes. Chaque nœud de cible indique son état sur le canevas. Annuler l’exécution arrête l’exécution. Les cibles s’exécutent l’une après l’autre ; lorsqu’une cible échoue, les suivantes ne s’exécutent pas.

Canevas après une exécution : le nœud de la cible BubbleBurst.exe indique completed, le panneau Activity affiche le badge Completed, les onglets Log et Problems avec 3 problèmes, 100 pour cent et la fin du journal du moteur, qui se termine par le temps total écoulé et 3 avertissements ; le bouton Results est actifCanevas après une exécution : le nœud de la cible BubbleBurst.exe indique completed, le panneau Activity affiche le badge Completed, les onglets Log et Problems avec 3 problèmes, 100 pour cent et la fin du journal du moteur, qui se termine par le temps total écoulé et 3 avertissements ; le bouton Results est actifCanevas après une exécution : le nœud de la cible BubbleBurst.exe indique completed, le panneau Activity affiche le badge Completed, les onglets Log et Problems avec 3 problèmes, 100 pour cent et la fin du journal du moteur, qui se termine par le temps total écoulé et 3 avertissements ; le bouton Results est actif

Une exécution terminée dans le panneau Activité

Après une exécution, les boutons situés en haut du panneau Activité ouvrent le dossier de sortie et lancent l’application obfusquée. Fichier > Afficher la sortie dans le dossier et Exécution > Lancer l’application obfusquée (Ctrl+F5, Cmd+F5 sous macOS) font la même chose. Babel Desktop lance directement un exécutable Windows, et lance une application .NET par l’intermédiaire de dotnet lorsque son fichier .runtimeconfig.json est disponible. Il ne propose pas de lancer une bibliothèque.

Score d’obfuscation

Une fois l’exécution terminée, la carte de chaque cible affiche un score d’obfuscation de 0 à 100, qui permet de vérifier rapidement que l’exécution a appliqué les protections attendues. Laissez le pointeur sur la cible pour ouvrir la carte.

Carte de la cible BubbleBurst.exe après une exécution : score d’obfuscation de 92 sur 100, noté Strong, avec les barres Renaming 26 sur 30, Control Flow 25 sur 25, String Encryption 15 sur 15, Code protection 11 sur 15 et Anti-analysis 15 sur 15, l’heure de la dernière exécution, l’ordre d’exécution Flow 1 step 1, 4 dépendances fusionnées et le chemin du fichier d’entréeCarte de la cible BubbleBurst.exe après une exécution : score d’obfuscation de 92 sur 100, noté Strong, avec les barres Renaming 26 sur 30, Control Flow 25 sur 25, String Encryption 15 sur 15, Code protection 11 sur 15 et Anti-analysis 15 sur 15, l’heure de la dernière exécution, l’ordre d’exécution Flow 1 step 1, 4 dépendances fusionnées et le chemin du fichier d’entréeCarte de la cible BubbleBurst.exe après une exécution : score d’obfuscation de 92 sur 100, noté Strong, avec les barres Renaming 26 sur 30, Control Flow 25 sur 25, String Encryption 15 sur 15, Code protection 11 sur 15 et Anti-analysis 15 sur 15, l’heure de la dernière exécution, l’ordre d’exécution Flow 1 step 1, 4 dépendances fusionnées et le chemin du fichier d’entrée

Le score d’obfuscation d’une cible qui fusionne quatre assemblies

Le score additionne les points de cinq couches de protection. Chaque barre indique les points obtenus par une couche par rapport à son maximum, si bien qu’un score faible vous montre quelle couche manque.

CouchePointsObtenus par
Renommage30La part des symboles éligibles qui ont été renommés
Flux de contrôle25La part des méthodes qui ont été brouillées. Les méthodes sans branchement ne sont pas modifiées, et la moitié des méthodes suffit pour obtenir tous les points
Chiffrement des chaînes15Les chaînes chiffrées
Protection du code15Le chiffrement MSIL (7), les appels par proxy dynamique (4) et le chiffrement des valeurs (4)
Anti-analyse15La détection de falsification, la protection contre le débogage et le blocage d’ILDASM, 5 points chacun

Le score est noté Faible en dessous de 35, Moyen à partir de 35, Bon à partir de 60 et Solide à partir de 80. Il est calculé à partir des statistiques de la dernière exécution terminée du projet. Les assemblies fusionnés dans une cible comptent dans le score de celle-ci et n’ont pas de score propre. Une cible qui n’a pas encore été exécutée n’affiche aucun score.

Le score comptabilise les protections appliquées par une exécution et ne dit rien du temps pendant lequel le résultat résiste à un outil donné. Un score plus bas peut être le bon : une bibliothèque dotée d’une API publique conserve ses noms publics et obtient donc moins de points de renommage.

Exécuter les flux en parallèle

Un projet qui comporte plusieurs flux indépendants, par exemple des bibliothèques qui ne se référencent pas entre elles, peut les obfusquer en même temps. Activez Exécuter en parallèle les flux indépendants dans Paramètres > Obfuscation et choisissez le nombre de flux exécutés simultanément, de 2 à 4. L’option est désactivée par défaut.

Chaque flux s’exécute dans son propre processus du moteur et, à l’intérieur d’un flux, les cibles s’exécutent toujours dans l’ordre. Babel Desktop vérifie l’ensemble du projet avant le démarrage du premier flux, comme pour une exécution simple. Pendant l’exécution des flux :

  • L’indicateur de progression compte les cibles terminées par rapport aux cibles prévues, et chaque ligne du journal commence par le nom de son assembly, par exemple [Library1.dll].
  • Une cible qui échoue arrête son propre flux. Les autres flux se poursuivent, et l’exécution est signalée comme ayant échoué.
  • Annuler l’exécution arrête tous les flux.
  • Lorsque plusieurs cibles ont besoin d’un mot de passe de certificat, Babel Desktop les demande un par un en nommant l’assembly concerné.

Comme chaque processus du moteur met quelques secondes à démarrer, l’exécution en parallèle fait gagner du temps avec de gros assemblies. Un petit projet peut se terminer plus vite en traitant une cible après l’autre. Avec une licence flottante, Babel Desktop exécute un seul flux à la fois.

Dans la palette de commandes, Outils : avertissements de la tâche répertorie les avertissements de l’exécution en cours, et Outils : référence des avertissements ouvre le catalogue des codes d’avertissement du moteur, avec leur description et une fonction de recherche.

Boîte de dialogue de référence des avertissements du moteur, avec un champ de recherche et une liste de codes d’avertissement tels que CF0001, CF0002, EI0001 et EM0001Boîte de dialogue de référence des avertissements du moteur, avec un champ de recherche et une liste de codes d’avertissement tels que CF0001, CF0002, EI0001 et EM0001Boîte de dialogue de référence des avertissements du moteur, avec un champ de recherche et une liste de codes d’avertissement tels que CF0001, CF0002, EI0001 et EM0001

La référence des avertissements du moteur

Résultats d’exécution

Après une exécution, le bouton Résultats d’exécution de la barre d’outils du canevas ouvre les statistiques de protection. Choisissez une exécution dans l’historique, un assembly obfusqué et un rapport :

RapportContenu
RenommageLe nombre de types, méthodes, champs, propriétés et événements renommés et leur nombre total, avec un graphique de couverture
Flux de contrôleLes méthodes brouillées, les instructions de branchement insérées et les itérations, avec une carte arborescente (treemap) par espace de noms et par type et, lorsque les statistiques complètes sont collectées, la complexité cyclomatique avant et après la transformation
Chiffrement des chaînesL’algorithme de chiffrement et les chaînes chiffrées par méthode
Chiffrement du codeLes méthodes chiffrées par espace de noms et par type
Proxy dynamiqueLes appels passant par un proxy et les types de délégués, par méthode cible
OptimisationsLes compteurs de suppression du code mort et d’optimisation
Temps d’exécutionLa durée de chaque phase du moteur

Vous pouvez effectuer des recherches dans les tableaux et les trier, et descendre dans les cartes arborescentes de l’espace de noms au type. Afficher la sortie, Afficher le journal du moteur et Afficher les données statistiques ouvrent le dossier de sortie, le journal complet du moteur et le fichier de statistiques brutes de l’exécution. Babel Desktop conserve les résultats des 30 dernières exécutions.

Statistiques de protection sur l’onglet Renaming : 540 symboles renommés sur 630 (85,71 pour cent), un graphique radar de la couverture par catégorie de symboles et des barres du nombre de symboles, les sélecteurs d’exécution et d’assembly et les boutons Show output, Show engine log et Show statistics dataStatistiques de protection sur l’onglet Renaming : 540 symboles renommés sur 630 (85,71 pour cent), un graphique radar de la couverture par catégorie de symboles et des barres du nombre de symboles, les sélecteurs d’exécution et d’assembly et les boutons Show output, Show engine log et Show statistics dataStatistiques de protection sur l’onglet Renaming : 540 symboles renommés sur 630 (85,71 pour cent), un graphique radar de la couverture par catégorie de symboles et des barres du nombre de symboles, les sélecteurs d’exécution et d’assembly et les boutons Show output, Show engine log et Show statistics data

Les statistiques de renommage

Statistiques de protection sur l’onglet Control Flow : 234 méthodes brouillées, 28 990 instructions de branchement et 5 itérations, et une carte arborescente des méthodes transformées par espace de noms, de BubbleBurst.ViewModel avec 58 méthodes à Thriple.Easing avec 8Statistiques de protection sur l’onglet Control Flow : 234 méthodes brouillées, 28 990 instructions de branchement et 5 itérations, et une carte arborescente des méthodes transformées par espace de noms, de BubbleBurst.ViewModel avec 58 méthodes à Thriple.Easing avec 8Statistiques de protection sur l’onglet Control Flow : 234 méthodes brouillées, 28 990 instructions de branchement et 5 itérations, et une carte arborescente des méthodes transformées par espace de noms, de BubbleBurst.ViewModel avec 58 méthodes à Thriple.Easing avec 8

Les statistiques du flux de contrôle

Les fichiers de statistiques contiennent les noms d’origine des symboles et les valeurs des chaînes. Comme les fichiers de mappage XML, tenez-les à l’écart de l’application distribuée.

Décoder les traces de pile

Pour retrouver, à l’aide de ses fichiers de mappage XML, les noms d’origine dans les traces de pile obfusquées d’une application protégée, utilisez le Décodeur de pile.

Last updated on