Wenn Sie einen Patch auf eine Datei anwenden, überschreiben Sie einen Teil davon mit aktualisierten Daten (ein Patch kann auch zusätzliche Daten bis zum Ende anheften). Sie können jeden Dateityp patchen, egal ob es sich um Text, Binärdateien oder was auch immer handelt, da alle Dateien Ströme von Bytes sind, wenn es darauf ankommt.
Die Teile davon, die überschrieben werden sollen, sind in der Patch-Datei angegeben.
Wenn ein Software-Fix das Aktualisieren einer Datei umfasst, kann ein Patch die Datei so ändern, dass sie mit einer Vollversion einer aktualisierten Datei identisch ist. Da Patches nicht die vollständige Datei sind, sondern nur die Unterschiede, sind Patches kleiner, verbrauchen weniger Speicherplatz und verbrauchen beim Herunterladen weniger Bandbreite.
Die direkte Bearbeitung einer Binärdatei in einem Hex-Editor (z. B. hexer
) wird manchmal als "manuelles" Patchen bezeichnet.
Ich bin nicht vertraut mit xxd
, aber es sieht aus wie aus der vorläufigen Suche, xxd
die einen Dump oder eine Hex-Auflistung von Binärdaten erzeugen und eine solche Auflistung auch wieder in eine reine Binärliste konvertieren kann. Sie können das Hex also mit xxd
ausgeben, mit vim
oder einem anderen Texteditor bearbeiten und Änderungen mit einem zurückschreiben xxd -r
. Sie können ihm auch eine Zeichenfolge echo
im xxd
"Hexdump-Format" zuweisen. (Mit anderen Optionen können Sie Änderungen an der Binärdatei vornehmen. Anscheinend xxd
gibt es viele Optionen, mit denen Sie angeben können, wo das Überschreiben oder Patchen gestartet und gestoppt werden soll.)
Der erste Befehl im Beispiel sagt im Grunde, xxd
dass die Bytes in der Datei xxd.1
beginnend mit dem Offset 0x0000037
auf 0x35 0x74 0x68
(ASCII für "5th") geändert werden sollen . xxd
kann sein eigenes "Hexdump" -Format lesen und das ist es, was der "Echo" -Befehl bereitstellt xxd
.
Der zweite Befehl im Beispiel gibt einen Count ( -c
) von 13 Bytes in der Datei aus, beginnend mit demselben Offset.
Der patch
Befehl macht eine ähnliche Sache, möchte aber Dateien in einem "diff" -Format. Sie können eine Diff-Datei erstellen, indem Sie die Ausgabe des diff
Befehls speichern , der zwei Dateien vergleicht und die Unterschiede im Diff-Format ausdrückt. Nach dem Lesen der man
Seite sieht es so aus, als ob Patch eher zum Ändern von Textdateien als für reine Binärdateien gedacht ist.