[c#] Wie dekompiliere ich eine .NET EXE in einen lesbaren C # Quellcode?


2 Answers

Als Red Gate sagte, dass es keine kostenlose Version von .Net Reflector mehr geben würde, begann ich mit ILSpy und JustDecompile . Ich habe festgestellt, dass ILSpy genauer dekompilieren kann als JustDecompile (das sich noch in der Beta befindet). Red Gate hat seine Entscheidung geändert und hat noch eine kostenlose Version von .Net Reflector, aber jetzt mag ich ILSpy.

Auf der ILSpy-Website ( ILSpy ):

ILSpy ist der Open-Source .NET Assembly Browser und Decompiler.

ILSpy Funktionen

  • Baugruppen durchsuchen
  • IL Demontage
  • Dekompilierung zu C #
  • Unterstützt Lambdas und "Rendite"
  • Zeigt die XML-Dokumentation an
  • Einsparung von Ressourcen
  • Nach Typen / Methoden / Eigenschaften suchen (Teilzeichenfolge)
  • Hyperlink-basierte Typ- / Methoden- / Property-Navigation
  • Basis / abgeleitete Typen Navigation
  • Navigationsverlauf
  • BAML zu XAML Decompiler
  • Speichern Sie Assembly als C # -Projekt
  • Finden Sie die Verwendung von Feld / Methode
  • Erweiterbar über Plugins (MEF)

Aktualisieren:

Am 15. April 2012 wurde ILSpy 2.0 veröffentlicht. Neue Funktionen gegenüber Version 1.0:

  • Zusammenstellungslisten
  • Unterstützung für das Dekompilieren von Ausdrucksbäumen
  • Unterstützung für gehobene Operatoren auf Nullwerten
  • Dekompilieren zu Visual Basic
  • Suche nach mehreren Zeichenfolgen, die durch Leerzeichen getrennt sind (nach "Assembly Manager" in ILSpy.exe suchen würde AssemblyListManager finden)
  • Durch Klicken auf eine lokale Variable werden alle anderen Vorkommen dieser Variablen hervorgehoben
  • Strg + F kann verwendet werden, um in der dekompilierten Codeansicht zu suchen

Aktualisieren:

  • ILSpy 2.1 unterstützt Async / Warten auf Dekompilierung
Question

Ich habe vor ein paar Jahren eine C # -Anwendung für einen Client geschrieben, aber ich habe den Quellcode nicht mehr. Alles, was ich habe, ist die EXE, die ich auf dem Client-PC installiert habe. Gibt es eine Möglichkeit, C # Quellcode aus der EXE generieren?




Reflector und das File Disassembler Add-In von Denis Bauer. Es erzeugt Quellprojekte aus Assemblys, wobei Reflector allein nur die demontierte Quelle anzeigt.

HINZUGEFÜGT: Mein letzter Favorit ist JetBrains ' dotPeek .




Ich bin überrascht, dass niemand Microsofts ildasm . Es ist vielleicht nicht so schön wie ILSpy oder Reflector, aber es kommt mit Visual Studio, so viele Entwickler haben es bereits.

Um es auszuführen (unter der Annahme VS 2013, sollte für andere Versionen ähnlich sein):

  1. Wählen Sie Start> Alle Programme> Visual Studio 2013> Visual Studio-Tools.
  2. Doppelklicken Sie auf Entwickler-Eingabeaufforderung für VS2013.
  3. Führen Sie "ildasm" von der resultierenden Eingabeaufforderung aus.
  4. Wählen Sie im Werkzeug Datei> Öffnen und öffnen Sie Ihre ausführbare Datei oder DLL.

Jetzt können Sie durch die DLL-Struktur navigieren. Doppelklicken Sie auf die Klassenmitglieder, um die IL zu sehen. Verwenden Sie Datei> Dump, um IL in eine Datei zu exportieren.




Related