Question

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, c'est le fichier 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 du fichier EXE?

Était-ce utile?

La solution

Reflector et son complément FileDisassembler .

Reflector permettra de voir le code source. FileDisassembler vous permettra de le convertir en solution VS.

Autres conseils

Quand Red Gate a annoncé qu'il n'y aurait plus de version gratuite de .Net Reflector, j'ai commencé à utiliser ILSpy et le JustDecompile . J'ai découvert que ILSpy se décompilait plus précisément que JustDecompile (toujours en version bêta). Red Gate a changé sa décision et dispose toujours d’une version gratuite de .Net Reflector, mais j’aime maintenant ILSpy.

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

ILSpy est le navigateur et le décompilateur d'assemblages .NET à code source ouvert.

Fonctionnalités ILSpy

  • Navigation dans l’ensemble
  • Démontage IL
  • Décompilation en C #
  • Prise en charge de lambdas et du 'rendement de retour'
  • Affiche la documentation XML
  • Sauvegarde des ressources
  • Rechercher des types / méthodes / propriétés (sous-chaîne)
  • Navigation de type / méthode / propriété basée sur un lien hypertexte
  • Navigation de base / types dérivés
  • Historique de navigation
  • décompilateur BAML en XAML
  • Enregistrer l'assemblage en tant que projet C #
  • Rechercher l'utilisation du champ / de la méthode
  • Extensible via des plugins (MEF)

Mise à jour:

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

  • Listes d'assemblées
  • Prise en charge de la décompilation des arbres d'expression
  • Prise en charge des opérateurs levés sur les nullables
  • Décompiler en Visual Basic
  • Recherchez plusieurs chaînes séparées par un espace (la recherche de "Gestionnaire d'assemblage" dans ILSpy.exe trouverait AssemblyListManager)
  • Un clic sur une variable locale met en évidence toutes les autres occurrences de cette variable
  • Ctrl + F peut être utilisé pour effectuer une recherche dans la vue de code décompilé

Mise à jour:

  • ILSpy 2.1 prend en charge la décompilation asynchrone / en attente

En règle générale, Reflector n’est plus gratuit, mais ils l’offrent gratuitement aux développeurs open source: http://reflectorblog.red-gate.com/2013/07/open-source/

Mais quelques sociétés telles que DevExtras et JetBrains ont créé des alternatives gratuites:

DevExtras CodeReflect

JetBrains DotPeek

Reflector et le complément File Disassembler de Denis Bauer. Il produit en fait des projets sources à partir d’ensembles, où Reflector seul affiche uniquement la source désassemblée.

AJOUTÉ: Mon dernier favori est le dotPeek de JetBrains.

Telerik JustDecompile est gratuit et dispose d'une fonctionnalité permettant de créer des projets à partir d'assemblys .NET.

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

Pour l'exécuter (en supposant que VS 2013 soit identique 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. Run " ildasm " à partir de l'invite de commande résultante.
  4. Dans l'outil, sélectionnez Fichier > Ouvrez et ouvrez votre exécutable ou votre DLL.

Vous pouvez maintenant naviguer dans la structure de la DLL. Double-cliquez sur les membres de la classe pour voir l'IL. Utilisez Fichier > Sauvegarde pour exporter IL dans un fichier.

Vous souhaitez réflecteur .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top