sebh974/mordhau-disable-idle-kick

GitHub: sebh974/mordhau-disable-idle-kick

通过修改 Mordhau 专用服务器二进制文件中的一个字节来禁用 AFK/闲置踢出机制,专供私人或局域网服务器使用。

Stars: 0 | Forks: 0

# Mordhau — 禁用专用服务器的闲置 / AFK 踢出 一个微型工具,通过修补 Mordhau **专用服务器**可执行文件中的**一个字节**,使其停止因不活动而踢出玩家(即在大约 180 秒后触发的 `reason: Inactif` / `reason: Inactive` 踢出)。 如果你运行的是私人 / LAN Mordhau 服务器,而你的朋友总是**因为闲置被踢出** —— 无论是在队伍选择界面,还是仅仅站着不动 —— 并且在 `Game.ini` 中设置 **`IdlePlayerKickTime`** 毫无作用:这是正常的。**该设置会被忽略;超时时间是硬编码在服务器二进制文件中的。** 本工具就是用来修补这个问题的。 ## ⚠️ 阅读须知 - **这是一个粗暴的补丁。** 它会完全中和服务器的 `KickPlayer` 例程,因此它会禁用**所有**踢出操作 —— 包括 **admin RCON `kick`** 命令和**击杀队友自动踢出**。非常适合私人 / LAN 服务器;在公共服务器上使用前请三思。 - **EasyAntiCheat / 公共服务器。** 修改服务器二进制文件可能会导致**公共的、已列出的、启用 EAC 的**服务器被拒绝或标记。请在**私人 / LAN / 关闭 EAC 的**环境中使用此工具。 - **它只修补*你自己的*副本。** 本代码库**不包含任何 Mordhau 代码**,也不分发任何属于该游戏的内容。该脚本只编辑你已经拥有的二进制文件,并会首先进行备份。 - **仅在一个版本上测试过**(见下文)。在任何其他版本上,修补程序会通过唯一的 signature 来定位该例程,如果不确定则会拒绝执行。 ## 快速开始 ``` # 1) 首先停止你的 Mordhau 服务器(正在运行的 .exe 在 Windows 上会被锁定) # 2) 运行: python patch_mordhau_idlekick.py "path\to\MordhauServer-Win64-Shipping.exe" ``` 还原修改: ``` python patch_mordhau_idlekick.py --revert "path\to\MordhauServer-Win64-Shipping.exe" ``` 检查当前状态: ``` python patch_mordhau_idlekick.py --check "path\to\MordhauServer-Win64-Shipping.exe" ``` 无需依赖 —— 仅需 Python 3,且仅使用标准库。如果你不指定路径,它会在当前文件夹中递归搜索。 ## 它的作用 - 找到服务器的 `KickPlayer` 例程,并将其**第一个字节 `0x4C` 更改为 `0xC3`**(x86 的 `ret` 指令)。 - 该例程现在会立即返回,因此服务器永远不会踢出任何人。 - 仅限一个字节。完全可逆。文件中的其他内容均不会被改动。 ## 支持的版本 | | | |---|---| | 二进制文件 | `MordhauServer-Win64-Shipping.exe` | | 版本 | Release 26, Revision 25635 (Unreal Engine 4.26) | | 大小 | 89,696,256 字节 | | SHA-256 | `a11348d6bfdb386d7f8a976a59e7d28d38b0d1ba2b9a2a7e0035ac28d53f885e` | | 修补 offset | `0x14DA5F0` — `0x4C` → `0xC3` | | `KickPlayer` VA | `0x1414DB1F0` (ImageBase `0x140000000`) | Mordhau 已经很长时间没有发布服务器更新了,所以这几乎肯定就是你目前使用的版本。如果在其他版本上,脚本会回退到唯一的 35 字节 signature 扫描,而不是使用固定的 offset。 ## 手动修补(如果你不想运行脚本) 备份文件,在 hex editor 中打开它,跳转到 offset **`0x14DA5F0`**,将 **`4C`** 更改为 `C3`,保存。 更倾向于通过 signature 定位?找到这 36 字节的序列(它只出现一次),并将其**第一个**字节从 `4C` 更改为 `C3`: ``` 4C 89 44 24 18 48 89 54 24 10 48 89 4C 24 08 55 53 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24 E1 48 81 EC E8 ``` ## 工作原理 / 发现过程 请参阅 **[METHOD.md](METHOD.md)** —— 完整的逆向工程说明(面向开发者和 AI 辅助破解者):为什么配置设置不起作用、失败的内存扫描尝试及其带来的启示,以及导致这个单字节修复的静态分析(pefile + capstone,无需 Ghidra)。如果你想实现**精准手术式修补**(仅针对闲置踢出,保留 admin / 击杀队友踢出),该文档会告诉你该从哪里入手。 ## 许可证 修补程序代码:**MIT**(见 [LICENSE](LICENSE))。不隶属于 Triternion,未经其授权或认可。“Mordhau” 是其各自所有者的商标。使用风险自负。 Keywords: Mordhau dedicated server disable idle kick, Mordhau AFK kick, kicked for inactivity, reason Inactif, reason Inactive, IdlePlayerKickTime ignored / not working, Mordhau private server, LAN server, anti-idle, remove kick, binary patch, UE4.26, Revision 25635.