Windows でコマンド ラインからバイナリ ファイルを編集する方法はありますか? つまり、バッチ ファイルに書き込む方法はありますか?
既存のファイルの既知の位置で、1 バイトを編集できるようにしたいと考えています。
この既存の質問 [1] は解決されていますが、これは Linux のソリューションです。Windowsに似たものを探しています。
バックグラウンド
GTA 1 を Steam からダウンロードすると、終了時にセーブ データ ファイルが破損するというバグがあります。その結果、ゲームは最初は問題なくプレイできますが、その後クラッシュします。これは、ファイルの 5 番目のバイト (アドレス 0x04 のバイト) を x00 から x06[2] に変更することで修正できることがわかりました。
これは Python で簡単に実行できます。
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)
理想的には、次のことを行うバッチジョブでこれを実行したいのですが:
- データファイルを修正します
- GTAを起動
私は(Pythonを使用して)自分に合ったものを作ることができましたが、Pythonを持っていないランダムな他の人には役に立ちません(はい、簡単に入手してインストールできることはわかっていますが、それでも)。同様に、これだけを行うと主張するフリーウェアが利用可能ですが、私は自分の PC でランダムに .exe を実行したくありません。そのため、バッチ ファイルを提示したいと思います。このバッチ ファイルは、人々が調べて、その動作に満足している場合は、自分で実行できます。
助けてくれてありがとう!
[1] CLI: アドレスにバイトを書き込みます (コマンドラインから hexedit/modify binary)
[2] http://forums.steampowered.com/forums/showthread.php?t=1597746
[編集] Python スクリプトがそのままでは機能しないことがわかったため、修正しました (file.read() は不変オブジェクトを返すため、値の 1 つだけを更新することはできません)。