Heute stand ein Ausflug in die MSIL (Microsoft Intermediate Language) an, also der .NET “Bytecode”. Manche Dinge lassen sich damit ganz einfach lösen, bspw. die Änderung vorhandener .NET DLLs. Nachdem man sich etwas daran gewöhnt hat, wieder weg von der Hochsprache zu sein (Assembler Erfahrung kann hier gut helfen ;-) ), ist es recht intuitiv, auch wenn ich nicht verstehe wieso soviele NOPs, also no-operation, eingefügt werden…

Behilflich ist hier vor allem der IL-Disassembler von Microsoft (ildasm.exe), der im .NET SDK drin ist und Reflector for .NET. Mit ersterem lassen sich u.a. DLL, EXE in den IL-Code umwandeln, die mit dem IL-Assember (ilasm.exe) wieder kompiliert werden können. Mit letzterm lässt sich auch der C# Source Code der Dateien anschauen. Daneben ist natürlich auch noch hilfreich, die IL zu verstehen :-) Dazu haben mir ein Tutorial von Kenny Kerr und eins von Code Guru geholfen. Links dazu siehe unten.

Ich wünsche somit jedem anderen, der auch mit IL arbeitet (bzw. arbeiten muss), viel Erfolg! Und noch eine Kleinigkeit: Wusstet ihr, dass die Zugriffsbeschränkungen wie “private” nicht auf IL Ebene gelten? Mehr dazu in Neno’s Blog…
Informationen zum Thema:
Microsoft MSIL Disassembler (.NET 2.0)
Lutz Roeder’s Reflector for .NET
CodeGuru MSIL Tutorial
Kenny Kerr MSIL Introduction