UE4SS-RE/RE-UE4SS
GitHub: UE4SS-RE/RE-UE4SS
面向虚幻引擎4/5游戏的Lua脚本注入系统与SDK生成工具,提供实时属性编辑、蓝图Mod加载和多种内存结构转储能力,是UE游戏逆向分析与模组开发的基础设施。
Stars: 2402 | Forks: 384
# Unreal Engine 4/5 脚本系统
针对 UE4/5 游戏的 Lua 脚本系统平台、C++ Modding API、SDK 生成器、蓝图 mod 加载器、实时属性编辑器以及其他转储工具。
## 主要功能
- [Lua Scripting API](https://docs.ue4ss.com/dev/lua-api.html):基于 UE 对象系统编写 Lua mod
- [Blueprint Modloading](https://docs.ue4ss.com/dev/feature-overview/blueprint-modloader.html):无需编辑/替换游戏文件即可自动生成蓝图 mod
- [C++ Modding API](https://docs.ue4ss.com/dev/guides/creating-a-c%2B%2B-mod.html):基于 UE 对象系统编写 C++ mod
- [Live Property Viewer and Editor](https://docs.ue4ss.com/dev/feature-overview/live-view.html):搜索、查看、编辑并监视每个已加载对象的属性,非常适合调试 mod 或弄清楚数值在运行时是如何变化的
- [UHT Dumper](https://docs.ue4ss.com/dev/feature-overview/dumpers.html#unreal-header-tool-uht-dumper):生成与 Unreal Header Tool 兼容的 C++ 头文件,用于为您的游戏创建镜像 .uproject
- [C++ Header Dumper](https://docs.ue4ss.com/dev/feature-overview/dumpers.html#c-header-generator):从反射类和蓝图生成带有偏移量的标准 C++ 头文件
- [Universal UE Mods](https://docs.ue4ss.com/dev/feature-overview/universal-mods.html):解锁游戏控制台及其他通用 mod
- [Dumpers for File Parsing](https://docs.ue4ss.com/dev/feature-overview/dumpers.html#usmap-dumper):生成用于无版本属性的 `.usmap` 映射文件
- [UMAP Recreation Dumper](https://docs.ue4ss.com/dev/feature-overview/dumpers.html#umap-recreation-dumper):将所有加载的 Actor 转储到文件,以便在编辑器中生成 `.umaps`
- 其他功能,包括有时会提供的 [实验性](https://docs.ue4ss.com/dev/feature-overview/experimental.html) 功能
## 目标 UE 版本:从 4.12 到 5.7
UE4SS 的目标不是成为一种对所有游戏都适用的“即插即用”解决方案。
其目标是拥有一个适用于大多数游戏的底层系统。
您可能需要自行更新 AOB,下方有相关指南。
## 基本安装
最简单的安装方式是从 [Releases](https://github.com/UE4SS-RE/RE-UE4SS/releases/latest) 下载最新非实验性版本的非开发版 (non-dev),并将 zip 内容解压到 `{游戏目录}/GameName/Binaries/Win64/`。
如果您的游戏在自定义配置列表中,也需要将相关文件夹中的内容解压到 `Win64`。
如果您计划使用 UE4SS 进行 mod 开发,可以照上述操作进行,但需下载 zDEV 版本。
### 命令行选项
如果 RE-UE4SS 是通过代理 DLL 安装的,则可以使用以下命令行选项:
- `--disable-ue4ss` - 通过使用此参数启动游戏,在不卸载的情况下临时禁用 UE4SS。
- `--ue4ss-path ` - 指定 UE4SS.dll 的自定义路径。支持绝对路径(例如 `C:\custom\UE4SS.dll`)和相对路径(例如相对于游戏可执行文件目录的 `dev\builds\UE4SS.dll`)。适用于在不修改安装文件的情况下测试不同的 UE4SS 构建。
### 环境变量
RE-UE4SS 支持以下环境变量:
- `UE4SS_MODS_PATHS` - 以分号分隔的额外 mod 目录列表。路径按相反顺序处理(第一个条目优先级最高),类似于 `PATH` 变量。例如:`C:\SharedMods;D:\GameMods;E:\TestMods`。
## 链接
[完整安装指南](https://docs.ue4ss.com/dev/installation-guide.html)
[修复兼容性问题](https://docs.ue4ss.com/dev/guides/fixing-compatibility-problems.html)
[Lua API - 概述](https://docs.ue4ss.com/dev/lua-api.html)
[生成 UHT 兼容头文件](https://docs.ue4ss.com/dev/guides/generating-uht-compatible-headers.html)
[自定义游戏配置](https://docs.ue4ss.com/dev/custom-game-configs.html)
[创建兼容的蓝图 Mod](https://www.youtube.com/watch?v=fB3yT85XhVA)
[UE4SS Discord 服务器邀请](https://discord.gg/7qhRGHF9Tt)
[Unreal Engine Modding Discord 服务器邀请](https://discord.gg/unreal-engine-modding-876613187204685934)
## 构建要求
- 运行 Windows 的电脑。
- Linux 支持可能会在某个时候实现,但不会很快。
- 支持 C++23 的 MSVC 版本:
- MSVC 工具集版本 >= 14.43.0
- MSVC 版本 >= 19.43
- Visual Studio 版本 >= 17.13
- 希望未来能支持更多编译器。
- [Rust toolchain >= 1.73.0](https://www.rust-lang.org/tools/install)
- [CMake >= 3.22](https://cmake.org/download/)
- 构建系统:[Ninja](https://ninja-build.org/) 或 MSVC(包含在 Visual Studio 中)
## 构建说明
1. 克隆仓库。
2. 执行此命令:`git submodule update --init --recursive`
确保您的 Github 账户已关联到您的 Epic Games 账户以获取 UE 源代码访问权限。
不要使用 `--remote` 选项,因为这会强制第三方依赖项更新到最新的提交,这可能会破坏某些功能。
您需要将您的 github 账户关联到 Epic games 账户才能拉取 Unreal 伪代码子模块。
您可以通过多种不同的方式构建 UE4SS。
## 从命令行 (CLI) 构建
### 构建模式
构建模式结构如下:`____`
当前支持的选项如下:
* `Target` (目标)
* `Game` - 适用于 UE 版本大于 UE 4.21 的普通游戏
* `LessEqual421` - 适用于 UE 版本小于或等于 UE 4.21 的普通游戏
* `CasePreserving` - 适用于启用了大小写保留构建的游戏
* `Config` (配置)
* `Dev` - 开发构建
* `Debug` - 调试构建
* `Shipping` - 发布(发行)构建
* `Test` - 测试构建
* `Platform` (平台)
* `Win64` - 64 位 windows
### 基本构建命令
要使用 CMake 构建 UE4SS,请使用以下命令:
```
# 使用 Ninja 配置(推荐用于更快的构建,单配置)
cmake -B build_cmake_Game__Shipping__Win64 -G Ninja -DCMAKE_BUILD_TYPE=Game__Shipping__Win64
# 使用 Ninja 构建
cmake --build build_cmake_Game__Shipping__Win64
# 或者使用 MSVC 配置(多配置,允许在不重新配置的情况下切换配置)
cmake -B build_cmake_Game__Shipping__Win64 -G "Visual Studio 17 2022"
# 使用 MSVC 构建(需要 --config 标志)
cmake --build build_cmake_Game__Shipping__Win64 --config Game__Shipping__Win64
```
### 配置选项
CMake 允许您配置各种构建选项。以下是一些有用的选项:
#### 代理路径
默认情况下,UE4SS 基于 `C:\Windows\System32\dwmapi.dll` 生成代理。要更改此设置,请设置 CMake 变量:
```
cmake -B build -DUE4SS_PROXY_PATH="" -DCMAKE_BUILD_TYPE=Game__Shipping__Win64
```
#### 分析器风格
默认情况下,UE4SS 禁用了分析功能 (`None`)。要启用分析,您需要同时指定分析器风格和包含 STATS 的构建配置:
```
# STATS 在 Dev 和 Test 构建中默认启用
cmake -B build -DPROFILER_FLAVOR= -DCMAKE_BUILD_TYPE=Game__Dev__Win64
```
### 实用的 CMake 命令
| Command | Description |
| --- | --- |
| `cmake -B -G ` | 使用特定的生成器(Ninja 或 "Visual Studio 17 2022")配置项目 |
| `cmake --build ` | 使用 Ninja 构建(单配置生成器) |
| `cmake --build --config ` | 使用 MSVC 构建(多配置生成器,需要 `--config`) |
| `cmake --build --clean-first` | 清理并重新构建(MSVC 需添加 `--config `) |
| `cmake --build --target ` | 构建特定目标(MSVC 需添加 `--config `) |
| `cmake --build --verbose` | 构建并显示详细输出(MSVC 需添加 `--config `) |
### 在 IDE 中打开
#### Visual Studio
CMake 内置支持生成 Visual Studio 解决方案:
```
cmake -B build -G "Visual Studio 17 2022"
```
然后在 `build` 目录中打开生成的 `.sln` 文件。
或者,Visual Studio 2022 具有原生 CMake 支持 - 您可以直接在 Visual Studio 中打开文件夹,它会自动检测 CMakeLists.txt 文件。
#### CLion / 其他 CMake IDE
大多数现代 IDE(CLion、带有 CMake Tools 的 Visual Studio Code 等)都具有原生 CMake 支持。只需打开项目文件夹,IDE 就会自动检测并配置 CMake 项目。
请注意,如果您更新的原因不是因为其他人推送了更新而您只是同步更改,那么您也应该提交并推送您已更新的子模块。
### 在 Linux 上交叉编译 Windows 二进制文件
UE4SS 支持使用两种方法从 Linux 交叉编译到 Windows:**xwin**(推荐)或 **msvc-wine**。
#### 所有交叉编译的前置条件
- [Rust toolchain >= 1.73.0](https://www.rust-lang.org/tools/install) 并包含 `x86_64-pc-windows-msvc` 目标:
rustup target add x86_64-pc-windows-msvc
- [CMake >= 3.22](https://cmake.org/download/)
- [Ninja build system](https://ninja-build.org/)
#### 选项 1:使用 xwin 交叉编译(推荐)
**xwin** 下载并打包交叉编译所需的 Microsoft CRT 头文件/库和 Windows SDK 头文件/库,无需安装 Windows。
##### 前置条件
- 支持 Windows 目标的 LLVM/Clang:
# 在 Ubuntu/Debian 上
sudo apt install clang lld llvm
# 在 Arch Linux 上
sudo pacman -S clang lld llvm
- [xwin](https://github.com/Jake-Shadle/xwin):
cargo install xwin
##### 设置
1. 使用 xwin 下载 Microsoft 工具和 SDK(只需执行一次):
xwin --accept-license splat --output ~/.xwin
这将下载大约 300MB,可能需要几分钟。
2. 设置 XWIN_DIR 环境变量:
export XWIN_DIR=~/.xwin
##### 使用 CMake 手动构建
```
# 使用 xwin-clang-cl 工具链配置(使用带有 MSVC 兼容标志的 clang)
XWIN_DIR=~/.xwin cmake -B build_xwin \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/xwin-clang-cl-toolchain.cmake
# 或者使用 xwin-clang 工具链(使用带有 GNU 风格标志的 clang)
XWIN_DIR=~/.xwin cmake -B build_xwin \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/xwin-clang-toolchain.cmake
# 构建
cmake --build build_xwin
```
##### 使用 build.sh 脚本构建
```
# 设置 XWIN_DIR
export XWIN_DIR=~/.xwin
# 使用 xwin-clang-cl 构建
./tools/buildscripts/build.sh --toolchain xwin-clang-cl
# 或者使用 xwin-clang 构建
./tools/buildscripts/build.sh --toolchain xwin-clang
# 构建特定配置
./tools/buildscripts/build.sh --toolchain xwin-clang-cl --build-config Game__Debug__Win64
# 带详细输出的清理构建
./tools/buildscripts/build.sh --toolchain xwin-clang-cl --clean --verbose
```
#### 选项 2:使用 msvc-wine 交叉编译
**msvc-wine** 使用在 Wine 下运行的真实 MSVC 工具。这提供了最大的兼容性,但需要更多的设置。
##### 前置条件
- Wine:
# 在 Ubuntu/Debian 上
sudo apt install wine wine64 winbind
# 在 Arch Linux 上
sudo pacman -S wine samba
- [msvc-wine](https://github.com/mstorsjo/msvc-wine) - 按照其安装指南安装 MSVC 工具
- Clang(用于 wine-clang-cl 模式)或使用 MSVC 的 cl.exe(用于 wine-msvc 模式)
##### 设置
1. 按照[官方说明](https://github.com/mstorsjo/msvc-wine#installation)安装 msvc-wine。
默认情况下,这会安装到 `~/my_msvc/opt/msvc`。
2. 确保 msvc-wine 工具位于您的 PATH 中:
export PATH="$HOME/my_msvc/opt/msvc/bin/x64:$PATH"
3. 设置 Wine 前缀(可选):
export WINE_PREFIX=~/.wine
##### 使用 CMake 手动构建
```
# 使用 wine-clang-cl 工具链配置(wine 下的 clang-cl)
cmake -B build_wine \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/wine-clang-cl-toolchain.cmake
# 或者使用 wine-msvc 工具链(wine 下的 MSVC cl.exe)
cmake -B build_wine \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/wine-msvc-toolchain.cmake
# 构建
cmake --build build_wine
```
##### 使用 build.sh 脚本构建
```
# 使用 wine-clang-cl 构建
./tools/buildscripts/build.sh --toolchain wine-clang-cl
# 或者使用 wine-msvc 构建
./tools/buildscripts/build.sh --toolchain wine-msvc
# 构建特定配置
./tools/buildscripts/build.sh --toolchain wine-clang-cl --build-config Game__Debug__Win64
```
#### 构建输出
交叉编译的二进制文件将位于构建目录下的 `/bin/` 中:
```
build_xwin_Game__Shipping__Win64/
└── Game__Shipping__Win64/
└── bin/
├── UE4SS.dll
├── dwmapi.dll (proxy DLL)
└── ... (other files)
```
### 在 Wine 下调试
使用基于 wine 的工具链时,您可以使用 Wine 的调试器来调试崩溃和问题。
#### 使用 winedbg
```
# 调试运行中的程序
winedbg ./path/to/game.exe
# 调试 Crash Dump
winedbg crash_2024_12_26_07_39_15.dmp
```
#### 调试的重要注意事项
- 调试符号(.pdb 文件)**不**存储在 minidump 文件中
- 您**必须**拥有与崩溃的 .dll 对应的完全相同的 .pdb 文件
- 确保符号匹配的最简单方法:
1. 记下构建 UE4SS 时的 git commit hash
2. 调试崩溃时,检出该确切提交
3. 重新构建以生成匹配的 .pdb 文件
4. 然后调试 minidump
#### 提示
- 设置 `WINEDEBUG=-all` 以减少构建期间 Wine 的调试输出(build.sh 已完成此操作)
- 如果遇到“拒绝访问”错误,请确保已安装 `winbind` 或 `samba`
- PDB 文件生成在 DLL 文件所在的同一目录中
## 更新 git 子模块
如果您想更新 git 子模块,可以通过以下三种方式之一进行:
1. 您可以执行 `git submodule update --init --recursive` 来更新所有子模块。
2. 您也可以通过执行 `git submodule update --init --recursive deps//` 选择逐个更新子模块。
除非您确实想更新到最新提交,否则不要使用 `--remote` 选项。
3. 如果您更愿意选择特定的提交或分支来更新子模块,请 `cd` 进入该依赖项的子模块目录并执行 `git checkout `。
您可能想要不时更新的主要依赖项是 `deps/first/Unreal`。
## 感谢所有帮助测试的人员
- GreenHouse
- Otis_Inf
- SunBeam
- Motoson
- hooter
- Synopis
- Buckminsterfullerene
### 支持者
[](https://jb.gg/OpenSource)
标签:Bash脚本, C++, DLL注入, Hook技术, Lua, Mod工具, rizin, SDK生成器, UE4, UE4SS, UE5, UHT Dumper, UMAP, Unreal Engine 4/5, USMAP, 二进制发布, 云资产清单, 作弊引擎, 动态属性编辑, 可视化界面, 外挂开发, 实时内存查看, 对象转储, 开发框架, 开源工具, 数据擦除, 数据结构解析, 流量审计, 游戏修改, 游戏安全, 游戏调试, 游戏黑客, 脚本系统, 蓝图加载, 虚幻引擎, 逆向工程