Win11 24H2更新让《GTA:圣安地列斯》20年老漏洞显现

   时间:2025-04-24 10:56 来源:天脉网作者:江紫萱

近期,游戏玩家社区中热议起了一个奇怪的现象:在Windows 11最新的24H2系统上运行经典游戏《侠盗猎车手:圣安地列斯》时,游戏中的Skimmer水上飞机竟然神秘消失了。这一发现最初由科技媒体NeoWin报道,迅速引起了玩家们的广泛关注。

面对这一离奇问题,SilentPatch的开发者Silent站了出来。SilentPatch是一个专注于修复老游戏漏洞和提升其兼容性的非官方项目,Silent对这个问题展开了深入调查。起初,Silent怀疑问题可能源于其他MOD或特定的系统配置,但在纯净版游戏上反复测试后,他确认只要在Windows 11 24H2系统上运行,Skimmer就会消失。

Silent进一步在游戏中测试发现,不仅Skimmer在常规位置消失,而且通过游戏内命令强制生成飞机后,角色CJ会被弹射到天空中,距离高达约1.087千万亿光年,游戏画面随之失控或直接卡死。这一发现更加令人困惑。

Silent通过深入分析游戏代码,终于找到了问题的根源。原来,Skimmer的物理边界框(bounding box)计算出现了错误,其Z值被设置成了一个荒谬的数字(-4.30747210e+33),导致游戏误判了飞机的位置。进一步追踪后,Silent发现这是因为游戏配置文件vehicles.ide中Skimmer的定义不完整,缺少了轮子尺寸参数。

据Silent解释,在《GTA: Vice City》时期,Skimmer被归类为船只,无需这些参数。但在《圣安地列斯》中,Skimmer被改为了飞机,而Rockstar Games却没有更新相关配置。因此,游戏代码在读取数据时未能初始化相关变量,导致其值依赖于内存堆栈中的随机数据。在过去的20年里,在Windows 10等版本中,Skimmer前一个车辆Topfun的轮子尺寸值(0.7)恰好残留在内存中,意外地让Skimmer能够勉强正常运行。

然而,Windows 11 24H2的更新改变了内存堆栈的使用方式,特别是涉及LeaveCriticalSection函数的实现,覆盖了这些残留值,导致Skimmer的物理计算彻底失控。Silent强调,这并不是Windows 11的问题,而是《GTA San Andreas》代码本身的漏洞,长期以来一直依赖内存布局的“侥幸”运行。

为了解决这一问题,Silent计划在下一版SilentPatch中修复这一漏洞。同时,他也为玩家提供了一个临时解决方案:手动编辑游戏目录下的datavehicles.ide文件,找到Skimmer的相关行,并添加轮子尺寸参数(0.7),即可恢复飞机的正常显示和使用。

 
反对 0举报 0 收藏 0
 
更多>同类天脉资讯
全站最新
热门内容
媒体信息
新传播周刊
新传播,传播新经济之声!
网站首页  |  关于我们  |  联系方式  |  版权隐私  |  网站留言  |  RSS订阅  |  违规举报