| « Fiddler ou l'art de bien gérer sa bande passante. | » |
De retour pour l'offuscation
Après une longue absence, même très longue, me voiçi de retour sur les blogs DNG. J'espère que ma bonne résolution 2007 mais aussi mon temps libre me permettront de rédiger beaucoup plus souvent.
Et si on parlait d'obfuscation ?!?
Quoi de plus agaçant que de se faire voler son code source par son voisin de bureau afin qu'il en récolte la gloire !!!
Si si, je l'ai vécu il y a quelques semaines :-)))
Alors comment faire pour éviter (ou plutôt limiter) l'utilisation d'outils tiers tels que ILDASM.exe ou Reflector (pour les plus connus).
La technique pour limiter les menaces s'appelle "L'obfuscation" ou offuscation si l'on veut franciser le terme.
De quoi s'agit-il ?
Sans changer la finalité du code, l'offuscation protège le code source de la décompilation. Il s'agit d'une technologie qui rend beaucoup plus difficile la décompilation et freine considérablement les effets de reverse-engineering protégeant ainsi le code source de menaces éventuelles.
Il s'agit d'une technique, qui entre autre, renomme de manière automatique et transparente les symboles de l'assembly afin de les rendre plus compliqués à interpréter.
Quel est l'intérêt d'offusquer son code ?
Il y a plusieurs bonnes raisons de le faire :
- La taille de l'assembly s'en trouve réduit
- Les performances sont du coup meilleur
- Et surtout la propriété intellectuelle s'en trouve protégée.
Comment cela fonctionne t-il ?
Offuscation encrypte le code source et supprime les informations non nécessaire des métadonnées de l'assembly lorsque cela est possible et sûr. Les métadonnées de l'assembly et le manifeste sont utilisées par les désassembleurs pour décompiler et restituer le code source d'origine. A noter que même si l'application est compilé en code native lors de l'exécution, le runtime .NET nécessite encore que les métadonnées et le code IL soit inclus dans l'assembly avant de démarrer l'exécution.
L'offuscation ne change jamais, ni le code source, ni les fonctionnalités, mais transforme les assemblies en utilisant une méthode d'encryption spécifique.
Comment faire ?
De nombreux outils open source ou commerciaux existent pour cela. Un outil est fournit avec Visual Studio 2005 :
Dotfuscator Community Edition.
http://msdn2.microsoft.com/fr-fr/library/ms227240(VS.80).aspx
"Dotfuscator Community Edition est une version gratuite qui offre une offuscation de base. Son but principal est de renommer les identificateurs, en compliquant l'ingénierie à rebours. Dotfuscator Community Edition intègre des technologies avancées afin de faciliter cette protection."
Cet outil existe aussi en version Standard et Professionnel :
http://msdn2.microsoft.com/fr-fr/library/ms227255(VS.80).aspx
Est-ce la bonne solution ?
Malheureusement, aucun logiciel d'offuscation ne permet de protéger complètement le code source. Même si cela est un excellent moyen pour contrer la plupart des décompilateurs, si vous êtes déterminé et possédez un excellent niveau, vous serez toujours capable de piller le code depuis une assembly offusquée.
Une excellente présentation plus détaillée existe ici
3 commentaires
http://www.secdev.org/conf/skype_BHEU06.handout.pdf
Tu ne m'as pas dit tout à l'heure que tu venais d'écrire un nouveau blog!!!!
et pour Java : http://javatoolbox.com/categories/code-protectors-obfuscators