☰
universal-modder 中 Unreal 4/5 游戏的 Mod 实战:引擎识别、UE4SS 钩子、Pak 替换与调校路线
2026/10/9 1:47:07 网站建设 项目流程

【免费下载链接】universal-modder

Point Claude at any game. Skills, tools and the fal MCP that let Claude Code mod almost any PC game you own: recon, reverse engineering, fal-generated art/3D/audio, in-game testing, showcase videos.

项目地址:https://gitcode.com/gh_mirrors/un/universal-modder
点击查看免费下载

本篇围绕 universal-modder 仓库中的 Unreal 引擎手册 unreal.md 展开,讲清面对一个 UE4/UE5 游戏时的完整决策链:如何确认引擎与版本、三条改造路线(UE4SS 脚本钩子 / Pak 资产替换 / VR 与引擎调校)各自适用什么需求、Pak 打包的具体命令与目录约定,以及反作弊、版本失配、.sig签名验证等必踩的坑。读完你应能对一个陌生 UE 游戏独立完成从um scan识别到选择路线、落地 Mod 并规避版本崩溃的全流程。

一、识别:确认它是 Unreal,并锁死引擎版本

Unreal 游戏的安装目录有两个标志性特征(手册 Identify 一节):

  • 主程序位于<Project>/Binaries/Win64/<Project>-Win64-Shipping.exe;
  • 资产包位于<Project>/Content/Paks/*.pak。

版本分界点同样关键:UE 4.26+ 与 UE5 的资产大多存放在 IoStore 格式的.utoc/.ucas文件中,.pak只剩一个很小的索引残留。这一点直接决定后面 Pak Mod 用repak还是retoc打包(见第四节坑点)。

um scan如何自动完成识别

手册说“um scan会 grep 可执行文件里的++UE5+Release-5.x”,um/scan.py 中的实现给出了完整细节:

  1. 文件索引阶段,detect()用 glob 匹配三类证据:*/binaries/win64/*-win64-shipping.exe、Content/Paks/*.pak、以及*.utoc(同时探测engine/binaries/thirdparty目录兜底),见 scan.py L483-L499;
  2. 版本提取阶段,它按 UTF-16LE 编码把++UE4+Release-x.y/++UE5+Release-x.y编译成正则再在 exe 中分块扫描——注释说明原因是FEngineVersion的分支名在 Windows 上是 UTF-16 字符串——扫描有 8 秒预算与大小上限,见 scan.py L491-L496;
  3. 报告阶段,det["iostore"] = ix.has("*.utoc")会把“是否 IoStore 游戏”写进扫描结果,add("unreal", 100 if shipping else 70, ...)则表明:找到 Shipping 可执行文件置信度 100%,仅靠 Pak 文件则是 70%。

对应的引擎条目在 scan.py L424:

"unreal": ("Unreal Engine", "unreal.md", "UE4SS (Lua/C++ hooks, live property viewer) and/or " "pak mods in Content/Paks/~mods (FModel to browse, retoc/repak to pack)"),

也就是说,um scan "<游戏名>"的报告会直接把玩家指向本手册(playbook =unreal.md),并给出“UE4SS + Pak Mod 二选一或并用”的默认路线。单元测试 tests/test_um.py L51-L55 用一个伪造的Proj-Win64-Shipping.exe(内含UE5+Release-5.3)验证了这条链路:断言引擎键为unreal、engine_version == "UE5+Release-5.3"且iostore为真。

存档与配置的位置

  • 存档:%LOCALAPPDATA%\<Project>\Saved\SaveGames;
  • 配置:...\Saved\Config\Windows\*.ini。很多改动仅靠改 ini 就能完成——例如Engine.ini的[SystemSettings]段落写 cvar(控制台变量)。这是成本最低的一条路,动手前先确认目标改动是否落在 cvar 层面。

二、路线 1:UE4SS——脚本与钩子,无需重编译引擎

RE-UE4SS 是一个注入式 loader。安装方式:把它的dwmapi.dll(较新构建)或xinput1_3.dll代理 DLL连同整个ue4ss/文件夹放在 Shipping 可执行文件旁边。um scan的 loader 探测表同样认这三类文件(*ue4ss.dll、*ue4ss-settings.ini、*/ue4ss/*),见 scan.py L336——如果游戏已经装过 UE4SS,扫描报告的loaders一栏会直接列出。

Lua Mod

Lua Mod 放在ue4ss/Mods/<Mod>/Scripts/main.lua,并在mods.txt中启用。可用能力:

  • 注册钩子:RegisterHook("/Script/Engine.PlayerController:ClientRestart", fn);
  • 对象监视:NotifyOnNewObject(某类对象新建时回调);
  • 对象查找:FindFirstOf("PlayerCharacter");
  • 读写任意 UProperty、调用任意 UFunction;
  • 线程安全:用ExecuteInGameThread把操作抛到游戏线程执行。

此外 UE4SS 还提供:

  • C++ Mod:更重的活(真正的 pre-hook、高性能路径)用 C++ 写;
  • Live View:GUI 控制台内置的对象 dumper/inspector,是“找到你需要的类和属性”的第一现场工具;
  • SDK/头文件生成器:导出 UHT 兼容的 SDK(类/属性/函数名 + 偏移);Dumper-7 是替代方案,社区中更常见;
  • Blueprint Mod:从Content/Paks/LogicMods加载LogicMod蓝图 Pak。

两个实操提醒(手册原文强调):一是先查该游戏的 UE4SS 兼容性——自定义引擎 fork 可能需要为 AOB(特征码)写 UE4SS 配置覆盖;二是先读 UE4SS 自带的示例 Mod 再提需求,很多你想要的功能已经有人写好了。

三、路线 2:Pak Mod——资产与蓝图替换

适合替换贴图、网格、材质、蓝图与 DataTable 的场景。整条链路分四步:

1. 浏览

用FModel(底层是 CUE4Parse 库)。两个前提:选对 UE 版本;如果 Pak 加密,还需要 AES 密钥。大多数游戏的密钥是公开的;不是的话,用AESDumpster从 exe 中提取。

2. 编辑

  • 用UAssetGUI或UAssetAPI编辑.uasset(UAssetAPI 支持 JSON round-trip,即导出为 JSON 修改再导回);
  • 或者在与游戏相同 UE 版本、相同项目名与路径的编辑器工程里直接 cook 替换。

3. 打包

  • 传统 Pak 用repak,例如手册给出的命令:repak pack --version V11 mymod_P/;
  • IoStore(UE 4.26+/UE5 的主流形态)必须用 retoc,不能用 repak;
  • 命名约定:产物叫*_P.pak——后缀_P让它在挂载优先级上压过原版同名资产;
  • 放置位置:Content/Paks/~mods/。um scan的 MOD_DIRS 探测表里也包含了content/paks/~mods这一标准目录(scan.py L354),扫描时会把它标记为已存在的 Mod 目录。

4. 新增内容(网格、材质、蓝图)

在同版本 UE 编辑器(Epic 启动器或源码构建)中 cook,然后把 cook 出来的文件打 Pak。硬性约束:挂载点与路径必须镜像游戏自身(/Game/...),路径对不上了资产就是加载不到的。

四、路线 3:VR、相机与引擎调校

  • UEVR(praydog):向大多数 UE4/UE5 游戏注入立体 VR 渲染,按游戏维护 profile;
  • 控制台解锁器:Universal Unreal Console Unlocker,或直接靠 UE4SS 打开控制台。解锁后可以执行stat fps、slomo、r.*系列 cvar——这对录展示视频极其有用:freecam、慢动作、隐藏 HUD 都是拍展示镜头的标准手段。

五、读取游戏内部:从 dump 到反汇编

手册“Read the game”一节给出的信息获取顺序,成本由低到高:

  1. 反射数据 dump:UE4SS 自带 dumper 或 Dumper-7,拿到类/属性/函数名与偏移。Unreal 的类型反射是最大红利——绝大多数 gameplay 类、属性名直接就有,仓库的反向工程手册 reverse-engineering/SKILL.md 也写着“Unreal: dump the reflection data first……it names most gameplay classes”;
  2. 原生代码反编译:对 Shipping exe 跑 Ghidra/IDA,处理 C++ 写的原生 gameplay 逻辑;需要给引擎函数命名时,对照 Epic 公开的 UE 源码(需 Epic 账号关联授权获取);
  3. 资产浏览给 Agent:fmodel-mcp可以让 Agent 直接浏览游戏资产,配合前面的路线使用。

六、仓库实战印证:Half Sword 的 UE4SS Lua Mod

知识库中的 Super Hammer 案例(UE 5.4,Half Sword 早期接入版 0.6.1.5)是路线 1 的完整落地样本,验证了本文多条论断:

  • 安装布局与手册一致:dwmapi.dll+ue4ss/放在HalfswordUE5/Binaries/Win64/HalfSwordUE5-Win64-Shipping.exe旁,从 Steam 启动正常加载;
  • 单 Pak、加密索引、无 IoStore:该作只有一个pakchunk0-Windows.pak(pak v11),所以它没走 Pak 路线——作者明确记录原因是“需要 AES 密钥、.usmap映射文件和一个匹配的 UE 5.4 编辑器工程”,这正对应第三节路线 2 的成本;
  • 存档位置与手册公式吻合:%LOCALAPPDATA%\HalfSwordUE5\Saved\SaveGames\GameProgress.sav;
  • 验证闭环:用UE4SS.log的日志行加um win shot截图做 oracle,存档改动前后用um backup快照——主循环技能 mod-any-game/SKILL.md 的日志位置表也列了 UE4SS →UE4SS.log这一条。

该案例还沉淀了手册未展开的若干 Lua 层坑,值得做 UE4SS Mod 的人留意:

  1. 属性/函数名含空格:Dumper-7 把空格显示为下划线,但真实 FName 是Weapon R、Get Damage这种带空格的写法,要用obj["Weapon R"]索引;
  2. 对蓝图函数的 hook 是 post-hook:对非/Script/路径,RegisterHook回调在函数执行完之后跑,改不了输入参数——该 Mod 的绕法是“带重入保护地把游戏自己的伤害函数再调一次”;
  3. 访问违例无法被 pcall 捕获:对空对象调方法直接崩游戏,任何 UObject 方法调用前先IsValid();
  4. FindFirstOf可能返回已关闭的旧实例:应改用FindAllOf并挑IsInViewport()为真的那个。

七、避坑清单(Pitfalls 全解)

坑手册结论仓库佐证
反作弊EAC/BattlEye 保护的作品(Fortnite 及大多数在线 UE 游戏)→ 直接放弃um scan的 ANTI_CHEAT 表识别 EAC/BattlEye 并输出警告“never inject into online play”(scan.py L321-L331, L685-L687);ONLINE_ONLY名单含 Fortnite(scan.py L403)
版本失配用错 UE 版本 cook 的 Pak 挂载即崩;蓝图 Mod 会在游戏更新后失效um scan报告的engine_version字段就是为对齐 cook 版本服务的
.sig签名带.sig文件的游戏会校验 Pak;社区绕过仅存在于特定单机游戏,不要把它当作在线防篡改手段去绕主循环手册 Hard rules:绝不绕过反作弊/DRM
IoStoreUE5 全量走 IoStore 流送的游戏需要retoc,而不是 repakdet["iostore"]由*.utoc探测得出(scan.py L497),测试用例显式断言该字段(tests/test_um.py L51-L55)

八、小结:路线选择决策表

需求路线关键动作
改行为/逻辑、钩子、新能力UE4SS(路线 1)dwmapi.dll+ue4ss/放 exe 旁,main.lua+mods.txt,先用 Live View/Dumper-7 找名字
替换/新增资产与蓝图Pak Mod(路线 2)FModel 浏览 → UAssetGUI/编辑器编辑 → repak(或 IoStore 用 retoc)→*_P.pak进Content/Paks/~mods/
只调 cvar/录展示视频调校(路线 3)ini 的[SystemSettings]、控制台解锁器、UEVR
改参数即达目的iniSaved\Config\Windows\*.ini,零风险起点

动手顺序建议:先um scan拿版本与 IoStore 标志 → 先试 ini/cvar → 再按需求选 UE4SS 或 Pak → 存档用um backup快照 → 以UE4SS.log与截图为 oracle 验证。遇到 EAC/BattlEye 或在线竞技,按仓库安全规则停在单机边界之外。

【免费下载链接】universal-modder

Point Claude at any game. Skills, tools and the fal MCP that let Claude Code mod almost any PC game you own: recon, reverse engineering, fal-generated art/3D/audio, in-game testing, showcase videos.

项目地址:https://gitcode.com/gh_mirrors/un/universal-modder
点击查看免费下载
上一篇:react-native-bottom-sheet长期维护策略:Issue管理与PR审核流程
下一篇:3分钟速览security-audit-skill:6个阶段让AI编码Agent变身安全审计员

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询