IHHook

IHHook

一个代理DLL(位于 MGS_TPP\dinput8.dll),随MGSV加载,为模组提供扩展功能,并为Infinite Heaven提供图形菜单。

Utility

IHHook


版本 r21 - 2026-06-10(完整变更记录请见 GitHub)

Yazed0071 提供的 1.0.15.4 游戏版本地址。



适用于 MGSV 1.15 版本(标题画面)及 1.0.15.4 的 exe 文件

需要 Infinite Heaven r265



IHHook 此前与 Infinite Heaven 捆绑发布,现已分离为独立安装文件和 Nexus 页面,以便隔离反馈和问题。



IHHook 源代码:https://github.com/kapuragu/IHHook

IHHook 模组:https://www.nexusmods.com/metalgearsolidvtpp/mods/1226

Infinite Heaven 模组:https://www.nexusmods.com/metalgearsolidvtpp/mods/45



## 描述

一个与 MGSV 一同加载的代理 DLL(基于 dinput8.dll),为模组开发提供扩展功能。



## 依赖项

### 运行时

Microsoft Visual C++ Redistributable for Visual Studio,x64

https://aka.ms/vs/17/release/VC_redist.x64.exe



### 开发环境

MSVS v141 - VS 2017 C++ x64/x86 构建工具(v14.16)

Windows 10 SDK(10.0.17763.0)

(通过 Visual Studio 安装程序 > 单个组件安装)



## IHHook 功能

可通过以下 YouTube 播放列表查看可视化演示的功能:

https://www.youtube.com/playlist?list=PLSKlVTXYh6F9XCIpHUGTSkd9gDzoU6N1s



基于 dear-IMGUI 的 Infinite Heaven 菜单。

[youtube]ERL7okZVcW4[/youtube]



Lua C API 支持(基本完整)

允许通过 C 语言扩展 MGSV 内置的 Lua。

不支持动态库,因为 MGSV 的 Lua 是静态编译的,且通过独立的 Lua 发行版运行 MGSV Lua 状态并不可取,因为 MGSV Lua 核心已从默认版本修改。

但可以将 Lua C 模块编译到 IHHook 中。



通过 spdlog 记录日志。

Infinite Heaven 使用此功能以获得更好的性能(主要用于调试)

拥有独立的日志文件,用于调试/信息输出。



命名管道服务器:启动一个多线程命名管道服务器,包含两个管道:mgsv_in、mgsv_out。

目前由 Infinite Heaven 用于在使用 IHExt 时提升性能,并应开启我之前因旧的基于文本文件的 IH > IHExt 通信方式而犹豫不决的新可能性。



CityHash 日志记录(当前需通过 #define 编译启用),使用 emooses 的 CityHash 日志记录(但改用 spdlog 以获得更好性能),IHHook 最初即基于此构建。



RawInput 键盘处理与拦截(概念验证)



## 更多信息

关于项目的部分注释,请参见 IHHook.h 文件。



## 致谢

感谢 zip 促使我优化了发布流程,抱歉拖了这么久。

感谢 sai 提及他使用 Ghidra 所做的工作,这帮助我克服了几个障碍,开始找到 MGSV 的 Lua 函数。

感谢 emoose 提供 CityHook,为 IHHook 的起步奠定了基础。

感谢 Half Way Lambda 在 r18 中的 imgui 贡献。

感谢 Yazed0071 提供 1.0.15.4 中的地址。