Skip to Content
Nouvelle version 12 disponible 🎉
ObfuscatorRenommage des symbolesFichiers de mappage XML

Fichiers de mappage XML

Babel Obfuscator utilise des fichiers de mappage XML pour faire correspondre les noms d’origine, non obfusqués, des classes, des méthodes, des propriétés, des événements et des champs à leurs noms obfusqués. Babel Obfuscator peut générer ces fichiers pendant l’obfuscation ; ils sont stockés dans le même répertoire que l’assembly obfusqué.

Les fichiers de mappage XML sont importants, car ils permettent aux développeurs de :

  1. Désobfusquer les traces de pile des exceptions.
  2. Obfusquer l’interface publique d’un assembly.

Désobfusquer une trace de pile

Lorsqu’une exception est levée dans une application obfusquée, la trace de pile contient les noms des symboles obfusqués, difficiles à lire et à identifier. Les fichiers de mappage XML permettent de retrouver les noms d’origine à partir des noms obfusqués, de sorte que les développeurs identifient plus facilement l’origine de l’exception et déboguent le problème. Les fichiers de mappage XML sont donc un outil précieux pour les développeurs qui travaillent sur des applications obfusquées.

Pour en savoir plus sur la désobfuscation des traces de pile, voir Décoder les traces de pile.

Obfusquer l’interface publique

Comme les assemblies .NET référencent souvent d’autres assemblies, y compris des bibliothèques tierces, il est courant que les noms des objets, des méthodes et des propriétés d’un assembly soient utilisés dans un autre. Lorsque ces assemblies sont obfusqués séparément, l’obfuscation peut modifier dans un assembly les noms d’origine des objets et des méthodes visibles de l’extérieur, si bien que les autres assemblies qui les référencent ne fonctionnent plus correctement. L’obfuscation des membres d’assembly visibles de l’extérieur est souvent appelée renommage entre assemblies.

Les fichiers de mappage XML permettent de conserver les relations entre les noms d’origine et les noms obfusqués d’un assembly à l’autre. Lorsque plusieurs assemblies sont obfusqués, leurs fichiers de mappage XML respectifs peuvent être combinés pour préserver les relations d’origine entre les noms. Le code obfusqué fonctionne ainsi correctement, même lorsqu’il est appelé depuis d’autres assemblies qui n’ont pas été obfusqués.

Configurer la génération des fichiers de mappage XML

La génération des fichiers de mappage XML se configure depuis la ligne de commande, dans Babel Desktop ou, dans les environnements de build, au moyen de la tâche MSBuild Babel et du package NuGet Babel Obfuscator.

Ligne de commande

L’outil en ligne de commande Babel Obfuscator accepte l’option --mapout, qui active la génération du fichier de mappage XML. La syntaxe de base est la suivante :

babel MyApp.exe --mapout [output file]

L’option accepte le chemin complet du fichier de mappage XML généré. Si le chemin n’est pas indiqué, le fichier de mappage XML reprend le nom du fichier cible d’origine, suivi de l’extension « .map.xml », et il est stocké dans le même répertoire que l’assembly obfusqué.

Par exemple, si l’assembly obfusqué s’appelle « MyApp.exe », le fichier de mappage XML s’appelle « MyApp.exe.map.xml ».

Vous pouvez aussi indiquer des options supplémentaires pour personnaliser la génération du fichier de mappage, par exemple un autre format d’encodage de sortie pour les noms du fichier de mappage :

babel MyApp.exe --mapout encoding=base64

Les formats pris en charge sont « none » et « base64 ». Si le format d’encodage n’est pas indiqué, babel choisit le format base64 lorsque l’option Unicode Normalization est activée.

Tâche MSBuild Babel

Pour activer la génération des fichiers de mappage XML dans la tâche MSBuild Babel, réglez l’attribut GenerateMapOutFile de la tâche sur true. Vous pouvez aussi indiquer le chemin du fichier généré avec l’attribut MapOutFile :

<Babel GenerateMapOutFile="true" MapOutFile="MyAssembly.map.xml" />

Si votre fichier de projet utilise le package NuGet Babel Obfuscator, ajoutez-y l’élément XML suivant pour activer la génération du fichier de mappage XML de l’assembly cible obfusqué :

<PropertyGroup> <GenerateMapOutFile>true</GenerateMapOutFile> </PropertyGroup>

Vous pouvez remplacer le chemin du fichier de mappage XML généré à l’aide de la propriété suivante :

<PropertyGroup> <GenerateMapOutFile>true</GenerateMapOutFile> <BabelMapOutFile>MyAssembly.map.xml</BabelMapOutFile> </PropertyGroup>

Babel Desktop

Pour activer la génération du fichier de mappage XML dans Babel Desktop, sélectionnez l’assembly sur le canevas du projet et, dans le groupe Output & diagnostics du panneau des propriétés, activez GenerateMapOutFile. Si vous le souhaitez, définissez MapOutFile pour choisir l’emplacement du fichier de mappage, puis enregistrez le projet.

Une fois la génération des fichiers de mappage XML activée, Babel Obfuscator crée, pour l’assembly d’entrée qu’il obfusque, un fichier de mappage portant le même nom que l’assembly obfusqué, avec l’extension .map.xml. Les fichiers de mappage sont enregistrés à l’emplacement indiqué par MapOutFile, ou à côté de l’assembly obfusqué.

Last updated on