Leseprobe

Transcription

Leseprobe
 High Five Decompiler
High five
Tools, Tipps, Sites
dnpCode A1508HighFive
Die fünf besten Decompiler für .NET
Von der Assembly
zum Quelltext
Aus Binär mach Intermediate-Language, C#- oder Visual-Basic-Code.
D
isassembler erzeugen aus binärem Code vom Menschen
lesbaren Quelltext. Bei Maschinenprogrammen ist das
dann Assembler, bei .NET-Programmen wahlweise Intermediate-Language-Code (IL-Code) oder eine Hochsprache wie
C#, Visual Basic .NET oder Delphi.
So die Theorie. Manche Entwickler aber nutzen Obfuscator-Tools [1], die die Zurückübersetzung und ein Reverse Engineering erschweren.
Ein Vorteil der Disassembler ist, dass Sie damit Quellen aus
eigenen Assemblies generieren, von denen Sie den Quelltext
verlegt haben oder Ihnen dieser nicht wie bei Open-SourceProgrammen zur Verfügung steht. Bei fremden Assemblies
müssen Sie allerdings berücksichtigen, dass eine Disassemblierung und Rückübersetzung per Lizenzvertrag untersagt
sein kann. Allerdings greifen diese Lizenzklauseln häufig
nicht und dienen nur der Abschreckung [2].
Wollen Sie Programme lediglich in IL-Code umwandeln,
stehen Ihnen neben .NET-Disassemblern alternative Tools
zur Verfügung. Mit Dile (Dotnet IL Editor) steht ein OpenSource-Tool bereit, das aus Assemblies IL-Code generiert. Eine direkte Rückübersetzung in Quelltext in die Sprachen C#
oder Visual Basic wird allerdings nicht unterstützt.
http://sourceforge.net/projects/dile
1 Redgate .NET Reflector – der Klassiker
Der .NET Reflector wurde ursprünglich von Lutz Roeder entwickelt, um .NET-Programme und -Komponenten zu disassemblieren und damit die Arbeitsweise von Anwendungen
offenzulegen, Fehler zu erkennen und zu beseitigen. Seit der
Version 7 wurde die Weiterentwicklung von Redgate übernommen. War das Programm bis zur Version 6 kostenfrei, sind
alle nachfolgenden Versionen kostenpflichtig, wobei der
Preis je nach Programmversion (Standard/Pro) zwischen
58
73 und 155 Euro variiert. Die Standardversion liegt als eigenständiges Programm mit einer attraktiven Benutzerumgebung vor. Diese generiert wahlweise IL-, C#- oder VB-Code
und ist durch Add-ins erweiterbar.
Die Pro-Variante wird mitsamt der Standardversion ausgeliefert und integriert sich in die Visual-Studio-IDE. Sie bietet
nicht nur einen Object Browser, sondern unterstützt auch ein
Debuggen im dekompilierten Code (C# 5, .NET 4.5). Kostenfreie Add-ins zum Reflector erhalten Sie auf Codeplex (zum
Beispiel Assembly Visualizer, CodeMetrics, Diff, Snippy, Reflexil). Eine Testversion zum Reflector ist nach einer Regis­
trierung online verfügbar.
www.dotnetpro.de/SL1508HighFive1
https://reflectoraddins.codeplex.com
2 Telerik JustDecompile – Freeware mit
Open-Source-Engine
Telerik stellt nicht nur seinen Disassembler JustDecompile
kostenfrei zur Verfügung, sondern bietet auch die Engine zur
Dekompilierung als Open Source an. Damit passen Sie die interne Verarbeitung nach Bedarf an, nehmen Ergänzungen
vor oder setzen eigene Anwendungen auf, die Sie mit der
Community teilen können. JustDecompile bietet eine leistungsfähige Benutzerumgebung, in der Sie mehrere Methoden parallel einsehen und bearbeiten. JustDecompile ist über
Add-ins erweiterbar, bietet ein offenes Add-in-API, generiert
aus Assemblies vollständige Visual-Studio-Projekte und
kann aus Visual Studio heraus die in Anwendungen und per
Verweis angebundenen Assemblies direkt disassemblieren.
Mit JustDecompile extrahieren Sie angebundene Ressourcen. Unterstützt werden .NET 2, 3.5, 4, 4.5, 4.5.1, WinRT-Metadaten, C# 5, APPX (Verteilungsformat für Windows-StoreApps) und WinMD (Windows-Metadaten).
8.2015 www.dotnetpro.de
High Five Ferner integriert sich das Tool als Shell-Erweiterung in den
Windows Explorer.
www.dotnetpro.de/SL1508HighFive2
3 ILSpy – Open-Source-Decompiler für C#/VB
ILSpy wurde von den Machern von Sharp Develop als OpenSource-Anwendung entwickelt, nachdem die Weiterentwicklung des kostenfreien Reflector eingestellt wurde. Das
Tool legt die Inhalte von Assemblies mit der Mono-Bibliothek
Cecil offen und übersetzt die Programme wahlweise in ILCode, C# (einschließlich C# 5) oder VB.NET. Auch über IL­
Spy extrahieren Sie Ressourcen oder Quelltext. Das Tool ist
durch Plug-ins erweiterbar, kann Assemblies als Visual-Studio-Projekte ablegen und bietet eine Verlaufsfunktion, über
die Sie zwischen bereits disassemblierten Inhalten hin- und
herwechseln. Für die nächste Programmversion sind eine Lesezeichenfunktion und ein Debugger geplant, in dem Sie Haltepunkte setzen und Anweisungen schrittweise ausführen.
http://ilspy.net
www.dotnetpro.de/SL1508HighFive3
$$ Kommerzielle Reflector-Alternativen
Als kommerzielle Alternative zum .NET Reflector empfiehlt
sich der Spices .NET Decompiler von 9Rays.Net, der in der Einzellizenz allerdings mit rund 300 Euro erheblich teurer ist, dafür
aber optimierten sowie kommentierten Quelltext für die Sprachen MSIL, C#, VB.NET, J# (wird seit 2007 nicht mehr weiterentwickelt), Delphi und managed C++ generiert. Spices bietet einen
visuellen Decompiler, integriert sich in Visual Studio, bietet variable Methoden zur Dekompilierung, aktive Hinweise und unterstützt .NET in den Versionen 1.0 bis 4.0. Neben Video Tutorials sind Fachartikel und eine Testversion online erhältlich.
www.dotnetpro.de/SL1508HighFive7
Dis# ist ein weiterer kommerzieller .NET-Decompiler. Das letzte
Programm-Update wurde im Juli 2008 verfügbar gemacht. Der
offizielle Preis des Tools liegt bei 399 US-Dollar. Das Programm
besitzt eine eigene Benutzeroberfläche und integriert sich nicht
in Visual Studio. Es verarbeitet auch aktuelle Assemblies, übersetzt Quellen wahlweise in C#, VB.NET, Delphi oder Chrome und
bietet eine Funktion zum Aufheben einer Obfuskation an [1].
www.netdecompiler.com
www.dotnetpro.de 8.2015
4 DevExtras CodeReflect – Freeware
CodeReflect ist ein Disassembler, der ebenfalls als Konkurrent zu .NET Reflector aufritt. Das Programm wird zwar kommerziell entwickelt, aber kostenfrei verteilt. Die Quelltexte
sind allerdings nicht verfügbar. Auch mit CodeReflect übersetzen Sie Assemblies wahlweise in IL-Code, C# oder auch
VB.NET, extrahieren eingebettete Ressourcen oder legen Abhängigkeiten von Assemblies offen. Dabei werden die .NETVersionen 1.0 bis 4.0 unterstützt. Der integrierte Browser
zeigt nicht nur die zurückübersetzten Quelltexte an, sondern
besitzt auch eine Verlaufsfunktion. Die Quelltexte sind ausschließlich über die Zwischenablage austauschbar, eine Speicherungsfunktion für Dateien und Projekte ist nicht vorhanden. Eine Bearbeitungsfunktion für offengelegte Quellen
steht nicht zur Verfügung.
www.devextras.com/decompiler
5 JetBrains dotPeek – C# exklusiv
JetBrains dotPeek ist ein Disassembler, der ausschließlich C#Entwickler adressiert und .NET-Assemblies der Versionen 1.0
bis 4.5 in C#-Quelltext überführt. Er integriert sich in bereits
installierte Visual-Studio-IDEs (2010, 2012, 2013, 2015) und
wird kostenfrei vertrieben. Das Programm wird über ein WebInstallationsprogramm eingerichtet und ist Bestandteil der
kommerziellen Anwendung ReSharper. Zu den zurückübersetzten Quelltexten legen Sie Visual-Studio-Projekte an oder
stellen Bezüge zum echten, lokalen Quelltext her, sofern Sie
die Assembly selbst entwickelt haben. Optional disassemblieren Sie Assemblies, die in Archiven der Formate zip, vsix
oder nupkg abgelegt sind. Das Tool besitzt zudem leistungsfähige Such- und Navigationsfunktionen und erlaubt das Setzen und schnelle Anwählen von wichtigen Quelltext­passagen
über Lesezeichen. Herausragend ist die Zusammenarbeit mit
dem Debugger von Visual Studio, um angebundene und
nicht im Quelltext vorliegende Assemblies quelltextbasiert
zu debuggen. Dazu werden nach Bedarf automatisiert Quelldateien und pdb-Dateien generiert (Program DataBase) [3]. www.jetbrains.com/decompiler
◾
Andreas Maslo
[1] Wikipedia, Obfuskation,
www.dotnetpro.de/SL1508HighFive4
[2] Wikipedia, Reverse Engineering und rechtliche Aspekte,
www.dotnetpro.de/SL1508HighFive5
[3] Microsoft Developer Network, PDB Files,
www.dotnetpro.de/SL1508HighFive6
59