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 版本的**
**中土世界:魔多之影** [](https://github.com/Liki-js/shadow-of-mordor-internal-trainer/releases) [](#compatibility) [](#building-from-source) [](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) 授权。您可以根据其条款使用和修改本项目;重新分发的源代码和二进制文件必须保留所需的版权和许可声明。
## 免责声明
这是一个非官方的、粉丝制作的项目,仅供离线单人游戏使用。它不隶属于、也未受游戏开发者、发行商或版权所有者的认可。使用风险由您自己承担。**中土世界:魔多之影** [](https://github.com/Liki-js/shadow-of-mordor-internal-trainer/releases) [](#compatibility) [](#building-from-source) [](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)
标签:C++17, DirectX 11, HTTP头分析, 云资产清单, 内存修改, 游戏修改器, 游戏辅助, 逆向工程