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 Quelltextpassagen ü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