Heute möchte ich euch kurz ein paar Alternativen zu Redgates .NET Reflector aufzeigen. Früher habe ich diesen zwar des Öfteren benutzt, doch seit dem dieser Geld kostet, und es gute und brauchbare kostenlose Alternativen, kommt dieser nicht mehr zwischen meine Finger.
Der nachfolgende Einschub ist für diejenigen gedacht, die mit dem Begriff .NET Reflector/Decompiler jetzt gerade gar nichts anfangen können. Die anderen lesen bitte einfach nach dem Einschub weiter.
Was ist ein (.NET-)Decompiler?
Decompiler nennt man Computerprogramme, die es ermöglichen aus Maschinencode/Objektbytecode wieder lesbaren Quelltext (in einer Hochsprache) zu zaubern. Sie stellen also das Gegenstück zu einem Compiler dar.
Praktisch kann man sich das wie folgt vorstellen. Der Programmierer schreibt den Quellcode für ein Programm. Diesen kompiliert er dann mit einem Compiler. Das Endergebnis nach dem kompilieren könnte dann zum Beispiel eine ausführbare .exe-Datei sein.
Nun kommen wir als ambitionierter Programmierer und Hobby-Raketentüftler daher und fragen uns, wie diese eine tolle Funktion wohl programmiert/geschrieben wurde. Wir wissen zufälligerweise, dass das Programm in C#.NET geschrieben wurde. Um nun nachzuschauen, wie der Programmierer diese tolle Funktion geschaffen hat, öffnen wir sein Programm (die .exe-Datei) in einem .NET-Decompiler und erhalten den lesbaren Quellcode seines Programms. Einer der bekannteren Decompiler für .Net-Code/-Anwendungen heißt .NET-Reflector.
Soviel vorerst zu der grundlegenden Funktionsweise eines .NET-Decompilers. Sicherlich klappt dies in der Praxis nicht in allen Fällen, da es natürlich auch Methoden gibt, seinen Quellcode mehr oder weniger vor dem Zugriff eines Decompilers zu schützen. Aber das würde an dieser Stelle den Rahmen sprengen. Wer mehr dazu erfahren will, sollte einfach mal nach “.NET Obfuscator” googeln.
Kommen wir nun zum eigentlichen Thema, den kostenlosen .NET- Decompilern. Spontan eingefallen bzw. gefunden habe ich folgenden vier Stück:
ILSpy (von SharpDevelop)
JustDecompile (von Telerik)
DILE – Dotnet IL Editor (von zsozsop)
dotPeek (von JetBrains)
Funktioniert haben in meinen Test alle vier. Die Unterschiede liegen eher in der Einfachheit der Handhabung und der optischen Aufmachung. Mein persönlicher Favorit ist Just Decompile von Telerik. Jedoch muss man sich, um die Software zu nutzen, bei Telerik (kostenlos) registrieren.
Wer seine Daten nicht gerne abgibt, oder wem das einfach zu viel Aufwand ist, dem empfehle ich IL Spy. Das Programm ist kostenlos und Opensource. Der Download geht schnell, und ohne Registrierung, vonstatten und hinter dem Programm steht eine aktive Entwicklergemeinde.
Wie gesagt, die anderen beiden funktionierten bei mir auch, sagten mir aber nicht so sehr zu.
Zuletzt sei natürlich noch gesagt, dass alle vier Programme sehr “mächtig” sind. Bitte missbraucht diese “Macht” nicht, um Quellcode zu kopieren/zu klauen, sondern nutzt sie sinnvoll, um Fehler zu finden und/oder gewisse Funktionen zu verstehen.
Und nun würde mich noch interessieren, ob ihr auch .NET-Decompiler nutzt oder schon mal genutzt habt und wenn ja welchen und für was für einen Einsatzzweck?
Viele Grüße,
Raffi
Between me and my husband we’ve owned more MP3 players over the years than I can count, including Sansas, iRivers, iPods (classic & touch), the Ibiza Rhapsody, etc. But, the last few years I’ve settled down to one line of players. Why? Because I was happy to discover how well-designed and fun to use the underappreciated (and widely mocked) Zunes are.
Hallo Raffi,
schau dir mal dnSpy an.
Der ist open Source und wirklich extrem mächtig.
https://github.com/0xd4d/dnSpy