Montag, 27. Juni 2011

ILSpy .NET Framwork Disassembler C# / VB

Hallo heute möchte ich euch ein interessantes .NET Disassembler Tool vorstellen, welches aus EXE und DLL Dateien von .NET C# (CSharp) Quellcode generiert. In dem Beispiel auf dem Foto links sehen wir die MySQL.Connector für .NET. Es extrahiert die Kompletten Funktionsnamen des Programms oder der Bibliothek und zeigt dessen Quellcode an. Ein super .NET Disassembler der auch die Ursprungsform IL (Intermediate Language). Common Intermediate Language (CIL) (teilweise auch nur Intermediate Language (IL)) ist eine Zwischensprache, in die alle Programme der Common Language Infrastructure übersetzt werden. CIL ist eine objektorientierte Assemblersprache und ist vollständig stackbasiert. 


Auf dem Zielcomputer wird die CIL von einem Laufzeitsystem (Virtual Execution System) in systemeigenen Programmcode übersetzt, um in CIL vorliegende Programme ausführen zu können.
CIL ist in frühen Entwicklungsphasen von .NET als Microsoft Intermediate Language (MSIL) bezeichnet worden, mit der Standardisierung der Common Language Infrastructure ist diese Bezeichnung aber verworfen worden.
Bei der Kompilierung von Quellcode aus .NET-Sprachen wird nicht direkt systemeigener Programmcode erzeugt, sondern in einem ersten Schritt zunächst CIL-Code. In CIL werden die Programmbefehle als eine Folge von Bytewerten (teilweise auch mehr als ein Byte) angegeben. Dieser Code wird auf dem Ausführungsrechner in einem Laufzeitsystem zu nativem Maschinencode übersetzt (Just in time (JIT) Kompilierung) und ausgeführt.
Während der Übersetzung werden auch die Sicherheit und die Korrektheit des Codes (Manipulation) überprüft.


Was ILSpy kann?
Es unterstützt das komplette Microsoft .NET Framework also auch VB und nicht nur C#, aber ist ja auch verständlich, weil die beiden Sprachen nun mal CIL sind. Es kann zwischen einer C# Ansicht und einer detaillierteren IL Ansicht gewechselt werden. Elemente werden Gruppiert und können bequem über ein "+" / "-" Zeichen aufgeklappt und zugeklappt werden. Der Disassembler unterstützt das Suchen von Funktionsnamen. ILSpy lässt sich erweitern durch Plugins. Beim erneuten öffnen zeigt euch das Programm die letzte Position im Baum an, was ich sehr praktisch finde. Achja importiert man eine *.EXE Datei welche weitere .NET Bibliotheken benutzt werden diese mit importiert und das ganze bleibt auch bei einem erneuten Programmstart erhalten. Bei bedarf können einzelne Teile über Rechte Maustaste entfernt werden. 


Anwendungsfall
Ein Anwendungszenario ist zum Beispiel die Überprüfung des eigenen Quellcodes ob dort Konstanten angegeben wurden, man stelle sich statische Lizenzschlüssel vor, also nur einen für das komplette Programm der nicht generiert wird. Gleiches gilt für Benutzernamen und Passwort zum Beispiel Standardwerte, welche bei der Entwicklung vorhanden waren. Der SAMSUNG DATA MANAGEMENT SERVER SQLI besitzt z.B. ein Defaulwert root und ein Kennwort was ich hier nicht schreibe, ihr könnt euch einen guten Artikel zu dem Thema ansehen


Weitere Informationen und Download von ILSpy findet ihr auf csharpdevelop 


PS: Ich werde eine kleine Challange zum Testen für das ILSpy .NET Disassembler heute oder morgen einstellen, damit ihr was zum spielen habt ;)

UPDATE: ILSpy .NET Framework Disassembler Challange

Keine Kommentare:

Kommentar veröffentlichen

Related Posts Plugin for WordPress, Blogger...