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)
理想情况下,尽管我宁愿在执行以下操作的批处理作业中执行此操作:
- 修复数据文件
- 推出 GTA
我可以制作一些对我有用的东西(使用 Python),但这无助于随机其他没有 Python 的人(是的,我知道它很容易获取和安装,但仍然如此)。同样,有一个免费软件声称可以做到这一点,但我不想在我的 PC 上运行随机的 .exe,我认为其他人也不应该这样做。出于这个原因,我想提供一个批处理文件,人们可以检查它,并且 - 如果他们对它的功能感到满意 - 自己运行。
谢谢你的帮助!
[1] CLI:在地址处写入字节(从命令行十六进制编辑/修改二进制文件)
[2] http://forums.steampowered.com/forums/showthread.php?t=1597746
[编辑] 修复了 Python 脚本,因为我发现它不能按原样工作(file.read() 返回一个不可变对象,因此您不能只更新其中一个值)。