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 ### 支持者 [![JetBrains logo.](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg)](https://jb.gg/OpenSource)
标签:Bash脚本, C++, DLL注入, Hook技术, Lua, Mod工具, rizin, SDK生成器, UE4, UE4SS, UE5, UHT Dumper, UMAP, Unreal Engine 4/5, USMAP, 二进制发布, 云资产清单, 作弊引擎, 动态属性编辑, 可视化界面, 外挂开发, 实时内存查看, 对象转储, 开发框架, 开源工具, 数据擦除, 数据结构解析, 流量审计, 游戏修改, 游戏安全, 游戏调试, 游戏黑客, 脚本系统, 蓝图加载, 虚幻引擎, 逆向工程