L'obfuscation "Simple" en .Net avec "Dotfuscator"

 27/05/2015 |   Admin |  C#


"En informatique, un obfuscateur est un utilitaire qui transforme le bytecode d'un programme en un bytecode aux fonctions équivalentes mais plus difficile à décompiler.

Le but de cet outil est de protéger un programme d'attaques ou d'intrusions notamment dans le domaine de l'espionnage industriel." cf Wikipédia

Cette technique permet d'obtenir un code impénétrable.

Introduction

Pour ce tutorial, je vais utiliser une classe très simple, la classe HelloWorld.cs, contenant une propriété, deux constructeurs et une méthode :

//-----------------------------------------------------------------------
// <copyright file="HelloWorld.cs" company="PH">
//     Copyright (c) PH. All rights reserved.
// </copyright>
// <author>PH</author>
// <date>01/09/2010</date>
//-----------------------------------------------------------------------
namespace Dotfuscator
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
 
    /// <summary>
    /// HelloWorld Class
    /// </summary>
    public class HelloWorld
    {
        /// <summary>
        /// Initializes a new instance of the HelloWorld class
        /// </summary>
        public HelloWorld()
        {
        }
 
        /// <summary>
        /// Initializes a new instance of the HelloWorld class with parameters
        /// <param name="text">text parameter</param>
        /// </summary>
        public HelloWorld(string text)
        {
            this.Text = text;
        }
 
        /// <summary>
        /// Gets or sets Texte
        /// </summary>
        public string Text { get; set; }
 
        /// <summary>
        /// Get "hello world" string
        /// </summary>
        /// <returns>The "Hello World" string</returns>
        public string GetHelloText()
        {
            return "Hello World";
        }
    }
}

1) Analyser une DLL non obfusquée avec "Reflector"

Reflector est disponible ici

On peut distinguer clairement la propriété ainsi que la méthode.

2) Ouvrir "DotFuscator"

Soit en allant dans : Programmes/Microsoft Visual Studio 2008/Visual Studio Tools/Dotfuscator Community Edition

Ou alors directement à partir de visual studio en allant dans l'onglet Outils puis Dotfuscator Community Edition

A l'ouverture, un écran propose de sélectionner un type de projet. Pour une première utilisation laisser "Créer un nouveau projet".

L'onglet "Entrée" devient actif, il suffit de cliquer sur l'icone Ouvrir "Rechercher et ajouter un assembly à la liste", et d'y ajouter votre ou vos DLL.

Enregistrer le projet.

Rendez-vous ensuite dans l'onglet "Générer", vous pouvez changer le répertoire de destination si nécessaire puis cliquer sur "Générer".

Maintenant vous pouvez aller dans l'onglet "Sortie" pour comparer avec l'analyse de Reflector.