Quellenforschung in .NET

Seite 2: Alternativen zum Reflector

Inhaltsverzeichnis

Von der SharpDevelop-Community, die unter anderem eine alternative Entwicklungsumgebung (IDE) zu Visual Studio entwickelt hat, kommt "ILSpy". Der quelloffene und kostenfrei verfügbare Standalone- Decompiler bietet im Wesentlichen die gleichen Funktionen und das gleiche Handling wie der Reflector, kann als Ausgabesprachen jedoch nur C#, VB.NET und IL vorweisen. Die aktuelle Version 2.1 stammt noch aus dem Juni 2012, entstand also noch vor der RTM-Version von .NET 4.5. Die Async-Sprachelemente in C# unterstützt diese Ausgabe allerdings trotzdem. Neben dem Export von Quellcode können mit ILSpy auch Ressourceninhalte extrahiert und exportiert werden. Erweiterbar ist das Programm durch MEF (Managed Extensibility Framework) nutzende Plug-ins, wie etwa einen Debugger.

Dekompilierten Quellcode "Ă  la carte" bietet das Open-Source-Projekt "ILSpy" aus der SharpDevelop-Community

Ebenfalls auf den Alternativen-Zug aufgesprungen ist der Anbieter von .NET-Komponenten und -Tools Telerik mit seiner Decompiler-Variante "JustDecompile". Telerik verspricht, dass der Download dauerhaft kostenfrei möglich bleiben soll, verlangt allerdings eine einfache Registrierung. In JustDecompile können komplette Listen der zu einer Framework-Version gehörenden Assemblies geladen werden, von .NET 2.0 bis 4.5 und Silverlight, ebenso wie einzelne Assemblies und XAP-URLs. An Ausgabe-Sprachen werden auch hier C#, VB.NET und IL geboten. Eine der Besonderheiten von JustDecompile ist die Möglichkeit, eine Assembly dekompiliert als Visual-Studio-Projekt zu exportieren, allerdings nur für C#. Außerdem lässt sich JustDecompile ohne Installation starten, etwa von einem externen USB-Laufwerk. Die Erweiterungsschnittstelle des Decompliers nutzen beispielsweise ein Plugin zum Bearbeiten von Assemblies und ein Deobfuscator, der besonders gut mit verwürfelten Binär-Dateien zurechtkommen soll.

Framework-spezifisch können in Teleriks kostenfreiem JustDecompile .NET-Assemblies geladen werden.

In gleichfalls kostenfreie Konkurrenz tritt der Decompiler "dotPeek" des Werkzeug-Herstellers JetBrains. Anders als seine Mitbewerber kann dotPeek ausschließlich C#-Quellcode erzeugen, der nicht direkt exportiert werden kann (Copy&Paste funktioniert allerdings). Eine seiner Stärken liegt allerdings darin, dass nicht nur DLL- und EXE-Dateien als Ausgangsmaterial dienen können, sondern auch VSIX- und Winmd-Dateien sowie NuGet-Packages. Mit Hilfe eines eigenen andockbaren Tool-Fensters wird die Darstellung von Abhängigkeiten und Objekthierarchien auf eigene Weise gelöst. Ein weiteres Alleinstellungsmerkmal ist die Möglichkeit festzulegen, ob Symboldateien (PDB) zur Namens- und Symbolauflösung herangezogen werden sollen.

Eine konfigurierbare Hierarchieansicht, allerdings auch nur C#-Quellcode, bietet der Decompiler dotPeek von JetBrains.

Unterm Strich lässt sich feststellen, dass ein Quellenforscher mit allen vorgestellten Decompilern seine Neugier stillen kann - mehr oder weniger ausgiebig. Allein deswegen müssen inzwischen keine Tränen mehr wegen der Kommerzialisierung des "legendären" Reflectors vergossen werden. Allerdings gibt es noch die einen oder anderen, eher subtilen, Unterschiede zwischen den Tools, egal ob es sich um kostenfreie Varianten oder den kostenpflichtigen Erbfolger handelt. Da es von Letzterem immerhin eine 30-Tage-Trial-Version gibt, steht einem Ausprobieren und Entscheiden nach persönlichem Bedarf und Geschmack nichts im Wege. Außer vielleicht der Qual, sich zwischen dem komfortablen, aber kostenpflichtigen Debugging im Reflector-Add-in für Visual Studio auf der einen Seite und dem etwas pfiffigeren, allerdings auf C# beschränkten und exportfreien dotPeek auf der anderen Seite des Angebotsspektrums zu entscheiden.

Harald M. Genauck
schreibt als freier Autor und Redakteur ĂĽber Themen rund um die Entwicklung von Software fĂĽr die Microsoft-Windows-Plattformen.
(jul)