Win11 24H2 揭开《GTA:圣安地列斯》游戏 20 年老漏洞:Skimmer 飞机凭空消失

Win11 24H2 揭开《GTA:圣安地列斯》游戏 20 年老漏洞:Skimmer 飞机凭空消失
2025年04月24日 09:46 IT之家

IT之家 4 月 24 日消息,科技媒体 NeoWin 昨日(4 月 23 日)发布博文,报道称在 Windows 11 24H2 系统设备上,运行《侠盗猎车手:圣安地列斯》游戏,Skimmer 水上飞机完全消失,无法在游戏世界中找到。

这一现象在玩家社区引发热议,最终引起了 SilentPatch 开发者 Silent 的注意。SilentPatch 是一个致力于修复老游戏漏洞、提升兼容性的非官方项目。

游戏常规位置已不见 Skimmer游戏常规位置已不见 Skimmer

Silent 最初怀疑问题可能来自其他 MOD 或特定系统配置,但随后在未安装任何 MOD 的纯净版游戏上,只要在 Windows 11 24H2 上运行 Skimmer 就会消失。

Silent 在 Windows 11 24H2 环境下测试,发现 Skimmer 确实从常规位置消失。更为诡异的是,当他通过游戏内命令强制生成飞机后,角色 CJ 会被弹射到天空中,距离高达 1.087 quadrillion light-years(约 1.087 千万亿光年),游戏画面失控或直接卡死。

显示高度 1.087 quadrillion light-years显示高度 1.087 quadrillion light-years

Silent 进一步分析代码,发现问题源于 Skimmer 的物理边界框(bounding box)计算错误,其 Z 值被设置为一个荒谬的数字(-4.30747210e+33),导致游戏误判飞机位置。

深入追踪后,Silent 发现问题根源在于游戏配置文件 vehicles.ide 中 Skimmer 的定义不完整,缺少轮子尺寸参数。

这源于《GTA: Vice City》时期 Skimmer 被归类为船只,无需这些参数,而在《San Andreas》中改为飞机后,Rockstar 未更新配置。游戏代码在读取数据时未初始化相关变量,导致其值依赖于内存堆栈中的随机数据。

过去 20 年,在 Windows 10 等版本中,Skimmer 前一个车辆 Topfun 的轮子尺寸值(0.7)恰好残留在内存中,意外让 Skimmer 勉强正常运行。

Windows 10 上并未调整堆栈值Windows 10 上并未调整堆栈值

但 Windows 11 24H2 更新改变了内存堆栈使用方式(涉及 LeaveCriticalSection 函数),覆盖了残留值,导致 Skimmer 的物理计算彻底失控。

在 Windows 11 24H2 版本中,新的临界区实现方式修改了更多的堆栈空间。在 Windows 11 24H2 版本中,新的临界区实现方式修改了更多的堆栈空间。

Silent 强调,这并非 Windows 11 的问题,而是《GTA San Andreas》代码本身的漏洞,长期依赖内存布局的“侥幸”运行。他将在下一版 SilentPatch 中修复此问题。

玩家目前可手动编辑游戏目录下的 data\vehicles.ide 文件,找到 Skimmer 行并添加轮子尺寸参数(0.7),即可恢复飞机。

新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片