大佬教程收集整理的这篇文章主要介绍了是否可以使用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的人来说无济于事(是的,我知道它很容易获得和安装,但仍然如此).同样,有一个免费软件声称可以做到这一点,但我不想在我的电脑上运行随机的.exe,我认为其他人也不应该.出于这个原因,我想提出一个批处理文件,人们可以检查,并且 – 如果他们对它的作用感到满意 – 那就自己运行.
谢谢你的帮助!
[1] CLI: Write byte at address (hexedit/modify binary from the command line)
[2] http://forums.steampowered.com/forums/showthread.php?t=1597746
[edit]修复了Python脚本,因为我发现它不能正常工作(file.read()返回一个不可变对象,所以你不能只更新其中一个值).
$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脚本:
>以管理员身份启动PowerSHell
>运行此命令:
Set-ExecutionPolicy RemoteSigned
您也可以使用VBScript,但脚本会更长一些,因为它不是为读取二进制文件而设计的(您必须使用ADODB.Stream对象).
这是辅助函数的汇编:http://www.motobit.com/tips/detpg_read-write-binary-files/
以上是大佬教程为你收集整理的是否可以使用Windows命令行编辑二进制文件?全部内容,希望文章能够帮你解决是否可以使用Windows命令行编辑二进制文件?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。