Welcome, Guest
Username: Password: Remember me
Hier wird Deutsch gesprochen
  • Page:
  • 1

TOPIC:

dnSpy 14 Jun 2022 10:09 #22745

  • lagraf
  • lagraf's Avatar
  • Topic Author


  • Posts: 338
  • Hallo zusammen,
    hat schon mal jemand dnSpy zum Patchen einer C# DLL verwendet? Wie zuverlässig ist das, wenn man eine Methode um ein paar Zeilen ergänzt?
    LG Franz

    Please Log in or Create an account to join the conversation.

    dnSpy 14 Jun 2022 10:33 #22746

    • ArneOrtlinghaus
    • ArneOrtlinghaus's Avatar


  • Posts: 348
  • Ich habe mir nie einfallen lassen, dass man auch Dotnet-Dlls irgendwie patchen können müsste. Gibt es da gar keine Sicherheitsmechanismen, die das verhindern? :( :( :( :) :)

    Wir benutzen dnspy zum Debuggen bei Kunden und da funktioniert es toll. Ansonsten kann ich keine Antworten geben.

    Gruß
    Arne

    Please Log in or Create an account to join the conversation.

    dnSpy 15 Jun 2022 10:36 #22751

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 338
  • In diesem Fall existiert der Hersteller nicht mehr und ich benötige noch eine Weile um meine Programme auf ein anderes Modul umzustellen. Mit 4 zusätzlichen Befehlen an der richtigen Stelle ist der Fehler behoben und ich kann die Zeit bis dahin noch überbrücken.

    Please Log in or Create an account to join the conversation.

    dnSpy 15 Jun 2022 10:48 #22752

    • ArneOrtlinghaus
    • ArneOrtlinghaus's Avatar


  • Posts: 348
  • Ich kenne mich zu wenig aus mit diesen Details. Aber meiner Meinung nach kann man nicht den Kode von Assemblies verändern.

    Was es gibt, sind die Extension Methods, mit denen man Kode in vielen Punkten erweitern kann durch Kode, den man in eigenen Assemblies schreibt und der dann sozusagen existierende Klassen zur Runtime-Zeit erweitert. Vielleicht wäre das eine Möglichkeit?

    Oder geht vielleicht eine Ableitung einer Klasse und hier dann das Überschreiben der Methode? Natürlich in C# programmiert.

    Arne

    Please Log in or Create an account to join the conversation.

    dnSpy 15 Jun 2022 10:54 #22753

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3366
  • Hallo Arne,
    PMFJI, aber mit das geht mit Win32 mit entsprechenden Assembler-Kenntnissen: es gibt Patch-Programme dafür.
    Mit .NET und IL ist das noch leichter, weil in manchen/vielen Fällen ein Programm deassembliert und neu assembliert werden kann.
    Da gibt es sogar kommerzielle Programme dafür, siehe PostSharp.
    Ob uns das als Software-Hersteller gefällt, ist ein anderes Thema.... da kommen dann effektiv Code-Verwürfler ins Spiel, die im Endefekt aber auch nichts anderes machen, als das Programm zu disassemblieren, zu verwürfeln und neu zu bilden.
    Wolfgang
    P.S. mir hat das mal den A.... gerettet, weil SAP nicht in der Lage war, ein RDD für die aktuellste Vulcan-Version bereitzustellen
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    dnSpy 15 Jun 2022 11:05 #22754

    • ArneOrtlinghaus
    • ArneOrtlinghaus's Avatar


  • Posts: 348
  • Hallo Wolfgang,

    oh wie schön, es gibt doch doch die dreckigen Möglichkeiten von damals. Es ist ja gut, wenn es noch immer ein paar Rettungsanker gibt :cheer:

    Dann bist du ja die richtige Person, die sagen kann, was beispielsweise möglich ist.

    Meiner Meinung nach kann man mit dnSpy nur versuchen, eine Assembly zu disassemblieren, wenn sie nicht gecrypted ist und muss dann mit VS oder ähnlich den Kode dann weiterbearbeiten.

    Gruß
    Arne

    Please Log in or Create an account to join the conversation.

    dnSpy 15 Jun 2022 11:24 #22755

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 338
  • Ich habe mir die Methode rausgesucht, wo der Fehler drin ist, im Menü "Methode (C#) bearbeiten" gewählt. Dann wurde die Methode decompiliert, die Änderungen habe ich eingebaut und mit dem Button "Kompilieren" die Methode wieder kompiliert und anschließend gespeichert. Das hat funktioniert wie ich bei Test gesehen habe.

    Please Log in or Create an account to join the conversation.

    dnSpy 15 Jun 2022 14:40 #22756

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3366
  • Hallo Arne,
    soweit ich das aus der Doku verstehe (und der Franz hat das auch so beschrieben), macht das Tool den Dekompilier- und Kompilier-Vorgang alleine und im Hintergrund.
    Wenn das Programm/DLL gecryptet ist, dürfte das nach wie möglich sein, halt etwas herausfordender :). Im Endeffekt wird auch ein Crpyting-Tool den Code nur verwürfeln bzw. unlesbar machen.... mehr kann es nicht tun, da das Laufzeitsystem den Code immer noch ausführen muss, außer der Hersteller liefert das Programm nicht als IL aus, sondern als Maschinencode (was ja auch geht).
    Wolfgang
    (aktuell in Pairdorf)
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    dnSpy 15 Jun 2022 15:03 #22757

    • ArneOrtlinghaus
    • ArneOrtlinghaus's Avatar


  • Posts: 348
  • Super Möglichkeiten sind das! Vielen Dank.
    Gruß an den "Campus" in Pairdorf.

    Please Log in or Create an account to join the conversation.

    dnSpy 15 Jun 2022 16:11 #22758

    • VR
    • VR's Avatar


  • Posts: 87
  • Eventuell hilft dieser Artikel, der das "Monkey Patching" von Dotnet Assemblies beschreibt. Dabei wird die Assembly selbst nicht geändert, sondern nur zur Laufzeit manipuliert.

    khalidabuhakmeh.com/fix-dotnet-dependenc...with-monkey-patching

    Please Log in or Create an account to join the conversation.

    • Page:
    • 1
    Moderators: wriedmann