Obfuscateur 'traditionnel'
Cette méthode consiste à obscursir le code en changeant les nom des méthodes, propriétés, classes, espaces de noms...
Cette action peut empêcher le code de s'exécuter correctement:
Elle rend impossible la reflection sur les symboles maquillés, même dans le cas de reflection interne (à l'interieur même de l'assembly).
l'obfuscation est activée dans dotNet Protector si vous cochez la case 'maquiller les nom' dans l'onglet protection. dotNet Protector change alors le nom des symboles inaccessibles en dehors de l'assembly (internal, private).
Obfuscation intégrale
Dans le cas d'un programme (.exe) qui n'a pas a être référencée par d'autres assemblies l'obfuscation peut également s'appliquer aux symboles publiques.
Cette obfuscation intégrale est activée en cochant 'maquiller les noms publics.
Protection Avancée
Il s'agit ici de maquiller le corps des méthodes. Cette protection est complémentaire à l'obfuscation, elle peut même être compatible avec un obfuscation en amont réalisée avec un autre outil que dotNet Protector.
Lorsque la protection avancée est activée, toutes les méthodes ont le même corps : throw new ApplicationException
Toutes les méthodes sont alors cryptées et décryptées lors de leur exécution. Une fois compilée, la méthode est cryptée à nouveau. L'assembly n'est ainsi jamais présent entièrement décrypté en mémoire (à moins que votre assembly n'est qu'une seule méthode).
L'utilisation de la protection avancée necessite la runtime de dotNet Protector à l'exécution. Sans cette runtime, c'est la version cryptée de la méthode qui s'exécute (ApplicationException).
Runtime Embarquée
La protection des programmes (.exe) peut se faire avec un niveau supplémentaire de protection apporté en générant un exécutable avec runtime embarquée.
L'exe généré est alors un assembly mixte (qui contient à la fois du code natif et du code managé). L'assembly protégé suivant la méthode de protection avancée, avec ou sans obfuscation est transformé en netmodule et embarqué aussi dans l'exécutable produit. Lors de l'exécution, le module protégé est chargé en mémoire et exécuté. Cette option vous dispense de déployer la runtime de dotNet Protector, puisqu'elle est incluse dans l'exécutable.