2010-03-05 9 views
11

Nous envisageons d'obscurcir un peu de code avant de le livrer aux clients. Nous nous interrogeons sur l'impact que cela aura sur le support technique. Les clients peuvent-ils nous fournir des traces de pile significatives ou vont-ils être obfusqués aussi?Obfuscator & Support technique

J'ai hâte d'entendre parler de votre expérience. Merci d'avance.

Répondre

9

vous obtiendrez des traces de pile obfuscated. mais les obfuscateurs peuvent générer des fichiers de mappage qui mappent des noms obfusqués à des noms réels. Vous devez conserver ces fichiers de mappage dans un endroit sûr et vous pouvez les utiliser pour "désobjecter" les traces de la pile à nouveau si nécessaire. Dans le cas d'un support technique, vous pouvez créer une interface Web simple où les personnes de support technique peuvent coller des traces de pile. Ainsi, seul le serveur Web doit avoir accès aux fichiers de mappage pour pouvoir restaurer les traces de la pile d'origine.

voici deux liens expliquant le processus avec Dotfuscator obfuscateur:

http://www.preemptive.com/images/stories/dotfuscator_documentation/Dotfuscator/The_Map_File.html

http://www.preemptive.com/images/stories/dotfuscator_documentation/Dotfuscator/Decoding_Obfuscated_Stack_Traces.html

+2

Comme indiqué, les traces de pile de désobstruction sont disponibles dans la plupart des outils (par exemple, http://www.ssware.com/cryptoobfuscator/obfuscator-net).htm) –

+0

Je crée parfois un service Web pour recevoir des rapports d'erreur. L'utilisateur peut soumettre un bouton "soumettre un rapport d'erreur" et la trace de la pile et d'autres informations utiles sur l'état du programme peuvent être transmises sans risquer que la trace de la pile soit encodée dans le mauvais format (car beaucoup d'obfuscateurs utilisent des caractères Unicode pour la classe/méthode des noms). –

1

Si les méthodes de la pile sont obscurcies dans votre version, vous obtiendrez les noms de méthode obfusqués dans toute trace de pile.

Si vous mettez quelque chose dans votre code pour vous aider à comprendre quelles sont les méthodes utilisées, les pirates potentiels peuvent utiliser cette information pour mieux comprendre votre code.

Une stratégie courante consiste à obscurcir seulement une partie du code, y compris (mais sans s'y limiter) les parties qui vérifient les licences. Si vous dissimulez JUSTE les vérifications de licence, il est assez facile de se concentrer sur la partie qui a besoin de l'attention d'un pirate.

+0

Je me demande si la société peut retenir un journal obfuscating pour l'obfuscation sur le code source qu'ils peuvent utiliser en interne pour obtenir à l'endroit réel l'erreur s'est produite. –

+0

Voir le commentaire de Nissan Fan. Votre outil devrait être capable de désobferger la trace de la pile ... SI vous l'obtenez comme un fichier correctement encodé. Beaucoup d'obfuscateurs utilisent des caractères Unicode pour les noms de classes et de méthodes, ce qui les rend particulièrement difficiles à lire à l'écran. Étant donné seulement une capture d'écran, ou un fichier texte non-unicode, il sera difficile de revenir en arrière. Je crée parfois un service Web pour les erreurs de consignation pour m'assurer que le programme soumet tout ce dont j'ai besoin pour diagnostiquer une erreur. Ce serait une méthode sûre pour obtenir la trace de pile codée correctement (unicode). –

1

Ce n'est généralement pas un problème puisque la plupart obfuscators fournissent la capacité de dé-obfuscate traces de pile à leur trace originale.

1

Nous utilisons BitHelmet. Le problème est, en utilisant la technique d'obfuscation la plus forte, trace de la pile ne peut pas être désobfuscated. BitHelmet utilise le renommage complet de la signature (une sorte d'induction de surcharge, mais mieux). Ce qui se passe est que beaucoup de méthodes se retrouvent avec le même nom mais avec un type de retour différent (cela ne peut pas être fait en C#, mais c'est OK pour le CLR). Les types de retour ne sont pas affichés dans les traces de pile! il n'est donc pas possible de désobstruer la trace de la pile en utilisant l'obfuscation la plus forte.

Nous avons posé la même question que vous, nous en avons discuté et nous sommes parvenus à la conclusion qu'en fait, nous préférons la meilleure obfuscation. Les traces de pile ne sont en fait pas très utiles lors de la fourniture de support technique que d'autres données que seul l'utilisateur final peut fournir. "S'il te plaît, dis-moi exactement ce que tu faisais ???" :)