2009-04-23 7 views
3

Lorsque je tente d'utiliser dotfuscate sur ma demande, je reçois une erreur d'application quand je le lance.Comment utiliser un obfuscateur en toute sécurité?

+1

Pouvez-vous nous dire ce que l'erreur est? –

+1

ne pas coller votre doigt dans l'obfustacator, sauf si vous avez besoin d'un rein en arrière. –

Répondre

9

La plupart du problème que je l'ai rencontré avec l'obscurcissement tournent autour de types qui ne peuvent avoir leur nom changé, parce que quelque chose doit réfléchir sur eux (votre code ou le moteur d'exécution).

par exemple si vous avez une classe qui est utilisé comme proxy de service Web, vous ne pouvez pas masquer en toute sécurité le nom de classe:

public class MyWebServiceProxy : SoapHttpClientProtocol 
{ 

} 

En outre, certains obfuscators ne peut pas traiter des méthodes génériques et des classes.

L'astuce est que vous devez trouver ces types et empêcher la obfuscater de les renommer. Cela se fait avec l'attribut obscurcissement:

[global::System.Reflection.Obfuscation(Exclude=true, Feature="renaming")] 
10

Dotfuscator (et tous obfuscators) sont généralement sans danger pour fonctionner sur une application, mais ils ne parfois causer des problèmes. Sans les détails spécifiques de votre problème, il est difficile de diagnostiquer.

Cependant, un problème commun avec obfuscators est quand vous les mélanger avec la réflexion. Puisque vous changez les noms de type, mais pas les chaînes, chaque fois que vous essayez de réfléchir sur des objets avec un nom de chaîne spécifique et que vous utilisez l'espace de noms de la réflexion pour construire des objets, vous aurez probablement des problèmes.

+0

Je suis juste curieux - mais pourquoi le downvote? Ce serait bien de savoir pourquoi les gens ne sont pas d'accord ... –

0

Une autre chose qui peut être un problème avec obfuscators est sérialisation en utilisant BinaryFormatter, car il change les noms des champs. J'ai quelques utilisateurs qui utilisent protobuf-net pour la sérialisation sur leur code obfusqué pour cette raison.

Questions connexes