Ist es möglich das Bearbeiten einer binären Datei mit der Windows-Kommandozeile?
Gibt es eine Möglichkeit in Windows zu Bearbeiten, eine binäre Datei von der Befehlszeile aus? d.h. ein Weg, der geschrieben werden kann in eine batch-Datei?
Möchte ich Bearbeiten können, um ein einzelnes byte, bei einer bekannten position in einer vorhandenen Datei.
Diese bestehende Frage[1] ist gelöst, aber das ist eine Linux-Lösung. Ich bin auf der Suche nach etwas ähnliches für Windows.
Hintergrund
Da ist ein Fehler in GTA 1, wenn Sie heruntergeladen von Dampf, wobei der save-game-Daten-Datei beschädigt verlassen. Als Ergebnis, die Spiel gespielt werden kann, feinen die erste Zeit, aber danach stürzt. Es stellt sich heraus, dies kann behoben werden, indem Sie das 5. byte in der Datei (d.h. das byte an Adresse 0x04) von x00 bis x06[2].
Kann ich dies in Python ganz einfach, z.B.:
with open("PLAYER_A.DAT", "rb") as f:
bytes = f.read()
bytes = bytes[:4] + '\x06' + bytes[5:]
with open("PLAYER_A.DAT", "wb") as g:
for b in bytes: g.write(b)
Ideal aber ich würde lieber tun Sie dies in einem batch-job, der das folgende tut:
- Korrekturen der Daten-Datei
- startet GTA
Ich könnte machen Sie etwas, das funktioniert für mich (mit Python), aber das würde nicht helfen, beliebige andere Personen, die nicht über Python (ja, ich weiß, es ist leicht zu bekommen & installieren, aber immer noch). Ebenso gibt es eine freeware erhältlich, die behauptet, genau dies zu tun, aber ich nicht wollen, dass es eine zufällige .exe-Datei auf meinem PC, und ich glaube nicht, dass jemand anderes entweder. Aus diesem Grund möchte ich eine batch-Datei, dass die Menschen Sie besichtigen können, und - wenn Sie glücklich sind mit dem, was Sie tut - laufen für sich selbst.
Danke für deine Hilfe!!!
[1] CLI: Schreiben byte an der Adresse (hexedit/ändern (Binär von der Kommandozeile aus)
[2] http://forums.steampowered.com/forums/showthread.php?t=1597746
[Bearbeiten] Fixiert das Python-Skript, wie ich fand es nicht so ist ("Datei.read() liefert ein unveränderliches Objekt, so kann man nicht einfach ein update der Werte).
InformationsquelleAutor sam | 2013-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, PowerShell ist ein perfektes Werkzeug für diese Aufgabe. Es ist verfügbar für Windows XP oder höher und wird automatisch geliefert, da Windows 7:
Erstellen Sie einfach eine
*.ps
- Datei mit diesem Inhalt:Hinweis, dass man zum aktivieren nicht signierte PowerShell-Skripts:
Starten Sie PowerShell als administrator
Diesen Befehl ausführen:
Set-ExecutionPolicy RemoteSigned
Konnte man auch mit VBScript, aber das Skript etwas länger, weil es nicht darauf ausgelegt ist für das Lesen von Binär-Dateien (Sie müssen verwenden
ADODB.Stream
Objekte).Hier ist eine Sammlung von Hilfsfunktionen: http://www.motobit.com/tips/detpg_read-write-binary-files/
[update] ich habe das gleiche Problem auch nach Einstellung der Ausführungsrichtlinie. Ich sehe das, wenn ich von der cmd oder powershell.
Welche Windows version verwenden Sie? Verwenden Sie die neuesten updates? Tut mir Leid für das merkwürdige Verhalten. Hier ist eine neue version, die wartet, bis eine Taste betätigt vor der Ausführung jedes Befehls: pastebin.com/5hjHbkBt. Versuchen Sie auch, das das script über rechts-Klick-->mit PowerShell Ausführen im Explorer.
[update 2] ich kann mit "powershell -noexit .\script.ps" und das scheint zu funktionieren.
nach einem Neustart von meinem PC die original PS-Skript läuft jetzt einwandfrei (mit "powershell-Skript.ps" aus cmd.exe). Keine Ahnung, was verursacht, dass die seltsamen Problem.
InformationsquelleAutor ComFreek
Was über die Aufteilung der original-Datei in drei, dann Verschmelzung mit Ihrer Ersatz-byte in der Mitte? Teilen Sie die binäre, die in drei Teile (start -> Ziel 1 /Ziel /Ziel+1 -> Ende), dann KOPIEREN, die Zusammenführung der anfangs-und end-Stücke mit Ihrem neuen byte in der Mitte.
Habe ich nie in der Lage, DOS - (oder eine beliebige Windows-Eingabeaufforderung) zum teilen einer Datei nativ, sondern der freien SPLITS.EXE Programm ist sehr gut und könnte in Ihrer Lösung enthalten. KOPIEREN ist natürlich eine native-Befehl.
Ich kann nicht finden, ein link, um das Dienstprogramm jetzt, aber googlen für "freie dos-Datei-split-Dienstprogramm" ergibt viele Treffer...
Als ComFreek sagt, wenn ich glücklich war, führen Sie eine zufällige exe würde ich nur verwenden, GTALauncher.exe die behebt die Datei & startet GTA 🙂
Nun, da gibt es keinen Weg, es zu tun, in DOS (zumindest keine Weise, die ich jemals entdeckt), die Sie gehen zu müssen, um Schiff, ein Helfer-Programm mit dem Skript - oder einfach-Paket die Lösung ein .exe-Datei und versenden. Ich nehme an, der Unterschied ist, dass, wenn Sie ein Schiff frei verfügbare 3rd-party-Dienstprogramm zusammen mit einem script befinden, kann es im Vergleich gegen das gleiche Dienstprogramm aus anderen Quellen (hoffentlich seriösen) in der Erwägung, dass eine benutzerdefinierte .exe-Paket nicht.
InformationsquelleAutor Eight-Bit Guru