Frage

Dies ist eine Art zweiteiliger Frage. Aber beide beziehen sich auf dasselbe.

Ich möchte mit dem IL -Code einer App arbeiten, um Patches anzuwenden. Ich frage mich, was der richtige Ansatz sein würde. Offensichtlich konnte ich es dekompilieren und die IL -Codedatei lesen und bearbeiten und dann neu kompilieren. Gibt es jedoch eine Möglichkeit, ihn als MSIL -Code direkt in der Datei zu lesen? Und vielleicht in Echtzeit bearbeiten.

Ich habe versucht, den dekompilierten Code einer ausführbaren Datei zu bearbeiten. Aber jedes Mal, wenn ich es neu kompilierte, würde ich ein Problem mit der Ausführung bekommen. Wie es seinen Einstiegspunkt mehr nicht mehr finden konnte. Wie berechnet ich das? Ich vermute, ich muss die Länge der Befehle und deren Paramater kennen oder den Einstiegspunkt zu einem Etikett oder so etwas machen. Ich wäre nett, wenn es eine Visual Studio -Vorlage für so etwas gäbe.

War es hilfreich?

Lösung

Als jemand, der das bereits gelesen hat ECMA-335 mehrmals spec und Ich habe einen CLI -Bildlader in zwei verschiedenen Sprachen implementiert (mit einer vollständigen IL -Analyse in einem), würde ich sagen, dass dies für mich immer noch eine herausfordernde Aufgabe wäre. Ich sage das, weil es so aussieht, dass beide 1) Sie dies nicht getan haben und 2) Sie suchen nach einer einfachen Antwort. Die Spezifikation sollte definitiv Ihr Ausgangspunkt sein.

Das minimal Verfahren wäre:

  • Laden Sie das PE -Bild (exe oder dll)
  • Analysieren Sie den Byte -Code aller Methoden und lösen Sie Symbole auf
  • Anwenden Sie Code -Transformationen an (minimal wäre natürlich eine einzige Transformation wie die Umbenennung von privaten Methoden)
  • Speichern Sie das Ergebnis als neues PE -Bild

Bearbeiten: Dadurch werden Sie nicht davon abgehalten, die detaillierte Struktur von .NET -Baugruppen kennenzulernen. Sie können jedoch einige Zeit in der tatsächlichen Implementierung sparen und dabei helfen, Ihre Verschleiftungslogik sauber vom Lader getrennt zu halten.

Andere Tipps

Um den MSIL zu lesen, gibt es sicher, in Dieser Thread:

iildasm.exe - Intermediate Language Disassembler. Mit diesem Tool können Sie Ihren kompilierten Code auf MSIL -Ebene anzeigen.

Dies befindet sich im Microsoft SDK.

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