gpt4 book ai didi

windows - 是否可以使用 Windows 命令行编辑二进制文件?

转载 作者:可可西里 更新时间:2023-11-01 13:28:47 45 4
gpt4 key购买 nike

在 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() 返回一个不可变对象(immutable对象),因此您不能只更新其中一个值)。

最佳答案

我认为 PowerShell 是完成这项任务的完美工具。它适用于 XP 或更高版本,并且自 Windows 7 起自动提供:

只需创建一个包含以下内容的 *.ps1 文件:

$bytes = [System.IO.File]::ReadAllBytes("PLAYER_A.DAT");
$bytes[4] = 0x06;

[System.IO.File]::WriteAllBytes("PLAYER_A.DAT", $bytes);
& "C:\Path-To-GTA1-Exe-File.exe"

请注意,必须启用未签名的 PowerShell 脚本:

  1. 以管理员身份启动 PowerShell

  2. 运行这个命令:Set-ExecutionPolicy RemoteSigned


您也可以使用 VBScript,但脚本会稍微长一些,因为它不是为读取二进制文件而设计的(您必须使用 ADODB.Stream 对象)。

这里是辅助函数的汇编:http://www.motobit.com/tips/detpg_read-write-binary-files/

关于windows - 是否可以使用 Windows 命令行编辑二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15834573/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com