2011-07-28 3 views
4

J'expérimentais avec l'outil d'obfuscation SmartAssembly sur un site Web compilé. Cela fonctionne sur la majeure partie du code mais aucune classe dans App_Code n'est obscurcie. par exemple. J'ai la classe suivante dans App_CodeSmartAssembly ignorant l'obfuscation

public class Helper 
{ 
    public Helper() 
    { 
    } 

    public static String GetData() 
    { 
     String text = DateTime.Now.ToString(); 
     return text; 
    } 

    ---Other methods---- 
} 

Cette classe Helper est ignorée. Il ne fait pas de nom mangling sur la classe Helper et ses méthodes. Est-ce que quelqu'un qui utilise SmartAssembly peut aider à cet égard? Y a-t-il d'autres outils rentables (gratuits ou payants) mieux que SmartAssembly?

Répondre

8
  • Disclaimer: Je travaille pour Redgate sur smartassembly *

SA (smartassembly) exclut automatiquement les membres du public dans les DLL de faux-fuyants et la taille, car elle suppose qu'ils seront utilisés à l'extérieur. Vous pouvez modifier ce comportement en éditant le fichier saproj pour rendre la ligne d'obscurcissement ressembler à:

<Obfuscation ExcludePublicMembers="0" Obfuscate="1"> 

Cela obfusquer tous les membres, quel que soit leur statut public.

Cela peut provoquer des problèmes car IIS peut utiliser la réflexion pour rechercher des membres publics spécifiques avec des noms spécifiques. Dans ce cas, vous devrez exclure ces éléments de l'élagage/obfuscation. Comme pour les outils d'obfuscation, SmartAssembly est un obfuscateur assez puissant (les pirates sont d'accord!), Et il contient beaucoup d'extras (rapports d'erreurs, rapports d'utilisation de fonctionnalités, etc.). Mais, bien sûr, il y en a un certain nombre au-delà de SmartAssembly, par exemple. Dotfuscator ou Deep Sea Obfuscator. Certains sont plutôt bons, d'autres sont très mauvais.

Si vous avez plus de problèmes, venez nous demander à: http://www.red-gate.com/products/dotnet-development/smartassembly/support

+1

Merci. J'ai besoin d'avoir un contrôle complet que l'on puisse obscurcir ou non. Par exemple, je peux activer tous les membres publics, mais exclure ceux qui ont l'attribut [WebMethod()] appliqué. C'est possible? – kumar

+1

J'ai essayé d'utiliser les paramètres . cela n'a pas fonctionné. tester mon exemple. Mettez le code dans Classlibrary, construisez-le, changez le saproj mais il ne peut toujours pas obscurcir. Une autre chose est qu'il remplace toujours mon fichier saproj. Il doit y avoir un moyen de contrôler les paramètres dans l'interface utilisateur. J'ai essayé Crypto Obfuscator et il semble beaucoup mieux à la fois dans l'obscurcissement et le prix. – kumar

+0

Je l'ai dit: assurez-vous qu'il est sous le nœud concerné, par exemple:

2

public Les méthodes ne sont pas obfusquées par défaut (dans les DLL - elles le font dans exes). Vous pouvez forcer l'obfuscation, mais vous devez utiliser des décorations de code. Plus de détails can be found here.