RE-UE4SS 兼容性修复(适用于 2.0 更新,UE5.5)

RE-UE4SS 兼容性修复(适用于 2.0 更新,UE5.5)

非官方 RE-UE4SS 兼容构建,适用于《潜行者2》2.0 更新 / UE5.5,修复了 GUObjectArray 检测、启动时 UObject/FName 崩溃以及 GMalloc 解析错误的问题。

RE-UE4SS 兼容性修复(适用于 S.T.A.L.K.E.R. 2 Update 2.0)

这是针对《S.T.A.L.K.E.R. 2:切尔诺贝利之心》Update 2.0 / 虚幻引擎 5.5 的非官方临时兼容版 RE-UE4SS。

这不是已弃用的 UETools .pak 模组的更新版本。

它修复了在测试的 STALKER 2 Update 2.0 可执行文件上发现的若干 RE-UE4SS 兼容性问题。

哪些地方出了问题?

调试过程中发现了三个独立的问题。

1. GUObjectArray 检测

原版 UE4SS 在测试的 Update 2.0 可执行文件上无法定位 GUObjectArray。

此包包含一个自定义的:

UE4SS_Signatures/GUObjectArray.lua

该签名经过测试为唯一匹配,并能在启用 ASLR 的情况下正确解析 GUObjectArray。

2. UObject / FName 启动崩溃

在 GUObjectArray 被解析后,UE4SS 能进一步推进,但在早期对象初始化过程中崩溃,涉及 GetFullName、GetPathName 和 FName 处理。

包含的 UE4SS.dll 包含针对此启动路径的兼容性改动和更安全的对象查找回退方案。

相关的上游 RE-UE4SS 问题: https://github.com/UE4SS-RE/RE-UE4SS/issues/1250

3. GMalloc 解析错误

在绕过上一个问题后,在以下过程中发生了另一处崩溃:

TypeChecker::store_all_object_types -> TSet::Emplace

现有的 GMalloc 模式与游戏不匹配,因此 patternsleuth 回退到其基于字符串的解析器。

该解析器选择了一个误报的全局变量,它不是 FMalloc 对象。

结果:

QuantizeSize(0x60, 0)

返回了:

1

而不是有效的分配大小。

通过游戏的分配器调用路径追踪到了实际的分配器。 其 QuantizeSize 实现对于请求大小正确返回了:

0x60

请求大小为:

0x60

创建并测试了新的 GMalloc AOB。

该修复已提交上游:

https://github.com/trumank/patternsleuth/pull/24

测试结果

测试环境:

S.T.A.L.K.E.R. 2 Update 2.0 虚幻引擎 5.5 Windows x64 开发期间使用 Steam 可执行文件

使用包含的构建版本:

  • 游戏可到达主菜单,没有之前的致命错误
  • UE4SS 初始化成功
  • UE4SS 控制台功能正常
  • 成功执行了一条物品添加控制台命令

其他商店平台的可执行文件尚未测试。


[u][color=#bf9000]安装 - 补丁 2.0.5[/color][/u]

[color=#b45f06]## 重要 [/color]

此压缩包不是完整的 RE-UE4SS 安装包。

此兼容性修复已使用:RE-UE4SS v3.0.1-1028-gd7e7826d 进行测试

目前不支持使用其他 UE4SS 构建版本,可能会导致崩溃。

强烈建议手动安装。

1. 安装正确的 RE-UE4SS 构建版本

下载:从 GitHub 上的 RE-UE4SS Experimental releases 下载 **UE4SS_v3.0.1-1028-gd7e7826d.zip**。
解压到:Stalker2\Binaries\Win64\
解压后,你应该拥有类似以下文件:

    Stalker2\Binaries\Win64\dwmapi.dll
    Stalker2\Binaries\Win64\ue4ss\UE4SS.dll
    Stalker2\Binaries\Win64\ue4ss\UE4SS-settings.ini

如果你没有这些文件,说明 UE4SS 未正确安装。

2. 安装此兼容性修复

首先备份你当前的 UE4SS 文件。
将此模组压缩包解压到:Stalker2\Binaries\Win64\
允许 Windows 合并文件夹并替换:ue4ss\UE4SS.dll
压缩包还会安装所需的自定义签名:

    ue4ss\UE4SS_Signatures\GUObjectArray.lua
    ue4ss\UE4SS_Signatures\FName_ToString.lua

3. 配置 UE4SS

打开:ue4ss\UE4SS-settings.ini
找到并设置:

    bUseUObjectArrayCache = false
    DefaultFNameToStringMethod = Scan

然后找到:[Hooks] 部分。
确保以下值完全为:

     HookProcessLocalScriptFunction = 0
     HookInitGameState = 0
     HookLoadMap = 0
     HookCallFunctionByNameWithArguments = 0
     HookBeginPlay = 0
     HookLocalPlayerExec = 0
     HookAActorTick = 0
     HookEngineTick = 0
     HookGameViewportClientTick = 0

不要禁用所有钩子

你不需要将每个 Hook 值都改为 0。
以下可以保持启用:

     HookProcessInternal = 1
     HookEndPlay = 1
     HookUObjectProcessEvent = 1
     HookProcessConsoleExec = 1
     HookUStructLink = 1

补丁 2.0.5 的重要新改动是:
     HookProcessLocalScriptFunction = 0

[color=#f6b26b]# 非常重要 — 补丁 2.0.5[/color]

补丁 2.0.5 引入了两个额外的 UE4SS 兼容性问题。

1. ProcessLocalScriptFunction

UE4SS 在补丁 2.0.5 上解析到无效的 ProcessLocalScriptFunction 地址。 因此需要:HookProcessLocalScriptFunction = 0 保持此钩子启用可能会导致[color=#cc4125]立即[/color]启动/访问冲突[color=#cc4125]崩溃[/color]。

2. FName::ToString

之前的:"DefaultFNameToStringMethod = Conv_NameToString" 变通方案在补丁 2.0.5 上不再可靠。

因此 v1.2 包含:"UE4SS_Signatures\FName_ToString.lua" 并使用:

DefaultFNameToStringMethod = Scan

自定义签名已在补丁 2.0.5 可执行文件上验证。


控制台

你不需要为此兼容性修复启用外部 UE4SS 调试 GUI 控制台即可正常工作。

诸如以下设置:

     ConsoleEnabled = 1
     GuiConsoleEnabled = 1
     GuiConsoleVisible = 1

仅控制 UE4SS 的外部调试控制台/窗口。

它们不是游戏内控制台或此兼容性补丁本身所必需的。


如果游戏启动时仍然崩溃

在报告问题之前,请核实以下所有内容:

  1. 你正在运行 S.T.A.L.K.E.R. 2 补丁 2.0.5
  2. 你已安装 UE4SS v3.0.1-1028-gd7e7826d
  3. 此模组已解压到: Stalker2\Binaries\Win64\
  4. 两个文件都存在: ue4ss\UE4SS_Signatures\GUObjectArray.lua ue4ss\UE4SS_Signatures\FName_ToString.lua
  5. 你的 UE4SS-settings.ini 包含: bUseUObjectArrayCache = false
  6. 它包含: DefaultFNameToStringMethod = Scan
  7. 它包含: HookProcessLocalScriptFunction = 0
  8. 上面列出的其他已禁用钩子也设置为 0。

如果以上所有内容都正确但游戏仍然崩溃,请在报告问题时附上你的:

UE4SS.log


重要

此构建是专门为测试的 Update 2.0 可执行文件制作的。

未来的 S.T.A.L.K.E.R. 2 更新可能会使一个或多个签名失效。

一旦这些修复在官方 RE-UE4SS 构建中可用,用户应优先使用官方发布版本,而不是此临时兼容性构建。

源码与透明度

RE-UE4SS: https://github.com/UE4SS-RE/RE-UE4SS

patternsleuth: https://github.com/trumank/patternsleuth

GMalloc 上游拉取请求: https://github.com/trumank/patternsleuth/pull/24

RE-UE4SS 基础提交: d7e7826d415b0332b43439a64e6c87f64019be03

patternsleuth 修补提交: 9fbd2de36a6c79b7050c442da596073fe2b577ad

下载内容包含:

  • 精确的源码差异
  • 构建信息
  • SHA-256 哈希
  • 许可证信息
  • GUObjectArray 签名源码

不包含任何 S.T.A.L.K.E.R. 2 可执行文件、DLL、PAK 文件、内存转储或游戏资源。

致谢

RE-UE4SS: UE4SS-RE 贡献者 / Narknon

patternsleuth: trumank 及贡献者

STALKER 2 Update 2.0 兼容性调试、签名和测试: robert-krukau

本项目与 GSC Game World、Epic Games、Nexus Mods 或 RE-UE4SS 维护者无关联,也未得到其认可。