Spider-Man PC Script Hook (V4.0630.0.0)

Spider-Man PC Script Hook (V4.0630.0.0)

jedijosh920的Script Hook非官方兼容补丁,适用于游戏版本(Spider-Man.exe 4.0630.0.0)。原版仅兼容v1.817.1.0。这不是我的模组。所有功劳归jedijosh920所有:https://www.nexusmods.com/marvelsspidermanremastered/mods/1288

描述

jedijosh920 的 Script Hook 及其脚本模组在游戏更新后停止工作:游戏现在启动到黑屏,并在 Script Hook 注入的瞬间崩溃。这是一个非官方的兼容性补丁,使它们能在 v4.0 版本(Spider-Man.exe 文件版本 4.0630.0.0)上重新运行。

这不是一个新模组,它本身不添加任何内容。它是三个修补过的 DLL。你实际使用的所有东西——Script Hook、调试菜单、模组菜单——都是 jedijosh920 的作品;我只是修复了游戏更新破坏的部分。

必须解决两个独立的问题:

Script Hook 的崩溃并非你预期的那样是“地址移动”的情况。它的 20 个签名扫描在新版本上仍然完美解析。真正的原因是其自身代码中的一个潜在错误:它的一个钩子处理程序将一个 64 位字符串指针存储在 32 位寄存器中。在旧版本上这无关紧要,因为游戏调用该函数的 228 个位置中有 204 个传递 NULL。新版本增加了一个调用点,传递了一个真实的堆分配字符串——指针被截断了一半,游戏解引用了垃圾数据,然后崩溃了。重新编码三条指令就修复了。

调试菜单和模组菜单是更为常见的破坏类型。它们的字节签名中包含了游戏的 rip 相对偏移,而这些偏移在每次重建时都会改变,因此它们的模式不再匹配。它们的扫描返回 NULL,模组在解引用时崩溃。更新每个模组中的三个常量使它们恢复了正常。

如果 jedijosh920 发布了针对 v4.0 的官方更新,请使用该更新而不是这个补丁。

要求

游戏版本:Marvel's Spider-Man Remastered,Spider-Man.exe 文件版本 4.0630.0.0。检查方法:右键点击 Spider-Man.exe → 属性 → 详细信息 → 文件版本。在较旧的 v1.817.1.0 版本上,请使用 jedijosh920 的原始模组——此补丁在那里无法使用。

所需模组(先安装):

其他:Script Hook 的 ImGui 覆盖层(USE_D3D12_IMGUI=TRUE)与原始模组有相同的要求——我这边没有新增内容。

致谢

首先感谢 jedijosh920。Script Hook、调试菜单和模组菜单完全是他一个人的作品,没有这些,这个页面就没有任何可提供的内容。我在这里没有编写任何一项功能——我只是修复了游戏更新破坏的东西。感谢你最初构建了让这一切成为可能的东西,并让它持续了这么久。

我不是逆向工程师。我在一个 AI 助手的帮助下完成了这项工作,它反汇编了二进制文件,阅读了崩溃转储,找到了真正的根本原因——结果发现这和我假设的完全不同——并和我一起制定了字节级的修复方案。

还要感谢所有在更新后持续报告崩溃而不是直接卸载的人:正是这些报告让这件事变得值得去追查。

如果 jedijosh920 不希望分发此补丁,请告诉我,我会立即将其下架。这是他的作品;我只是借用了一下。