none
Mon code anti-décompilation I.L par Dasm est-il bien disposé ? RRS feed

  • Question

  • Bonjour,

    Qui peut me dire comment employer ce code :

    Imports System Imports System.Runtime.CompilerServices <Assembly: SuppressIldasmAttribute()> ' Class Program Shared Sub Main(ByVal args() As String) Console.WriteLine("Le SuppressIldasmAttribute est appliqué à cet assembly") End Sub End Class

    '

    Class Form1 ' ...

    Venant de cette page :

    http://msdn.microsoft.com/fr-fr/library/ms223407.aspx

    *

    A quoi servent les deux imports, car, que je les occulte ou pas le programme semble ne pas en être perturbé, peut-on les supprimer ?

    La class qui renferme l'interdiction va-t-elle être lue en cas de tentative désassemblage de l'IL par Dasm ?

    Merci de vos lumières, cordialement.




    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire


    samedi 8 juin 2013 12:36

Réponses

Toutes les réponses

  • Bonjour,

    Les classes du .NET Framework sont rangées dans ce que l'on appel des "namespaces". On peut voir les namespaces comme le "nom de famille" d'une classe (le nom de la classe étant son prénom => "nom usuel"). Par exemple les classes suivantes se trouvent dans les namespaces suivants :

    • Button : System.Windows.Forms (pour le bouton de Windows Forms)
    • Point : System.Drawing
    • String : System

    Par défaut, on doit utiliser les classes avec leur namespace :

    Dim btn As System.Windows.Forms.Button
    btn = new System.Windows.Forms.Button()

    Le gros problème c'est que c'est trop long à écrire... On préfère écrire ceci :

    Dim btn As Button
    btn = new Button()

    Donc on utilise les "Imports" pour dire au compilateur de rechercher les classes dans les différents namespaces qui ont était spécifié. Les imports sont juste là pour résoudre le nom des classes... Ils n'impactent pas l'exécutable compilé...

    En ce qui concerne l'attribut SuppressIldasmAttribute il ne sert strictement à rien. Il permet d'empêcher l'utilisation de l'utilitaire Ildasm inclus dans le kit de développement du .NET Framework. En revanche les utilisateurs ont la possibilité de décompiler votre code en utilisant d'autres logiciels comme IlSpy,... Il est donc préférable d'utiliser l'Obfuscation pour brouiller votre code (par exemple en utilisant l'utilitaire DotFuscator)...

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Proposé comme réponse Guyome41 mercredi 12 juin 2013 13:05
    dimanche 9 juin 2013 22:31
    Modérateur
  • Bonjour Gilles,

    Merci, mais on me dit que l'offuscation provoque des ralentissement et des plantages ah ?

    Au plaisir, cordialement, Joe.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire


    samedi 22 juin 2013 17:42
  • Bonjour Aurel, j'étais en vacances, désolé...

    J'ai répondu à Gilles,

    Au plaisir. cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire


    samedi 22 juin 2013 17:46
  • Bonjour,

    Non l'offuscation ne provoque pas de ralentissement ou des plantages... C'est juste le nom des méthodes qui changent...

    Il faut noter que certains obfuscateurs optimisent le code généré...

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mardi 25 juin 2013 21:42
    Modérateur
  • Bonjour Gilles,

    Merci, mais... peux-tu me donner le nom d'un bon offuscateur en français avec son mode d'emploi ?

    Sais-tu comment on valide ici une question comme solutionnée, je ne vois plus aucune commande désormais ?

    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire


    mercredi 26 juin 2013 10:07
  • Bonjour,

    Vous pouvez utiliser Dotfuscator de Preemptive : http://www.preemptive.com/products/dotfuscator/overview

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Marqué comme réponse EhJoe jeudi 27 juin 2013 21:31
    jeudi 27 juin 2013 20:40
    Modérateur