Frage

Ich bin sehr wohl bewusst Java-Tools zur Manipulation, Erzeugen, decompiling JVM-Bytecode (ASM, cglib, jad, etc). Welche ähnliche Werkzeuge gibt es für die CLR-Bytecode? Menschen tun Bytecode Manipulation für die CLR?

War es hilfreich?

Lösung

Bytecode ist ein binäres Format. .NET-Assemblies arbeiten ziemlich unterschiedlich in Hinblick darauf, wie sie speichern die Ausführungsbefehle.

Statt auf eine Bytecode-artige Struktur der Erstellung unten, sind .NET-Sprachen in eine Zwischensprache kompiliert (in der Tat, es heißt nur, dass - IL)

.

Dies ist eine für Menschen lesbare Sprache, die sorta wie eine objektorientierte Version von Assembler aussieht.

So in Bezug auf die Prüfung oder die IL für einzelne Baugruppen zu manipulieren, Tools wie Reflektor und ILDASM können Sie bequem die IL für jede Baugruppe anzuzeigen.

Manipulation ist ein bisschen anders, würde ich vorschlagen, einen Blick auf einige der AOP-Tool in .NET Raum einnehmen. Ich würde vorschlagen, auch einen Blick auf Phoenix nehmen, die ein Compiler-Projekt ist die MS in den Werken hat. Es hat ein paar wirklich coole post-kompilieren Manipulation Funktionen.

Wenn Sie mehr über die .NET-AOP-Tools erfahren möchten, würde ich vorschlagen, eine andere Frage zu öffnen (das ist eine ganz andere Dose Würmer).

Es gibt auch mehrere Bücher, die Sie die Ins und Outs von IL lehren. Es ist nicht eine sehr komplizierte Sprache zu lernen.

Andere Tipps

Reflektor ist immer gut, aber Mono.Cecil ist das beste Werkzeug, das Sie für insgesamt vielleicht fragen. Es ist von unschätzbarem Wert für die Manipulation von CIL in keiner Weise.

Mono.Cecil ist ein großes Werkzeug wie ASM. Es ist ein Teilprojekt von Mono und völlig Open Source. Es bietet auch bessere Funktion als System.Reflection.

NDepend können Sie .NET-Assemblies statische Analyse (Code-Metriken, Abhängigkeitsanalyse, etc.) zu tun. NDepend ist sehr nützlich, einen Überblick über die Struktur Ihres .NET-Assemblies mit Abhängigkeitsmatrix, Abhängigkeitsgraphen und treemap Metriken Visualisierung zu erhalten .

Es ist auch mit Reflektor integriert: zum Beispiel können Sie die wichtigen Arten und Methoden in Ihren Baugruppen erkennen mit jeweils eine Art / Methode Rang metric (ein Code-Metrik ähnlich wie Google Page Rank) und springen direkt von NDepend am Reflektor demontierten Code in C # zu bekommen, VB.NET, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top