ILdasm at your fingertips

Es ist schon merkwürdig: Da sind wir auf der einen Seite ganz glücklich darüber, dass die CLR eine Ebene zwischen unseren Sourcecode und das Betriebssystem zieht. Wir begrüßen die Abstraktion von der Maschine. Und auf der anderen Seite haben wir uns (oder zumindest die ehemaligen VB6-Entwickler) seitdem ungleich öfter mit Assemblercode auseinandergesetzt. Zumindest für mich ist IL-Assembler seit meinen Z80-Zeiten der erste Assemblercode, den ich mir oft und gern anschaue.

Woran das liegt? An den Metadaten, die neben dem Code in den Assemblies stecken. Ein Blick in eine Assembly mit ILdasm zeigt mir sofort, wasfüreine Programmierschnittstelle sie veröffentlicht. Aber es liegt auch daran, dass IL-Code ungleich verständlicher ist. Es ist eine stackbasierte Sprache und im IL-Assemblercode sind Methodenaufrufe gut lesbar. Gerade für Assemblies, zu denen ich keinen Quellcode habe, ist also der Blick in den IL-Code sehr erhellend, was ihre Funktionsweise angeht.

Microsoft liefert zum Glück dafür ja auch ein brauchbares Tool mit. Den IL-Disassembler ILdasm.exe. Damit jedoch eine Assembly anzuschauen, ist etwas umständlich: Entweder öffne ich ILdasm über das Programmmenü und wähle über File|Open eine Assembly aus, oder ILdasm ist offen und ich ziehe eine Assembly per Drag&Drop darauf. Eine "normale" Funktionalität, aber eine, wie ich finde, umständliche. Denn was möchte ich meist tun? Ich sehe eine Assembly im Windows Explorer und möchte ILdasm sofort damit öffnen. Ich möchte keinen Umweg gehen und das Verzeichnis nochmal in seinem Open-Dialog auswählen und ich möchte mir auch nicht die Finger bei Drag&Drop brechen.

Die Lösung wäre, ich öffne ILdasm via Kontextmenü der Assembly im Windows Explorer. Dafür muss ILdasm aber als Shell-Kommando für DLL- und EXE-Dateien registriert sein. Hier ein reg-Skript, das genau das leistet:

[HKEY_CLASSES_ROOT\exefile\shell\ILdasm\Command]
@="ildasm.exe \"%1\""
[HKEY_CLASSES_ROOT\dllfile\Shell\ILdasm\Command]
@="ildasm.exe \"%1\""

Skriptcode in eine reg-Datei kopieren und die Datei ausführen. Fertig. Fortan gibt es einen neuen Menüpunkt im Kontextmenü von DLLs und EXEs.

1 Comment

Comments have been disabled for this content.