Ersetzen der Werte einer Datei mit einem Hex-Bearbeitungsskript

1016
Kalamalka Kid

Ich brauche Hilfe, um ein Bash-Skript zu erstellen, das drei Codezeilen aus einer Savegame-Datei (sav) kopiert und in eine andere Savegame-Datei einfügt. Ich habe einen Hex-Editor verwendet, um dies manuell durchzuführen, indem ich die Werte am selben Offset einfügte, aber ich hätte gerne ein Skript, das dies automatisch tut.

Beispiel:

Die Quelldatei enthält diese Werte, wenn sie in einem HEX-Editor angezeigt werden.

  1. 00001E40 - Wechselstrom 59 D2 01 00 DC AB 8B
  2. 00001E50 - DC 54 D2 01 D0 FE 1A 00
  3. 000FFA90 - 4C 00 00 00 01 14 02 00

Ich möchte diese Werte kopieren und in den gleichen Versatz in einer neuen Datei einfügen.

Ich bin kein Programmierer und verstehe nicht sehr viel über Scripting, möchte aber wissen, ob dies möglich ist?

1
"aus einer Hex-Datei" - Es gibt keine "Hex-Dateien". Die Hex-Editoren zeigen den Inhalt einer Datei hexadezimal an. Ihre Frage ist jetzt unklar. Beschreiben Sie bitte etwas ausführlicher, was Sie tun müssen. Bitte beachten Sie auch, dass dies kein kostenloser Code-Schreibservice ist. Fragen, die ganze Programme verlangen, sind wahrscheinlich zu umfangreich. Máté Juhász vor 7 Jahren 1
ok, bearbeitet danke. Denken Sie, dass die Anfrage jetzt klarer ist? Kalamalka Kid vor 7 Jahren 1
Dies ist eine ziemlich elementare Programmierung mit einem klaren Ziel. IMO, dies ist eine perfekte Zeit für Sie, um zu lernen. Sie müssen eine Datei für den binären Zugriff öffnen, 24 Byte lesen und speichern und die Datei schließen. Öffnen Sie die zweite (2) Datei und eine dritte (3 neue) Datei für den binären Zugriff. Lesen Sie das Byte von (2), schreiben Sie das Byte in (3) bis zum Offset, und schreiben Sie dann die gespeicherten 24 Byte in (3) 24 Byte in (2) vorrücken und dann read'n'write bis zum Ende der Dateimarkierung für (2); Schließen Sie 2 und 3. Also Google für "Bash binäre Datei öffnen und Dateischleife lesen". Sobald Sie etwas haben, können Sie bei Problemen Hilfe anfordern Yorik vor 7 Jahren 1
Bitte beachten Sie, dass https://superuser.com kein kostenloser Skript- / Code-Schreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der Skripts / des Codes, die Sie bereits verwenden) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen [Wie kann ich eine gute Frage stellen?] (Https://superuser.com/help/how-to-ask). DavidPostill vor 7 Jahren 0
@Yorik danke .. bitte sag mir, die 3. Zeile der Daten (000FFA90) befindet sich am Ende der Datei, während sich die ersten beiden (00001E40 & 00001E50) in der Mitte befinden. Berücksichtigt der Prozess, den Sie geschrieben haben, dies? Kalamalka Kid vor 7 Jahren 0
Sie müssen also Ihren Prozess ändern. Der erste Schritt besteht jedoch darin, "zu identifizieren, wie Sie die Informationen identifizieren": Ist es ein fester Ort (genau die letzten 8 Bytes), handelt es sich um eine eindeutige Serie? usw. Es gibt eine Sache mit dem Namen "Rubber Duck Debugging", die auch bei der Planung eines Prozesses hilfreich ist: Erklären Sie einer Gummiente, was Sie tun. Dann schreiben Sie diesen Plan aus und kodieren ihn dann mit einer Programmiersprache. Denken Sie nur daran, dass Computer die pedantischsten Leute sind, die Sie kennen, also müssen Sie sehr genau sein. Yorik vor 7 Jahren 1
Wenn es sich immer um feste Positionen in allen Dateien handelt, ist "000FFA90" genau der Ort, sodass Sie normalerweise einen bestimmten Offset lesen können. Dies wird viel schneller und einfacher als das Speichern der vorherigen acht Bytes und das Vergleichen mit einer bestimmten Bytefolge. Yorik vor 7 Jahren 1

0 Antworten auf die Frage