【发布时间】:2013-04-05 12:57:18
【问题描述】:
在 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: Write byte at address (hexedit/modify binary from the command line)
[2]http://forums.steampowered.com/forums/showthread.php?t=1597746
[编辑] 修复了 Python 脚本,因为我发现它不能按原样工作(file.read() 返回一个不可变对象,因此您不能只更新其中一个值)。
【问题讨论】:
标签: windows cmd edit binaryfiles