Windows 中有没有办法从命令行编辑二进制文件?即可以写入批处理文件的方式?
我希望能够在现有文件中的已知位置编辑单个字节。
这个现有问题[1]已经解决,但这是一个 Linux 解决方案。我正在寻找类似的 Windows 版本。
背景
从 Steam 下载时,GTA 1 存在一个错误,导致游戏保存数据文件在退出时损坏。结果,第一次玩游戏还可以,但后来就崩溃了。事实证明,可以通过将文件中的第 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)
理想情况下,我宁愿在执行以下操作的批处理作业中执行此操作:
我可以制作一些对我有用的东西(使用Python),但这对其他没有Python的人没有帮助(是的,我知道它很容易获得和安装,但仍然如此)。同样,有一个免费软件声称可以做到这一点,但我不想在我的电脑上运行随机的 .exe,我认为其他人也不应该这样做。出于这个原因,我想提供一个批处理文件,人们可以检查它,并且 - 如果他们对它所做的感到满意 - 可以自己运行。
谢谢你的帮助!
[1] CLI:在地址处写入字节(从命令行进行十六进制编辑/修改二进制文件) https://stackoverflow.com/questions/4783657/cli-write-byte-at-address-hexedit-modify-binary-from-the-command-line
[2] http://forums.steampowered.com/forums/showthread.php?t=1597746 http://forums.steampowered.com/forums/showthread.php?t=1597746
[编辑]修复了Python脚本,因为我发现它不能按原样工作(file.read()返回一个不可变的对象,所以你不能只更新其中一个值)。