Je veux obfusquer mes fichiers de montage (* .dll, * .exe) par dotfuscator strong>. Ma question est si je fais si je le fais, puis-je toujours utiliser des classes et des types qui se trouvent dans ces assemblages par leurs noms d'origine (je veux dire des noms avant l'obfuscation) et en utilisant Si vous avez besoin de plus en détail, dites-moi em> p> system.reflet code> méthodes pour travailler avec eux? < / p>
4 Réponses :
Vous pouvez utiliser system.reflet code> sur un ensemble obscurcié, mais car une partie du point d'obfuscation est de renommer tout dans l'assemblage en éléments aléatoires et sans signification, vous ne pouvez pas faire de réflexion sur le mêmes noms et identifiants que vous le feriez dans une assemblée non obscurcie. Si vous souhaitez faire une réflexion sur une assemblée obscurposée, vous devriez le faire d'une manière qui ne dépendent pas de quels types et quels membres sont nommés. P>
Normalement, les membres publics ne sont pas obscurcés (ou du moins il existe une option pour ne pas obscoper les membres du public)
@Asbjornu - Y a-t-il une méthode de réflexion et d'éviter d'utiliser le nom des membres?
Une solution (ou non) créerait une classe statique, qui accueille un dictionnaire System.tPe, puis lorsque vous devez utiliser la réflexion, obtenez le type de ce dictionnaire. Donc, de sorte que le nom de la méthode / la classe est devenu après l'obspuciateur, vous avez toujours une référence pour cela. Bien sûr, si vous avez des types indénombés dans votre assemblée, vous vous retrouverez avec un géant, sans une classe statique de modèle de conception, cela pourrait causer des problèmes de performance dans votre application et également des exceptions non manquées.
Lire par exemple ici http: // msdn .microsoft.com / fr-US / Bibliothèque / MS227298 (v = vs.80) .aspx Il existe un "mode bibliothèque" pour désactiver l'obscurcissement des membres du public. Autres ci-dessus, vous ne pourrez probablement pas accéder aux méthodes. Il y a un attribut à contrôler l'obfuscation au niveau de type: http : //msdn.microsoft.com/en-us/library/ms227281 (v = vs.80) .aspx p>
Obfuscation Est-ce que la réflation peut vous causer un problème. Même si vous prenez la suggestion d'utiliser l'option pour ne pas obscurcer la méthode publique, une partie du code reflété peut appeler une méthode privée. Le problème est que l'obfuscation changera le nom de certains codes que vous devrez peut-être rester identique.
Si vous savez ou pouvez localiser la région susceptible d'être utilisée avec réflexion, vous pouvez utiliser P>
[global::System.Reflection.Obfuscation(Exclude=true, Feature="renaming")]
Vous pouvez créer votre propre carte privée pour obtenir de nouveaux noms d'anciens. Mapper doit écrire Table d'une sorte sur le disque / DB avec la structure suivante: Module (exécutable), Index, originalType, OBFUSCASTEDTYPE
Créer une application de console "mapper" qui fonctionne sur deux modes en fonction d'un argument: L'application recevra en tant que piste exécutable argument p>
Vous avez maintenant besoin d'une fonction pour getobfusculatedname à partir d'originalName et vous avez terminé. p>
Notez que cette solution ne fonctionnera pas avec la taille, car le nombre de types change et les index ne seront plus utilisés. Correspondre entre p> et p>