Obfusquer .NET MAUI
Babel Obfuscator peut obfusquer une application .NET MAUI (Multi-platform App UI) en traitant le fichier d’assembly compilé (par exemple une DLL ou un EXE) avec son moteur d’obfuscation. Le processus d’obfuscation modifie l’assembly compilé pour rendre le code plus difficile à comprendre et à soumettre à la rétro-ingénierie, tout en préservant le fonctionnement de l’application.
Pour obfusquer une application .NET MAUI avec Babel Obfuscator, il est recommandé d’utiliser la dernière version de l’obfuscateur et de suivre les bonnes pratiques d’obfuscation : obfusquer tout le code et toutes les ressources, conserver les noms importants au moyen d’exclusions, et tester l’application obfusquée pour vérifier qu’elle fonctionne toujours correctement.
L’exemple utilisé est l’application MAUI TwoPaneView, disponible en téléchargement sur GitHub https://github.com/dotnet/maui-samples .
git clone https://github.com/dotnet/maui-samplesCes exemples d’applications sont conçus pour présenter différentes fonctionnalités du framework MAUI et constituent un bon point de départ pour créer des applications MAUI personnalisées.
Configurer la tâche Babel
Cloner le dépôt de l’exemple
Clonez le dépôt du projet depuis GitHub et enregistrez-le sur votre machine locale.
Ouvrir le projet d’exemple
Accédez au dossier nommé 7.0 dans le dépôt, puis au sous-dossier UserInterface/Views/TwoPaneView. Ouvrez le fichier de solution TwoPaneViewSample.sln qui s’y trouve.
Ouvrir le fichier de projet
Une fois la solution ouverte dans Visual Studio, double-cliquez sur le nœud du projet TwoPaneViewSample dans la fenêtre Solution Explorer (Explorateur de solutions). Le fichier de projet s’ouvre dans l’éditeur de Visual Studio.
Ajouter les instructions MSBuild de Babel
Ajoutez les instructions MSBuild nécessaires à la fin du fichier de projet. Elles indiquent à Babel Obfuscator comment obfusquer le code du projet.
<UsingTask TaskName="Babel" AssemblyName="Babel.Build, Version=10.0.0.0, Culture=neutral, PublicKeyToken=138d17b5bd621ab7" />
<Target Name="Obfuscate" AfterTargets="Compile">
<ItemGroup>
<_BabelSearchDirectories Include="@(ReferencePathWithRefAssemblies->'%(rootdir)%(directory)')" Condition="'%(Extension)' == '.dll'" />
<BabelSearchDirectories Include="@(_BabelSearchDirectories->Distinct())" />
</ItemGroup>
<Babel InputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)" OutputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)" SearchDirectories="@(BabelSearchDirectories)" GenerateDebug="true" ObfuscateTypes="true" ObfuscateEvents="true" ObfuscateMethods="true" ObfuscateProperties="true" ObfuscateFields="true" ObfuscateXaml="true" VirtualFunctions="true" UnicodeNormalization="false" FlattenNamespaces="true" StringEncryption="hash" ResourceEncryption="true" ControlFLowObfuscation="if=on;switch=on;case=on;call=on" ControlFLowIterations="3" />
</Target>Dans le contexte de Babel Obfuscator, le groupe d’éléments @BabelSearchDirectories définit la liste des répertoires dans lesquels le processus d’obfuscation recherche les références d’assembly utilisées dans le projet afin de les résoudre.
Cette liste est obtenue en extrayant les répertoires de recherche de la liste des assemblies référencés par le projet. Babel Obfuscator examine les métadonnées des assemblies référencés pour déterminer l’emplacement de leurs dépendances, puis ajoute ces répertoires à la liste @BabelSearchDirectories. L’obfuscateur trouve ainsi tous les fichiers dont il a besoin pour obfusquer le code du projet.
Générer et exécuter le projet
Vous pouvez maintenant compiler et exécuter l’application .NET MAUI obfusquée.

Application d’exemple MAUI TwoPaneView
Utiliser le package NuGet
Le package NuGet Babel.Obfuscator peut être utilisé sous Windows, macOS et Linux par les détenteurs de l’édition Ultimate, Server ou Data Center. La configuration est alors plus simple : il suffit d’ajouter les paramètres d’obfuscation propres à Babel, sans avoir à configurer les autres éléments de build associés. Avec le package NuGet, les utilisateurs se passent de la tâche Babel et simplifient la configuration de leurs projets.
- Ajoutez Babel.Obfuscator.nupkg au projet TwoPaneViewSample.
- Définissez les propriétés suivantes dans le fichier de projet TwoPaneViewSample :
<PropertyGroup>
<StringEncryption>hash</StringEncryption>
<ResourceEncryption>true</ResourceEncryption>
<ObfuscateXaml>true</ObfuscateXaml>
<ControlFlowObfuscation>if=on;switch=on;case=on;call=on</ControlFlowObfuscation>
<ControlFlowIterations>3</ControlFlowIterations>
</PropertyGroup>Le projet d’exemple contenant déjà les instructions de la tâche Babel peut être téléchargé ici .
Comportement de l’éditeur de liens pour une application .NET MAUI iOS
Lors de la génération d’une application .NET MAUI, un éditeur de liens (ILLink) réduit la taille de l’application en supprimant le code inutilisé. Il ne conserve que les méthodes, propriétés, champs, événements, structures et classes indispensables.
ILLink prend en charge trois modes pour les applications .NET MAUI sous iOS et Mac Catalyst :
- Don’t link (ne pas lier) : toutes les optimisations de l’éditeur de liens sont désactivées.
- Link SDK assemblies only (lier uniquement les assemblies du SDK) : seuls les assemblies du SDK sont optimisés par suppression des types et des membres inutilisés, et vos assemblies restent inchangés.
- Link all assemblies (lier tous les assemblies) : ce mode applique des optimisations qui réduisent la taille de l’application en modifiant le code intermédiaire.
Un assembly obfusqué avec Babel Obfuscator contient du code dynamique et des structures complexes qu’ILLink ne parvient pas à détecter. Des optimisations agressives telles que Link all assemblies peuvent donc nuire au fonctionnement de l’application.
Pour éviter d’éventuels problèmes avec ILLink lorsque vous utilisez des assemblies obfusqués, il est recommandé de régler le mode d’ILLink sur « Link SDK assemblies only ».