Premiers pas
Le plugin « Babel Encrypt » est un composant inclus dans l’édition Ultimate de Babel Obfuscator. Avec l’édition Enterprise, il doit être acheté séparément. Ce plugin se présente sous la forme d’un fichier d’assembly nommé « BabelEncrypt.dll » et fonctionne avec l’outil en ligne de commande Babel. Pour l’utiliser, indiquez le chemin du fichier du plugin sur la ligne de commande, comme suit :
babel myapp.exe --plugin BabelEncrypt.dll --stringencryption customIci, myapp.exe est l’assembly cible à obfusquer. L’argument [custom] de l’option de chiffrement des chaînes est nécessaire pour que babel utilise l’algorithme fourni par le plugin à la place des algorithmes de chiffrement des chaînes intégrés.
Arguments du plugin
Le Babel Encrypt Plugin accepte les arguments facultatifs suivants :
password <string>Définit le mot de passe utilisé pour chiffrer les données de chaîne. Le chiffrement est effectué avec l’algorithme Triple DES. S’il n’est pas indiqué, un mot de passe aléatoire est généré.
iterations <number>Nombre de passes de chiffrement à effectuer (valeur par défaut : 1).
minStringLength <number>Une chaîne dont la longueur est inférieure à la valeur indiquée n’est pas chiffrée. Lorsque cette option vaut 0, toutes les chaînes sont chiffrées, quelle que soit leur longueur : c’est le comportement par défaut. Une valeur supérieure à 0 exclut les chaînes courtes du chiffrement, ce qui peut améliorer les performances ou présenter d’autres avantages selon votre cas d’utilisation. Notez que la longueur minimale choisie a un effet direct sur le niveau d’obfuscation appliqué à votre assembly.
minHashStringLength <number>Définit la longueur minimale des chaînes à chiffrer avec l’algorithme HASH (valeur par défaut : 15).
useLocalVars <true|false>Indique s’il faut créer des variables locales pour appeler la méthode de déchiffrement (valeur par défaut : false). Par défaut, cette option vaut « false » : la méthode de déchiffrement n’est pas appelée au moyen de variables locales de la méthode. Si elle vaut « true », la méthode de déchiffrement est appelée au moyen de variables locales de la méthode. Le code est ainsi davantage brouillé et l’assembly obfusqué mieux protégé. L’emploi de variables locales pour le déchiffrement peut rendre le code plus difficile à comprendre et à soumettre à la rétro-ingénierie, car le chemin d’exécution est plus complexe et moins prévisible. Il peut toutefois réduire les performances de l’assembly obfusqué, puisque les variables locales peuvent augmenter la mémoire utilisée et le temps de traitement nécessaires à l’exécution du code.
extraControlFlow <true|false>Cette option vise à relever le niveau de sécurité et à empêcher que les chaînes chiffrées soient facilement soumises à la rétro-ingénierie ou décompilées. Lorsqu’elle est activée, une obfuscation supplémentaire du flux de contrôle est appliquée à la méthode qui contient des chaînes chiffrées, ce qui rend le code plus brouillé et plus difficile à comprendre. La valeur par défaut est « false », mais vous pouvez la modifier selon le niveau d’obfuscation et de protection voulu.
checkDeobfuscators <true|false>La détection d’un outil de désobfuscation est une fonctionnalité de sécurité de Babel Obfuscator qui aide à empêcher la rétro-ingénierie du code obfusqué.
Indique s’il faut vérifier la présence d’un outil de désobfuscation. Si un désobfuscateur est détecté, les chaînes ne sont pas déchiffrées et le programme échoue silencieusement (valeur par défaut : false).
useCodeEncryption <true|false>Indique s’il faut utiliser le chiffrement du code de Babel Obfuscator pour chiffrer le code des méthodes de déchiffrement des chaînes. Cette option ne fonctionne que si le chiffrement du code est activé (valeur par défaut : false).
dictionary <path|expression>Le fichier texte indiqué contient une liste de chaînes ou d’expressions régulières qui déterminent quelles chaînes l’outil d’obfuscation ne doit pas chiffrer. Chaque ligne du fichier doit représenter une chaîne exacte ou un motif d’expression régulière. L’outil d’obfuscation utilise ces informations pour exclure du chiffrement les chaînes de la liste. Les expressions régulières permettent d’exclure des chaînes de manière plus souple et plus large, tandis que les chaînes exactes garantissent que des chaînes précises ne sont pas chiffrées, quel que soit le motif général.
Exemples
Voici quelques exemples d’utilisation du plugin depuis la ligne de commande de Babel Obfuscator.
Protection moyenne
Active la détection des désobfuscateurs en plus de la configuration par défaut du plugin.
babel myapp.exe --plugin BabelEncrypt.dll --stringencryption custom --argument checkDeobfuscators=trueProtection complète
Cet exemple montre comment activer toutes les fonctionnalités du plugin, avec un flux de contrôle supplémentaire pour l’appelant du déchiffrement et des variables locales pour appeler la méthode de déchiffrement.
babel myapp.exe --plugin BabelEncrypt.dll --msilencryption --stringencryption custom --argument iterations=2 --argument extraControlFlow=true --argument useLocalVars=true --argument useCodeEncryption=trueUtiliser un dictionnaire externe
Vous pouvez utiliser un fichier texte comme dictionnaire de mots à exclure. Chaque ligne peut être la chaîne exacte à exclure ou une expression régulière.
babel myapp.exe --plugin BabelEncrypt.dll --stringencryption custom --argument dictionary=exclusionlist.txtContenu du fichier texte exclusionlist.txt :
.*@acme.com
No secret here to encryptConfigurer Babel Encrypt dans DevOps
Si vous utilisez le package NuGet Babel.Obfuscator dans votre environnement DevOps ou dans tout autre système de build qui prend en charge les packages NuGet, vous pouvez ajouter le plugin Babel Encrypt à votre processus de build.
Ajoutez pour cela les instructions MSBuild suivantes à votre fichier de projet :
<ItemGroup>
<BabelPlugin Include="$(BabelTaskDir)BabelEncrypt.dll" />
</ItemGroup>
<PropertyGroup>
<PluginsArguments>iterations=3</PluginsArguments>
</PropertyGroup>Une fois ces instructions en place, chaque build déclenché dans votre environnement DevOps ou votre système de build appelle le plugin Babel Encrypt, qui ajoute un chiffrement supplémentaire à l’obfuscation du code assurée par Babel Obfuscator.
Configurer Babel Encrypt dans Babel Desktop
Vous pouvez configurer le plugin pour une cible depuis l’interface de Babel Desktop plutôt qu’en ligne de commande :
- Sélectionnez l’assembly sur le canevas et ouvrez ses Paramètres.
- Sous Fichiers et dépendances, ajoutez le chemin de
BabelEncrypt.dllà Plugins. - Exécutez Plugins du moteur : découvrir les noms d’arguments depuis la palette de commandes. Babel lit les arguments que le plugin déclare et renseigne les clés de PluginsArguments, où vous saisissez leurs valeurs.
- Réglez String Encryption sur
custompour que le moteur utilise l’algorithme du plugin à la place des algorithmes intégrés. - Pour utiliser
useCodeEncryption, activez aussi MSIL Encryption.
Le plugin s’exécute dans le processus local du moteur avec les autorisations de votre compte : n’ajoutez qu’une DLL de plugin à laquelle vous faites confiance. Chaque paramètre s’applique à l’assembly sélectionné ; répétez ces étapes pour chaque cible qui a besoin du plugin.