So Bearbeiten Sie eine Binär-Datei als hex-Wert mit C#
Also hier ist mein Problem. Ich habe eine binäre Datei, die ich Bearbeiten möchte. Kann ich mit einem hex-editor zu Bearbeiten, ist es natürlich, aber ich brauche, um ein Programm zum Bearbeiten dieser bestimmten Datei. Sagen, dass ich weiß, eine bestimmte hex, die ich Bearbeiten möchte, ich weiß seine Adresse etc. Lassen Sie uns sagen, dass es ein 16-bit-Binär -, und die Adresse ist 00000000, es ist auf Zeile 04 und es hat einen Wert von 02. Wie könnte ich ein Programm erstellen, verändern würde, den Wert, die hex, und nur das hex mit dem Klick auf eine Schaltfläche?
Habe ich gefunden-Ressourcen, sprechen Sie über ähnliche Dinge, aber ich kann nicht für das Leben von mir finden Sie Hilfe mit der genauen Frage.
Jede Hilfe würde geschätzt, und bitte nicht nur sagen, mir die Antwort, wenn es einer ist, aber versuchen und zu erklären, ein bisschen.
- Bekomme ich es correclty, die Sie überschreiben möchten ein paar bytes an einer bestimmten Position in einer Datei bereits auf der Festplatte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das ist am besten erklärt mit einem Beispiel verdeutlichen. Hier sind die ersten 32 bytes einer EXE-Datei, wie gezeigt, in Visual Studio das hex-editor:
Nun eine Datei ist wirklich nur eine lineare Abfolge von bytes. Die Zeilen, die Sie sehen in einem hex-editor sind nur da, um die Dinge einfacher zu Lesen. Wenn Sie wollen, zu manipulieren, um die bytes in einer Datei mit dem code, die Sie benötigen, um identifizieren die bytes durch Ihre 0-basierte Positionen. In dem obigen Beispiel die Positionen der nicht-null-bytes sind wie folgt:
In den hex-editor Darstellung oben gezeigt, die zahlen auf der linken Seite repräsentieren die Positionen des ersten byte in der entsprechenden Zeile. Der editor zeigt 16 bytes pro Zeile, so erhöhen Sie durch 16 (0x10) in jeder Zeile.
Wenn Sie wollen einfach eine der bytes in der Datei, und ändern Sie seinen Wert, ist der effizienteste Ansatz, den ich sehe, wäre, öffnen Sie die Datei mit einem FileStream, suchen Sie die entsprechende position und überschreiben Sie den byte. Zum Beispiel, die folgende wird sich ändern, 0x40 an position 24 zu 0x04:
Gut die erste Sache, die wäre wahrscheinlich zu verstehen, die conversions. Hex zu dezimal ist wohl nicht so wichtig (es sei denn natürlich Sie müssen ändern Sie den Wert von dezimal ersten, aber das ist eine einfache Formel Konvertierung), aber hex to binary wird wichtig sein, zu sehen, wie jedes hex-Zeichen (0-9,A-F) entspricht einem bestimmten die binäre Ausgabe.
Nach dem Verständnis, das Zeug, der nächste Schritt ist, um herauszufinden, genau das, was Sie suchen, stellen Sie die korrekte Konvertierung, und ersetzen Sie den genauen string. Ich würde empfehlen (wenn die Puffer nicht zu groß) den ganzen hex-dump und ersetzen Sie, was Sie suchen für in es zu vermeiden, das überschreiben einer doppelten binäre Sequenz.
Hoffe, das hilft!
Grüße,
Dennis M.