Comment décompiler a.NET EXE dans le code source C# lisible?

J'ai écrit une application C# pour un client il y a quelques années, mais je n'ai plus le code source. Tout ce que j'ai est L'EXE que j'ai déployé sur le PC du client. Existe-t-il un moyen de générer du code source C# à partir de L'EXE?

228
demandé sur MusiGenesis 2008-10-07 22:27:08

7 réponses

Réflecteur et son complément FileDisassembler.

Réflecteur permettra de voir le code source. FileDisassembler vous permettra de le convertir en une solution VS.

174
répondu GEOCHET 2014-04-30 15:50:57

Quand Red Gate a dit qu'il n'y aurait plus de version gratuite de.Net Reflector, j'ai commencé à utiliser ILSpy et Telerik JustDecompile. J'ai trouvé ILSpy décompiler plus précisément que JustDecompile (qui est encore en version bêta). Red Gate a changé sa décision et a toujours une version gratuite de. Net Reflector, mais maintenant j'aime ILSpy.

Sur le site ILSpy ( http://www.ilspy.net/):

ILSpy est le navigateur d'assemblage. net open-source et Decompiler.

ILSpy Caractéristiques

  • navigation D'assemblage
  • Il démontage
  • décompilation en C #
  • supporte lambdas et 'yield return'
  • affiche la documentation XML
  • Économie de ressources,
  • recherche de types / méthodes / propriétés (sous-chaîne)
  • navigation de Type/Méthode/propriété basée sur un lien hypertexte
  • types de base / dérivés navigation
  • historique de Navigation
  • BAML à XAML décompiler
  • enregistrer Assemblée de Projet C#
  • trouver l'utilisation du champ / Méthode
  • Extensible via plugins (MEF)

Mise à Jour:

15 avril 2012, ILSpy 2.0 a été publié. Nouvelles fonctionnalités par rapport à la version 1.0:

  • Listes D'Assemblage
  • Support pour décompiler les arbres D'Expression
  • prise en charge des opératores levés sur les nullables
  • décompiler en Visual Basic
  • recherche de plusieurs chaînes séparées par un espace (recherche de " Assembly manager " dans ILSpy.exe trouverait AssemblyListManager)
  • cliquer sur une variable locale met en évidence toutes les autres occurrences de cette variable
  • Ctrl + F peut être utilisé pour rechercher dans la vue de code décompilé

Mise à Jour:

  • ILSpy 2.1 prend en charge la décompilation asynchrone/attente
125
répondu Daniel 2012-06-06 18:20:55

Réflecteur n'est plus libre en général, mais ils offrent gratuitement pour les développeurs open source: http://reflectorblog.red-gate.com/2013/07/open-source/

Mais quelques entreprises comme DevExtras et JetBrains ont créé des alternatives gratuites:

DevExtras CodeReflect

JetBrains DotPeek

60
répondu arc 2014-10-30 15:31:05

Réflecteur et ledésassembleur de fichiers add-in de Denis Bauer. Il produit en fait des projets source à partir d'assemblys, où Reflector seul affiche uniquement la source désassemblée.

Ajouté: mon dernier favori est JetBrains ' dotPeek .

32
répondu ProfK 2014-06-13 14:02:41

Telerik JustDecompile est gratuit et dispose d'une fonctionnalité pour créer des projets à partir d'assemblys.net.

25
répondu kodefuguru 2011-08-15 19:16:00

Je suis surpris que personne n'ait mentionné ildasm de Microsoft. Il peut ne pas être aussi joli que ILSpy ou Reflector, mais il est livré avec Visual Studio tant de développeurs l'ont déjà.

Pour l'exécuter (en supposant VS 2013, devrait être similaire pour les autres versions):

  1. Sélectionnez Démarrer > Tous Les Programmes > Visual Studio 2013 > Outils Visual Studio.
  2. double-cliquez sur L'invite de commande du développeur pour VS2013.
  3. exécutez "ildasm" à partir de la commande résultante invite.
  4. dans L'outil, sélectionnez Fichier > Ouvrir et ouvrez votre exécutable ou DLL.

Maintenant, vous pouvez naviguer dans la structure DLL. Double-cliquez sur les membres de la classe pour voir L'IL. Utilisez fichier > Dump pour exporter IL dans un fichier.

22
répondu yoyo 2015-03-24 17:24:47

Vous voulez réflecteur.

14
répondu Luke Halliwell 2008-10-07 18:28:24