Liki-js/shadow-of-mordor-internal-trainer

GitHub: Liki-js/shadow-of-mordor-internal-trainer

一款面向 Steam GOTY 版《中土世界:魔多之影》的进程内原生修改器,通过 D3D11 hook 叠加 ImGui 界面,提供生命值、精灵箭、伤害控制等多维度实时调节与游戏修复功能。

Stars: 0 | Forks: 0

# 魔多之影内置修改器 **一个原生的、进程内的修改器和游戏修复套件,适用于 Steam GOTY 版本的**
**中土世界:魔多之影** [![状态:Beta](https://img.shields.io/badge/status-beta-f0a030?style=for-the-badge)](https://github.com/Liki-js/shadow-of-mordor-internal-trainer/releases) [![平台:Windows x64](https://img.shields.io/badge/platform-Windows%20x64-1674d1?style=for-the-badge)](#compatibility) [![C++17](https://img.shields.io/badge/C%2B%2B-17-2f6f9f?style=for-the-badge&logo=cplusplus)](#building-from-source) [![许可证:BSD 3-Clause](https://img.shields.io/badge/license-BSD%203--Clause-3a8f5b?style=for-the-badge)](LICENSE) [下载 Beta 版](https://github.com/Liki-js/shadow-of-mordor-internal-trainer/releases/tag/v0.1.0-beta.1) | [报告 Bug](https://github.com/Liki-js/shadow-of-mordor-internal-trainer/issues/new?template=bug_report.yml) | [功能](#features) | [安装说明](#installation) | [构建](#building-from-source)
## 概述 魔多之影内置修改器在游戏进程内运行,并在原生 DirectX 11 渲染器上提供 Dear ImGui 界面。它将玩家状态控制、弓箭和精灵箭(Elf-shot)工具、绝境求生(Last Chance)自定义、游戏特定修复、实时监视器以及逆向工程诊断集成在一个菜单中。 该项目倾向于使用感知游戏的 hook 和原生执行路径,而不是盲目地冻结数值。功能会等待有效的玩家状态,冲突的选项会在 UI 中被屏蔽,启用的修改器功能在每次启动游戏时重置,并且在宿主进程允许的情况下,关闭期间会恢复可逆的更改。 按 右 Shift 打开或关闭菜单。默认情况下没有启用任何作弊热键。 ## 亮点 | 领域 | 功能 | | --- | --- | | 生命值 | 实时 HP 监控、设置器、受伤时生命值行为、最小和最大 HP | | 恢复 | 恢复至满血、战斗中恢复、自定义 HP/秒 | | 受到的伤害 | 无敌模式、全局乘数、分类乘数、特技和稀有攻击控制 | | 精灵箭和弓箭 | 当前/最小/最大箭矢数、无消耗、hitbox 和拉弦力度覆盖 | | 绝境求生 (Last Chance) | 尝试次数监控、禁用模式、无限尝试、固定 QTE 难度 | | 游戏修复 | 恢复过冲、Alt-Tab 后鼠标卡住、钉刺箭伤害 | | 覆盖层 | 原生 D3D11 菜单、可移动的可选监视器、键盘和鼠标所有权处理 | | 诊断 | Hook 状态、可执行文件指纹、玩家状态可见性、受到的伤害观察 | ## 功能 ### 生命值 - 实时显示当前/最大 HP,带有彩色条形图。 - 可选的可移动生命值监视器窗口。 - **设置 HP**,包含直接写入和游戏路径模式。 - **设置受伤时的生命值**,在塔里昂(Talion)受到伤害时分配指定的数值。 - **最小生命值**,目标值受当前最大 HP 限制。 - **最大生命值**覆盖范围从 `0` 到 `100000`,通过 **Set** 显式提交。 - 针对已知会干扰死亡或绝境求生行为的生命值提供上下文警告。 ### 恢复 - **恢复至满血**将原生恢复上限提升至最大 HP。 - **战斗中恢复**开启游戏的战斗恢复机制。 - **自定义速度恢复**控制原生恢复速率(HP/秒)。 ### 受到的伤害 - **玩家无伤害**防止受到的伤害减少塔里昂的 HP。 - **受到的伤害乘数**从 `x0.0` 到 `x10.0`,步长为 `0.1`。 - **全局**模式对所有支持的受到的伤害应用同一个乘数。 - **高级**模式为以下项目提供独立控制: - 近战 - 投射物 - 弓箭手箭矢 - 爆炸 - 戒灵(Nazgul) - 近战 Graug 攻击 - Graug 扔石头 - 地面重击、身体猛击和锁喉特技系列 - 中毒和诅咒持续伤害 - 稀有/特定伤害,支持每个 AttackRecord 的覆盖 - 诊断界面中提供持续受到伤害的观察记录。 ### 精灵箭和弓箭 - 实时显示当前/最大精灵箭,带有彩色条形图。 - **设置精灵箭**,支持精确数值、滑块和实时同步。 - **无精灵箭消耗**在游戏的消耗事务中保留箭矢。 - **最小精灵箭**受当前原生最大值限制。 - **最大精灵箭**覆盖范围从 `0` 到 `1000`,通过 **Set** 显式提交。 - **静态 HitBox** 强制将弓箭伤害判定为头部或身体,而无需替换无关的判定机制。 - **静态拉弦力度** 强制选择轻攻击或重攻击伤害。 - **快速拉弓** 将原生拉弓进度从 `x0.1` 缩放至 `x20.0`。 - **始终发射火箭** 通过游戏原生的火箭选择器引导符合条件的射击。 ### 绝境求生 (QTE) - 实时剩余/总尝试次数监视器,包括额外的 DLC 符文尝试。 - 可选的可移动绝境求生监视器窗口。 - **禁用绝境求生**,提供两种实现方式: - **Bypass** 跳过 QTE 路径。 - **Force Impossible diff** 要求原生选择器提供不可能通过的 QTE。 - **忽略“无机会”特技**允许对拥有该特技的队长进行绝境求生。 - **无限绝境求生尝试**在难度提升到困难时停止。 - **固定绝境求生 QTE 难度**将 QTE 锁定为简单、中等或困难。 ### 游戏修复 | 修复项 | 默认值 | 更改内容 | | --- | :---: | --- | | 修复恢复限制过冲 | 开启 | 将每次恢复的数值限制在游戏当前动态恢复上限内。 | | 修复 Alt-Tab 后鼠标卡住 | 开启 | 保持游戏原生的鼠标过渡状态,同时在整个隐藏期间替换为透明鼠标。 | | 钉刺箭造成伤害 | 关闭 | 恢复被钉刺箭技能抑制的原生轻或重弓伤害,同时保留钉刺效果。 | ## 安装说明 ### 前置条件 - Windows x64。 - Steam **中土世界:魔多之影 GOTY**。 - [兼容性](#compatibility) 中描述的支持的游戏可执行文件。 - 一个 64 位 ASI 加载器。[Ultimate ASI Loader](https://github.com/ThirteenAG/Ultimate-ASI-Loader) 是经过测试的选项。 ### 步骤 1. 关闭游戏。 2. 从[最新发布的版本](https://github.com/Liki-js/shadow-of-mordor-internal-trainer/releases)下载 `som_internal_trainer.asi`。 3. 将 x64 Ultimate ASI Loader 安装到 `ShadowOfMordor\x64` 目录下,并命名为 `winmm.dll`。 4. 如果 `ShadowOfMordor\x64\plugins` 不存在,则创建它。 5. 将 `som_internal_trainer.asi` 放入 `plugins` 文件夹内。 6. 启动游戏并按 右 Shift。 生成的目录结构应为: ``` ShadowOfMordor/ `-- x64/ |-- ShadowOfMordor.exe |-- winmm.dll `-- plugins/ `-- som_internal_trainer.asi ``` 在没有事先备份的情况下,请勿替换现有的代理 DLL。如果另一个模组已经提供了 ASI 加载器,请复用该加载器,而不是安装第二个代理。 ### 更新 关闭游戏,然后用新版本替换旧的 `som_internal_trainer.asi`。修改器功能开关在每个新的游戏进程中都会以禁用状态开始;两个默认的游戏修复选项根据设计会默认开启。 ### 卸载 从 `ShadowOfMordor\x64\plugins` 中删除这些文件: ``` som_internal_trainer.asi som_internal_trainer.ini som_internal_trainer.log som_incoming_damage.csv som_cursor_diagnostics.log ``` 如果其他 ASI 模组仍依赖于它,请保留 `winmm.dll`。否则,请单独删除加载器及其对应的 INI 文件。 ## 兼容性 | 组件 | 支持目标 | | --- | --- | | 游戏 | 中土世界:魔多之影 GOTY | | 发行平台 | Steam | | 架构 | x64 | | 渲染器 | 原生 DirectX 11 | | PE 时间戳 | `0x5FDE56CF` | | 镜像大小 | `0x01BE5000` | 其他游戏平台、旧版本的可执行文件、被修改过的可执行文件、DXVK 以及与第三方覆盖软件的组合未经认证。当无法识别可执行文件指纹时,修改器会有意禁用内存相关功能。 ## 从源码构建 ### 工具链 - Visual Studio 2022,包含**使用 C++ 的桌面开发**或独立的 Build Tools。 - MSVC x64 编译器和 Windows SDK。 - PowerShell 5.1 或更高版本。 Dear ImGui 和 MinHook 已包含在存储库中,因此不需要进行包管理器初始化。 ### 发布构建 ``` ./build.ps1 ``` 该脚本会自动检测 Visual Studio Community、Build Tools、Professional 或 Enterprise,并生成: ``` build/som_internal_trainer.asi ``` 修改器以 C++17 编译,启用了优化、`/W4`、`/WX`、`/permissive-`、`/sdl` 以及静态 MSVC 运行时。 ### 测试 ``` ./test.ps1 ``` 测试目标涵盖了可移植逻辑,包括伤害标准化和分发、CSV 处理、覆盖层输入队列以及稀有伤害注册表行为。 ### 静态分析 ``` ./analyze.ps1 ``` 这将在修改器源代码上运行 MSVC `/analyze`,同时将引入的第三方依赖项视为外部头文件。 ## 项目布局 ``` src/ |-- core.* configuration, logging, scanning, and patch helpers |-- runtime.* process lifecycle and executable validation |-- hook_runtime.* shared MinHook ownership |-- game_memory.* guarded game-memory access |-- damage* health and incoming-damage pipeline |-- regeneration.* native regeneration controls and fixes |-- elf_shot.* Elf-shot state and consumption transaction |-- maximum_elf_shot.* maximum Elf-shot interception |-- fire_arrows.* native fire-arrow selection |-- fast_bow_draw.* draw-progression scaling and session state |-- pinning_shot_damage.* hitbox, strength, and pinning-shot behavior |-- last_chance.* Last Chance monitoring and selector controls |-- cursor_* cursor diagnostics and Alt-Tab fix `-- overlay* D3D11 rendering, ImGui UI, and input ownership tests/ native unit tests analysis/ reverse-engineering and trace-analysis helpers vendor/ Dear ImGui, MinHook, and command-palette sources ``` ## 报告问题 [提交 Bug 报告](https://github.com/Liki-js/shadow-of-mordor-internal-trainer/issues/new?template=bug_report.yml),并附上: 1. 游戏平台和 **Info** 标签页中显示的可执行文件指纹。 2. 确切的复现步骤,包括问题是在场景转换之前还是之后开始出现的。 3. 所有已启用的修改器功能和游戏修复选项。 4. `plugins` 文件夹中的 `som_internal_trainer.log` 文件。 5. 在被要求时提供相关的 `som_cursor_diagnostics.log` 或 `som_incoming_damage.csv`。 如果可能包含个人路径或无关的进程数据,请勿公开上传存档文件、崩溃转储或大型追踪记录。 ## 设计原则 - **玩家特定行为:**必要时过滤共享的游戏指令,使其仅对塔里昂生效。 - **原生路径优先:**优先使用游戏自带的选择器、事务和动态限制,而不是硬编码的替换。 - **安全失败:**不受支持的指纹或无法解析的签名将导致相关功能保持不可用状态。 - **状态可逆:**hook 和补丁保留其原始状态,并在受控关闭期间将其恢复。 - **会话安全:**修改器开关不会在静默状态下将已启用的状态带入新的游戏进程。 - **行为可观察:**诊断状态和持续的伤害观察记录使得失败情况具备可检查性。 ## 许可证 基于 [BSD 3-Clause 许可证](LICENSE) 授权。您可以根据其条款使用和修改本项目;重新分发的源代码和二进制文件必须保留所需的版权和许可声明。 ## 免责声明 这是一个非官方的、粉丝制作的项目,仅供离线单人游戏使用。它不隶属于、也未受游戏开发者、发行商或版权所有者的认可。使用风险由您自己承担。
标签:C++17, DirectX 11, HTTP头分析, 云资产清单, 内存修改, 游戏修改器, 游戏辅助, 逆向工程