Skip to Content
Nouvelle version 12 disponible 🎉
ObfuscatorFusion et incorporationIncorporation des assemblies

Incorporation des assemblies

Babel Obfuscator permet d’incorporer plusieurs assemblies dans l’application principale, ce qui peut réduire la taille totale de l’assembly déployé. Lors de l’incorporation, les assemblies sont d’abord chiffrés et compressés, puis stockés comme ressources managées dans l’assembly principal de l’application.

Notez que les assemblies incorporés ne sont pas obfusqués. Il est donc recommandé de n’incorporer que des assemblies qui ne contiennent pas de code propriétaire, ou des composants qui n’ont pas besoin d’être protégés.

L’incorporation est la méthode recommandée pour produire une application Avalonia en un seul fichier. Comme les assemblies incorporés conservent leur identité d’origine, les URI de ressources avares://<AssemblyName>/… d’Avalonia sont toujours résolus, contrairement à la fusion, qui n’est pas compatible avec Avalonia.

Pour protéger aussi le code, obfusquez d’abord chaque dépendance (en conservant son API publique afin que les références entre assemblies restent intactes), puis incorporez les assemblies déjà obfusqués :

babel MyApp.View.dll --output obf/MyApp.View.dll [obfuscation options] babel MyApp.dll --embed obf/MyApp.View.dll [obfuscation options]

Incorporer depuis la ligne de commande

Pour incorporer des assemblies depuis la ligne de commande avec l’outil Babel, utilisez l’option --embed suivie du chemin du fichier de l’assembly à incorporer. Vous pouvez répéter l’option pour incorporer plusieurs assemblies.

babel MyApp.exe --embed Library1.dll --embed Library2.dll

Cette commande incorpore Library1.dll et Library2.dll dans MyApp.exe. Les assemblies incorporés sont stockés comme ressources managées dans l’assembly principal.

Vous pouvez aussi utiliser un fichier de règles XML pour définir des paramètres supplémentaires, comme la compression ou le chiffrement. Par exemple, créez un fichier nommé embed.xml avec le contenu suivant :

<Rules> <Rule name="Library1" feature="embed" exclude="false"> <Target>Assembly</Target> <Pattern>Library1.dll</Pattern> <Properties> <Compress>false</Compress> </Properties> </Rule> <Rule name="Library2" feature="embed" exclude="false"> <Target>Assembly</Target> <Pattern>Library2.dll</Pattern> <Properties> <Encrypt>false</Encrypt> </Properties> </Rule> </Rules>

Exécutez ensuite la commande suivante pour incorporer les assemblies selon le fichier de règles :

babel MyApp.exe --embed Library1.dll --embed Library2.dll --rules embed.xml

Incorporer depuis la tâche MSBuild Babel

Pour incorporer des assemblies avec la tâche MSBuild Babel, ajoutez un nouvel élément ItemGroup à votre fichier de projet. Dans cet ItemGroup, vous pouvez définir plusieurs éléments EmbedAssembly, chacun indiquant le chemin d’un fichier d’assembly à incorporer. Par exemple :

<ItemGroup> <EmbedAssembly Include="path/to/Assembly1.dll" /> <EmbedAssembly Include="path/to/Assembly2.dll" /> </ItemGroup>

Vous pouvez référencer les éléments EmbedAssembly dans la tâche Babel avec l’attribut EmbedAssemblies :

<Babel EmbedAssemblies="@(EmbedAssembly)" RulesFiles="embed.xml" />

Vous pouvez aussi indiquer un fichier de règles pour personnaliser les paramètres de compression et de chiffrement de chaque assembly incorporé. Par défaut, les assemblies incorporés sont compressés et chiffrés avec les paramètres par défaut de Babel, mais un fichier de règles permet de les personnaliser si nécessaire.

Incorporer depuis Babel Desktop

Pour incorporer des assemblies avec Babel Desktop, procédez comme suit :

Ouvrir ou créer un projet

Ouvrez un projet existant ou créez-en un nouveau.

Ajouter les assemblies

Ajoutez au canevas du projet l’assembly principal et les assemblies à incorporer.

Relier les dépendances

Reliez chaque dépendance à l’assembly principal : faites glisser du point d’ancrage inférieur de la dépendance vers le point d’ancrage supérieur de l’assembly principal.

Régler le type de dépendance sur Incorporer

Cliquez sur la ligne de la dépendance et réglez son type sur Incorporer. Les nouvelles dépendances sont par défaut de type Fusionner lorsque l’assembly principal référence la dépendance, sinon de type Référence.

Configurer la compression et le chiffrement

Configurez la compression et le chiffrement des assemblies incorporés avec des règles XML dans la vue Règles XML de l’assembly principal.

Voir Projets d’obfuscation pour en savoir plus sur le canevas du projet.

Last updated on