在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技能的人(是的,我知道安装Python很容易,但仍然存在困难)。同样,有一个免费软件可以做到这一点,但我不想在我的电脑上运行一个未知的.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()返回一个不可变对象,因此无法更新其中一个值)。