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 :

Comment désassembler et assembler une DLL .Net ?


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut Comment désassembler et assembler une DLL .Net ?
    Bonjour à tous !

    J'ai une vielle DLL en .Net 1.1 ou 2.0 écrite en VB.
    J'ai les sources mais je n'ai plus vraiment les outils (et le courage) pour la re-compiler (vs 2003) et le projet est bordélique.

    Afin d'éviter tout risque je souhaite simplement modifier un attribut DLLImport (inscrit dans les références dans ILSpy ou reflector).

    Pour cela j'ai utiliser Cecil de Mono, ca marche bien, mais ce qui m’inquiète c'est que la DLL est passé de 868 Ko a 840Ko ! pour un simple attribut...

    Je me suis donc posé la question de comment Decompiler simplement ma DLL, changer cette attribut, puis re-assembler le tout pour revenir au 868 Ko d'origine et éviter un écueil (et surtout pour ma connaissance perso)

    J'ai essayé d'utiliser les tools de vs2010 IL DASM... mais c'est un peu une coquille vide...


    Merci grandement !

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Voici celui que j'utilises, il est gratuit en plus.

    http://www.telerik.com/products/decompiler.aspx

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    PatteDePoule
    Merci de me répondre surtout à cette heure ci

    Donc tu me confirmes qu'il permet d'exporter et surtout re-assembler ? Pour pouvoir éditer un attribut...

    c'est impec ca ! J'essaie ça demain !

    merci

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    En fait je suis en GMT-5

    JustDecompile peut tout t'exporter dans un projet Visual Studio. Suffit ensuite de le recompiler.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    A le canada j'avais pas vu OK !

    En fait c'est pas exactement ca que je recherche, je ne cherche pas à exporter les sources.
    L'idée c'est de faire comme un desassembler binaire sauf que c'est sur du .Net IL.
    Car si il me génère le projet / solution, je ne suis pas sur de pouvoir le compiler...

    je veux vraiment dans l'idée, desasembler puis réassembler... je ne sais pas si c'est possible en .Net...

  6. #6
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Reflector a une extension qui permet de modifier l'assembly : Reflexil
    http://reflexil.net/

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Citation Envoyé par alavoler Voir le message
    En fait c'est pas exactement ca que je recherche, je ne cherche pas à exporter les sources.
    L'idée c'est de faire comme un desassembler binaire sauf que c'est sur du .Net IL.
    je veux vraiment dans l'idée, desasembler puis réassembler... je ne sais pas si c'est possible en .Net...
    En quoi l'ILDASM standard de .NET ne te convient pas ? Bien entendu il ne te génére pas de l'asm (cela n'aurait pas plus de sens en .NET qu'en Java) mais de l'IL.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Bluedeep
    Salut !
    Je lance ILDASM depuis l'invite de commande VS2010: ildasm

    Je me retrouve avec un soft, qui permet de lire l'arborescence et de la dumper (export text qui selon moi ne me sert pas c'est juste une arborescence...)

    En quoi puis-je éditer un attribut ? (en l'occurence DLLIMPORT)
    En quoi puis-je re-sauvegarder cette DLL avec ce changement d'attribut ?

    Je dois louper quelque chose...

    PS:
    Cecil est optimisé au niveau du linkage, d'où le gain non négligeable des 20 KO ! Ceci, explique cela...

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par alavoler Voir le message
    Bluedeep
    Salut !
    Je lance ILDASM depuis l'invite de commande VS2010: ildasm

    Je me retrouve avec un soft, qui permet de lire l'arborescence et de la dumper (export text qui selon moi ne me sert pas c'est juste une arborescence...)

    En quoi puis-je éditer un attribut ? (en l'occurence DLLIMPORT)
    En quoi puis-je re-sauvegarder cette DLL avec ce changement d'attribut ?
    .
    J'avoue rarement m'amuser à modifier l'IL directement (jamais à vrai dire).
    Mais si ta modification est faisable dans l'IL (pour le DLLImport, je n'en sais rien à vrai dire), tu dump ton IL avec ILDASM , tu le modifie et tu récréer ton assembly avec ILASM (option /DLL ou /EXE suivant le type de l'assembly).

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Je dois t'avouer que lorsqu'on veut faire ca, c'est vraiment qu'on est mal / qu'on franchi la ligne rouge, je te l'accorde !

    oki donc j'arrive à créer le fichier IL:
    soit depuis l'interface (en cochant tout...)
    soit avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ildasm MyApp.exe /output:MyApp.il
    http://msdn.microsoft.com/en-us/libr...=vs.80%29.aspx

    Ok mais comment je réassemble le IL modifié ?

    EDIT:
    Il faut surement utiliser ilasm (et pas ildasm) héhé... j essaye

  11. #11
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par alavoler Voir le message
    Ok mais comment je réassemble le IL modifié ?
    cf. mon message précédent : tu le fais avec ILASM.
    ILDASM pour assembler, ILSASM pour assembler (ne pas oublier le D).

    EDIT : je vois que tu avais trouvé entretemps.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Oki donc le circuit fonctionne bien

    ILDASM permet de désassembler (d'où son nom )
    Et ILASM en ligne de commande permet d'assembler

    Chose Curieuse:
    Ma Dll est encore plus légère de 2 Ko par rapport à cecil ! (j'ai VS2010)

    DLL Original VS2003 868 Ko
    Avec Cecil 844 Ko
    Avec ILASM 842...

    Bon ba ma curiosité est comblée !
    Merci !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/10/2013, 14h43
  2. Réponses: 4
    Dernier message: 22/09/2008, 09h11
  3. [Langage]Comment utiliser une dll .NET dans VB6?
    Par BouB dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/04/2006, 14h20
  4. Comment (ou peut on) créer une DLL .NET ?
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 02/04/2006, 15h54

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