IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Protection d'une application contre le piratage


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut Protection d'une application contre le piratage
    Salut à tous,
    je viens de finir le développement d'une application C#. Pour éviter qu'elle soit piratée, je procède par la personnalisation du setup en faisant un contrôle de l'adresse MAC du poste sur lequel elle doit être installé. Le client devra me fournir certaines informations y compris son adresse MAC pour que le setup soit personnalisé.
    Je vous soumet le code afin que vous me donnez votre de vue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     private void Formdemarrage_Load(object sender, EventArgs e)
            {   //Empecher l'application de fonctionner sur plusieurs postes sans l'accord de l'editeur.
                //On recupere l'adresse MAC du poste automatiquement et on la compare à l'adresse MAC fournit par le client. 
     
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"] == true)
                    {
                        string mac = mo["MacAddress"].ToString(); //Ma variable mac reçoit l'adresse MAC  du poste sur lequel l'installation est faite
                        string macclient = "XX:XX:XX:XX:XX:XX"; // L'adresse MAC qui ma été fournit par le client
                        if (mac != macclient)
                        {
                            MessageBox.Show("Cette version de logiciel ne vous est destinée. Merci de contacter l'editeur pour plus d'information. Tel : 000000000, Email: xxxxx@xxxxx.xx");
                            Application.Exit();
                        }
                        mo.Dispose();
                    }
                }
     
     
            }

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 208
    Points : 727
    Points
    727
    Par défaut
    Bonjour,

    Si c'est ta seule protection, "il suffit" de décompiler ton programme .NET et d'enlever les lignes de vérification.
    Ou alors de récupérer l'adresse MAC valide dans le code (ou en mémoire) et de la mettre sur ta carte réseau (très facile si c'est une VM).

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Si c'est ta seule protection, "il suffit" de décompiler ton programme .NET et d'enlever les lignes de vérification.
    Ou alors de récupérer l'adresse MAC valide dans le code (ou en mémoire) et de la mettre sur ta carte réseau (très facile si c'est une VM).
    j'ai orienté mes recherches en fonction de ton point de vue et je suis tombé sur JetBrains et DisSharpF. Après installation, j'ai importé l’exécutable de mon programme mais je ne vois pas ma ligne de contrôle. Leruas tu peux me donner le nom de quelques decompilateurs gratuits et fiables pour que je puisse vérifier en profondeur ton point de vue.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 208
    Points : 727
    Points
    727
    Par défaut
    J'utilise Reflector, il te permet d'explorer chaque classe de ton .exe.
    Tu peux alors trouver la méthode de contrôle.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur C#/C++
    Inscrit en
    Décembre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur C#/C++
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2012
    Messages : 18
    Points : 38
    Points
    38
    Par défaut
    Bonjour #degio1er,
    Si tu veux vraiment protéger ton programme, tu dois utiliser des méthodes d'identification correct, via une validation sur un serveur distant par exemple. Ensuite tu utilises un "brouilleur de code" comme Dotfuscator. Pour désassembler un assembly Microsoft te fournis ILDASM.exe dans "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools" pour ma part. Tu peux aussi utiliser ILSPY, qui rend plus lisible sur le contenu des classes.

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    bonjour

    tu peux aussi ne pas dépenser trop d'énergie et d'argent car protéger une application en .Net, c'est un peu inutile... Par contre, éviter que ton application
    soit facilement utilisée par des novices, c'est plutôt simple...

    Après, le système de licence, que ça soit via réseau ou en local, ça se craque toujours puisque c'est du .Net...


    Parfois, certains éditeurs "s'amusent" à mettre du code dans une DLL C++ (donc, plus difficile à cracker)... et éventuellement mette du code de contrôle
    de la licence un peu partout dans le code C++..

    Franchement, en .Net, essayer de protéger son code est un peu illusoire en dehors des protections classiques d'enregistrement ou autre...

    N'y passe pas plus de temps que ça !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    j'ajouterais que la protection dépend de la notoriété et du public visé
    mais en effet sécuriser une application .net n'est pas vraiment faisable, enfin rien n'est sécurisable (sinon sony et autres orange ne se feraient pas piquer des données tous les mois) mais en .net c'est encore plus dur
    par contre la sécuriser contre tel niveau d'utilisateurs oui c'est faisable avec des méthodes comme la tienne (décompiler et lire le code n'est pas donné à tout le monde)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Bonjour,

    j'aimerai rajouté qu'aucune application n'est protégée , .NET ou non. Il suffit de s'y connaitre en assembleur pour faire sauté n'importe quelle protection.

    Par contre , comme ça a été déjà dit , le principal c'est de protéger l'application contre les menaces les plus courantes.

    A moins que ton application fasse un tabac et soit pris par cible par des hordes de teams de cracking , il n'y a aucun risque.

    Si tu veux plus d'infos :

    http://www-igm.univ-mlv.fr/~dr/XPOSE...ratique.html#3

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Merci à tous pour vos messages. j'ai désormais l'esprit clair par rapport à la sécurité des applications .Net ou autres.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Protection d'une application
    Par lololebricoleur dans le forum WinDev
    Réponses: 3
    Dernier message: 02/02/2013, 12h35
  2. Protection d'une application avec un serial
    Par Seth77 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 06/10/2011, 12h04
  3. Protection d'une application windows form
    Par inno007 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 01/10/2010, 13h30
  4. Protection d'une application web sous Tomcat
    Par midou84 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 15/01/2008, 08h42
  5. Protection d'une application hors sécurité Access
    Par Domi2 dans le forum Sécurité
    Réponses: 13
    Dernier message: 21/06/2007, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo