| 进程选择与探针 | 结构查看器 |
![]() |
![]() |
Dw0rdUetool 是一个运行在 Android arm64 设备上的 Unreal Engine 外部 Dumper。程序不注入目标进程,通过 KittyMemoryEx 读取目标进程内存,并使用 Vulkan 与 ImGui 提供悬浮操作界面。
完整流程分为两个阶段:
- 探针:识别目标进程、定位 UE 模块并验证核心地址和结构偏移。
- Dump:生成 Names、Objects、Offsets、按依赖排序的 SDK 包头和逆向辅助脚本。
工具同时支持:
- 专用 Profile:为已经适配的游戏提供固定偏移和定位逻辑。
- AutoFix:专用 Profile 不存在或失效时,自动定位
GNames、FNamePool、GUObjectArray等关键对象并修复结构偏移。
- Vulkan + ImGui 悬浮界面
- 中文界面与运行状态展示
- 探针与 Dump 两阶段工作流
- UE4/UE5 自动识别与 AutoFix 回退
- UObject、UField、UStruct、UClass、UFunction 等结构查看
- 一键导出
libUE4.so或libUnreal.so - 稳定依赖排序与分包 SDK 生成
- 强依赖循环检测和明确诊断
- 跨包前置声明和独立包头依赖包含
- Dumper-7 风格字段与函数参数属性输出
- ProcessEvent Params ABI、padding、bitfield、
sizeof和offsetof校验 - 重型入参移动、出参回写和返回值移动
- JSON 配置的指定类字段自动修补
默认输出目录:
/sdcard/Dw0rdUetool/<目标包名>/
| 文件 | 说明 |
|---|---|
Logs.txt |
完整运行日志和诊断信息 |
Names.txt |
FName 条目 |
Objects.txt |
UObject 索引、地址和完整名称 |
Offsets.hpp |
引擎关键地址和偏移 |
AIOHeader.hpp |
按依赖顺序包含全部包头 |
SDK_ForwardDeclarations.hpp |
跨包类型前置声明 |
SDK_Package_####_<Package>.hpp |
按依赖顺序编号的独立包头 |
SDK_Enums.hpp |
兼容模式枚举集合 |
SDK_Structs.hpp |
兼容模式结构集合 |
SDK_Classes.hpp |
兼容模式类集合 |
SDK_Offset.hpp |
Dumper-7 风格成员偏移 |
SDK_Runtime.hpp |
ProcessEvent wrapper 运行时接口 |
script.json |
IDA/Ghidra 函数信息 |
- CMake
- Ninja 或 Visual Studio
- Android NDK r25 及以上版本,推荐 r29
- 支持 C++20 的编译器
- Android arm64-v8a 设备
- root 权限与可用的
su - USB 调试与 ADB
- 正在运行的 UE4/UE5 目标进程
依赖排序、SDK 输出、参数 wrapper 和字段补丁策略可以在 Windows 或 Linux 上测试,不需要 Android NDK:
cmake -S . -B build-host \
-DDW0RDUETOOL_BUILD_HOST_TESTS=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build build-host --config Release --parallel
ctest --test-dir build-host -C Release --output-on-failureGitHub Actions 会在 Ubuntu 和 Windows 上执行相同的 11 项测试。
设置 NDK:
export ANDROID_NDK_HOME=/path/to/android-ndk-r29配置:
cmake -S . -B build-android \
-G Ninja \
-DNDK_PATH="$ANDROID_NDK_HOME" \
-DANDROID_ABI=arm64-v8a \
-DANDROID_PLATFORM=30 \
-DCMAKE_BUILD_TYPE=Release编译:
cmake --build build-android --parallel 4生成成品:
outputs/arm64-v8a/Dw0rdUetool
Windows 用户也可以运行完整测试与构建脚本:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/test-all.ps1adb shell "su -c 'mkdir -p /data/local/tmp/Dw0rdUetool'"
adb push outputs/arm64-v8a/Dw0rdUetool /data/local/tmp/Dw0rdUetool/
adb push start.sh /data/local/tmp/Dw0rdUetool/
adb shell "su -c 'chmod 755 /data/local/tmp/Dw0rdUetool/Dw0rdUetool /data/local/tmp/Dw0rdUetool/start.sh'"前台启动:
adb shell "su -c 'sh /data/local/tmp/Dw0rdUetool/start.sh'"后台管理:
# 启动
adb shell "su -c 'sh /data/local/tmp/Dw0rdUetool/start.sh start --background'"
# 状态
adb shell "su -c 'sh /data/local/tmp/Dw0rdUetool/start.sh status'"
# 重启
adb shell "su -c 'sh /data/local/tmp/Dw0rdUetool/start.sh restart --background'"
# 停止
adb shell "su -c 'sh /data/local/tmp/Dw0rdUetool/start.sh stop'"后台日志:
/sdcard/Dw0rdUetool/logs/Dw0rdUetool.log
- 在真机上启动目标 UE 游戏并进入实际场景。
- 启动 Dw0rdUetool。
- 在进程页面刷新并选择目标 package/PID。
- 点击“开始探测”。
- 检查核心地址和结构偏移是否识别成功。
- 点击“开始 Dump”。
- 等待进度完成后,从
/sdcard/Dw0rdUetool/<目标包名>/拉取结果。
目标进程重启或 PID 变化后,必须重新执行探针。
配置路径:
/sdcard/Dw0rdUetool/config/field_patches.json
项目提供示例:field_patches.example.json
{
"patches": [
{
"owner": "Class Engine.Actor",
"field": "RootComponent",
"mode": "override",
"offset": "0x98",
"size": 8,
"type": "USceneComponent*"
},
{
"owner": "Class Game.PlayerState",
"field": "TeamIds",
"mode": "upsert",
"offset": "0x3F0",
"size": 16,
"array_dim": 4,
"type": "int32_t",
"flags": "0x4",
"order": 10,
"allow_resize": true
}
]
}| 配置项 | 说明 |
|---|---|
owner |
UObject 完整名称 |
field |
字段名称 |
mode |
override、insert 或 upsert |
offset |
字段偏移,支持十进制或十六进制字符串 |
size |
字段占用的总字节数 |
array_dim |
静态数组元素数量 |
type |
生成的 C++ 类型 |
flags |
可选 PropertyFlags |
order |
多条规则的稳定应用顺序 |
allow_resize |
是否允许扩大结构大小 |
规则说明:
override:字段必须已存在。insert:字段必须不存在。upsert:存在则覆盖,不存在则插入。- 数组必须满足
size % array_dim == 0。 - 补丁不能侵入继承区域,也不能与其它字段非法重叠。
- 所有验证通过后才会原子提交布局修改。
启用生成的 inline wrapper:
#define UE_SDK_ENABLE_PROCESS_EVENT_WRAPPERS
#include "AIOHeader.hpp"宿主项目需要实现:
namespace SDKRuntime
{
void* FindFunction(const char* fullName);
void ProcessEvent(void* object, void* function, void* params);
}生成器会自动处理:
- const、引用、纯出参和数组参数
- 重型入参 move-in
- 引用或指针出参 move-back
- 返回值移动
- Params padding、bitfield、大小和字段偏移检查
检测到数组返回值、参数越界或非法存储重叠时,会禁用对应 wrapper 并输出诊断,不会生成错误 ABI。
Dw0rdUetool 使用 MIT License 开源。
项目包含或参考了多个第三方组件,各组件仍遵循其原始许可证,详见 THIRD_PARTY_NOTICES.md。
- KittyMemoryEx
- AndUEDumper
- Dumper-7
- UEDumper
- UnrealDumper-4.25
- Dear ImGui
- FreeType
- Vulkan


