针对新CPU的Hammer补丁 - MAX_THREADS_SUPPORTED错误修复

0 点赞
异形丛生:虫启天降 (Alien Swarm: Reactive Drop)
转载

本指南介绍如何修复Hammer的致命错误:线程ID不足。解决方法为减少线程数量或增加MAX_THREADS_SUPPORTED。 注意:我发现必须在整个系统中限制CPU才能在新CPU上运行Hammer,这非常荒谬。因此我决定对其进行补丁,这样就无需在每次想要创建地图时手动减少处理器数量,之后若想在其他任务中使用全部CPU时再重新增加。 请自行承担风险,并仔细按照指南操作,以免造成任何问题。应用补丁后,我能够正常运行Hammer,编译正常且所有功能均可使用。我注意到的唯一问题是,有时Hammer会在打开时自行关闭。解决方法是持续尝试打开Hammer,当它询问是否加载之前的保存时,交替点击是和否。经过几次尝试后,它最终会正常打开(例如:运行Hammer→按是→Hammer关闭→再次启动→按否→Hammer关闭→再次启动→按是→依此类推)。对我来说,启动Hammer需要0到5次重启。 备份 前往你的《异形丛生:反应下降》安装目录

进入bin文件夹 找到名为tier0.dll的文件,复制一份并放到其他文件夹中(例如桌面) 这将作为你的备份文件,以防操作失误或Hammer无法正常运行(请务必阅读注意事项)。 十六进制编辑器 你需要一款带有补丁功能的优质十六进制编辑器。我使用的是IDA Free,但你也可以选择其他工具。以下步骤将展示来自IDA Free的截图。 找到问题文件 启动IDA Free 从你的《异形丛生:反应下降》文件夹中加载tier0.dll文件

点击二进制文件,然后点击确定

以32位模式反汇编二进制文件

如果弹出提示IDA无法识别入口点的窗口,直接忽略并点击确定。 在导航栏中依次点击跳转 -> 跳转到地址... 此时会弹出要求输入地址的窗口,粘贴seg000:0000F122并点击确定。 结果视图应如下所示(确保窗口与下方图片完全一致,其中方框1与方框2相连,且所有内容均匹配!)

修复问题 最佳修复方法是将线程限制从32增加到128,但这需要修补相关地址的引用以扩展缓冲区。遗憾的是,我不知道在哪里可以找到对应的地址来占用一个大小为128的未使用字符缓冲区。 因此,我决定完全移除负责抛出此特定错误的函数逻辑。这可能不是最优雅的修复方法,但确实有效。 按照下方截图所示按下地址。

然后进入十六进制视图-1

它应该会自动指引你到正确的位置 在十六进制视图内任意位置右键点击,选择【数据格式】->【1字节整数】 在十六进制视图内任意位置右键点击,选择【列】->【1】 向上或向下滚动以找到此地址:0000F122 你的十六进制视图应如下所示:

在0000F122地址上点击鼠标右键,然后选择编辑。从0000F122到0000F12E(包含该地址),对每个地址只需在键盘上输入90。这会用NOP指令(无操作语句,即不执行任何操作)填充整个函数。然后在十六进制视图的任意位置点击鼠标右键,选择应用更改。此时你的十六进制视图应显示为如下内容。

前往IDA View-A并确认该函数确实填充了NOP指令。

验证完成后,你只需对文件进行补丁操作。操作步骤为:进入编辑 -> 补丁程序 -> 应用到输入文件...

在弹出窗口中,确保不要编辑“Start EA”和“End EA”,并确保输入文件中包含正确的tier0.dll路径。 总结 操作步骤就是这些。通过启动《异形丛生:反应下降》SDK然后启动Hammer来验证。如有任何问题,请在评论中提问。