在近期的新闻中,当《赛博朋克2077》对AMD处理器优化不好的时候,有人祭出了终极大法——修改执行文件!对很多玩家来说,这个修改过程能看懂,但它提供的那一串代码到底是什么?它代表的16进制又是啥意思?可能很多新晋玩家就不知道了,那咱们今天就来说说这事儿吧。
16进制就是以0~F代表0~15的一种表达方式,在修改时看到的一般是两个一组,可以表达0(00)~255(FF)。相对于二进制的0,1,它可以在较短的代码内更多的信息,比如255拥16进制写成FF,二进制就要写成11111111(不用数了,是8个1)。显然16进制用来一些表达一些复杂设置、大型数字更方便。
因为这个优势,所以很多游戏会使用16进制来表达数字,比如有些老游戏中会看到最高级别、属性、最高人数是15、255、65535(FFFF)等比较怪的数字。这有没有让你有点联想?没错,了解16进制之后就可以修改这些属性了。
这里要注意三个问题,首先是10进制的转换,我们可以使用https://tool.lu/hexconvert/等在线转换工具。其次是顺序问题,有些文件中的16进制排列是反向的,比如65534应该表达为FF FE,但在有些文件中是FE FF。最后就是在修改时一定一定要注意备份文件,一旦修改了错误位置,轻则属性混乱,重则存档甚至整个游戏都无法打开。
然后就是具体的修改方法了,我们选择的是目前比较流行的16进制编辑工具,UltraEdit旗下的hex-editor(https://www.ultraedit.com/language/hex-editor.html)。以前面提到的《赛博朋克2077》优化设置为例,安装hex-editor并用它打开Cyberpunk2077.exe。
然后我们必须确定相关的整个字符串,比如75 30 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08,这样才能更好地确定修改位置,尽量避免改错。然后选择“Edit→Find”功能,输入这串字符,找到相关位置,当然不一定要输全也可能找到位置,但也必须确认后续字符完全相同。之后把字符串头部的75改成EB,存档就好了。
至于存档文件就更简单了,可以选择一个比较大而且容易变化的数字,比如军粮数量,存档后在存档文件里用16进制字符查找,记下来位置。然后减少或增加军粮,再次存档,看看之前记下的位置中,哪一个数据变成了新的数量,之后修改并载入试试看。这里要注意的是,一个数据可能会存在多处,如果多次尝试发现几个地方的数据都在同时变化,那么就都修改好了。
最后有个超超超级重要的事要说明,修改属性、数量等参数的方法只适用于纯粹的单机游戏或者仅联网进行正版授权验证的游戏。对于网游或者一些存档会在网上备份的联网“单机”游戏来说,这样的修改不仅很可能不奏效,而且还可能涉及作弊,会被平台惩罚,小伙伴们就千万不要尝试啦。