UEDumper
repository·master·Indexed 23 days ago
https://github.com/spuckwaffel/uedumperA reverse engineering tool for Unreal Engine games (versions 4.19 through 5.4.0). UEDumper provides an SDK generator and a live memory editor with an ImGui-powered GUI to inspect and modify game state at runtime. It supports MDK type generation, custom FName decryption, and configurable memory read/write routines to bypass anti-cheat.
What's inside UEDumper
- UEDumper is an all-in-one Unreal Engine Dumper supporting Unreal Engine versions 4.19 through 5.4.0. It provides an SDK generator and a live editor that allows users to view the generated SDK at runtime and modify a game's memory. It features a rich GUI powered by ImGui and supports MDK type generation.
Implement FName Decryption
masterIf the target game encrypts
FName, you must implement a custom decryption function inEngine/Core/FName_decryption.h:- Set the macro
USE_FNAME_ENCRYPTIONtoTRUE. - The function must return the decrypted name via the
inputBufparameter inEngine/Core/Core.cppatEngineCore::FNameToString. - Verify if the engine correctly retrieves
namePoolChunk/FNameEntryfor your specific game. - You can use custom macros in
UEdefinitions.hto manage decryption settings for different games.
- Set the macro
Use the UEDumper GUI
masterHello Window
- Project Name: Enter a name to create a working directory. Files will be saved in
[application directory]/[project name]/. - Process Name: Enter the exact, case-sensitive name of the target process.
- Settings: View current macros and adjust the Log Level (0-4). Level 0 is most verbose; Level 4 is most critical only.
- Loading Projects: You can load an existing
.uedprojfile to skip the dumping phase (Offline Mode). Note that the Live Editor is unavailable in Offline Mode.
Package Windows
- Package Viewer: Click a package to view its structs, classes, or enums. You can navigate via the unique navigation bar for each package.
- Search: Use the search bar in the top left to find specific structs/classes/enums.
- Editing: If an 'edit' button appears next to a member, it is either manually defined or a missing byte array. You can manually define it.
- Saving:
- Save the project to create a
.uedprojfile. - Save changes to create a
StructDefinitionsfile to overwrite existing definitions. - Create an SDK at any time.
- Save the project to create a
- Project Name: Enter a name to create a working directory. Files will be saved in
Modify Unreal Engine Classes Manually
masterIf a game (like Fortnite or PUBG) has made non-standard manual changes to engine structures that cannot be toggled via macros, you must define these changes manually. All manually defined Unreal Engine classes should be placed inEngine/UEClasses/using the filesUnrealClasses.cppandUnrealClasses.h.Prerequisites for supporting a game
masterUEDumper does not work out of the box for every game. To support a specific game, you must manually reverse-engineer it to find the following information:
- UE Version: Determine the exact Unreal Engine version (e.g., by checking the shipping application's properties).
- Offsets or Signatures: You need offsets for
GObjects,GNames, andGWorld(and other offsets required for the live editor). - FName Decryption: If the game encrypts
FName, you must find the decryption function. - Game Settings: Identify if the game uses specific engine macros (e.g.,
WITH_CASE_PRESERVING_NAME,UE_BLUEPRINT_EVENTGRAPH_FASTCALLS) that change internal engine structures.
Use the Live Editor
masterThe Live Editor allows reading and writing game memory at runtime using dumped structs.
Key Features & Limitations:
- Refresh Rate: The editor reads memory every 500ms by default.
- Addressing: You can inspect a specific address (pointing to a
UObject) or use a defined offset fromOffsets.h. If using an offset, it should point to a pointer of theUObject(e.g., aUWorldsignature) so the editor can automatically track the object if it changes. - Write Restrictions: Currently, you can only overwrite members that are not pointers or custom datatypes to prevent crashes.
- Stability: The live editor can crash at any time; save your changes frequently.
Override Structs and Datatypes
masterCustomizing Type Names
To change how types (like
uint8_torint64_t) appear in the editor or dump, modifyEngine/Userdefined/Datatypes.h.Overriding Classes and Members
To completely or partially override a class, use
Engine/Userdefined/StructDefinitions.h:- Runtime Changes: When making changes at runtime, you must enter the case-sensitive
PropertyType. - Safety Warning: Only overwrite the member itself. Do not add members at different offsets or with incorrect sizes, as this will break SDK generation and cause the Live Editor to crash. The engine assumes your provided size is correct.
- Runtime Changes: When making changes at runtime, you must enter the case-sensitive
Implement Custom Memory Read/Write (Driver Support)
masterTo bypass anti-cheat or use custom memory access methods, implement your own routines in
Memory/driver.h.Guidelines:
- The default implementation uses
ReadProcessMemory/WriteProcessMemory. - If you modify the function signatures, ensure they remain compatible with the callers in
Memory/Memory.cpp(Memory::read,Memory::write, andgetBaseAddress).
- The default implementation uses
Configure UE Version and Engine Settings
masterTo set the target Unreal Engine version and specific engine behavior macros, modify the file
Engine/Userdefined/UEdefinitions.h:- Set the
UE_VERSIONmacro to match your target UE version. - Configure specific macros for internal engine structs (e.g.,
WITH_CASE_PRESERVING_NAME). - You can also add custom macros here to facilitate easier switching between different game configurations.
- Set the
Configure Offsets and Signatures
masterAdd game-specific offsets in
Engine/Userdefined/Offsets.h.Requirements:
- Ensure the
nameparameter for each offset is unique to avoid errors. - The offsets for
GObjectsandGNamesmust be namedOFFSET_GOBJECTSandOFFSET_GNAMESrespectively. - You can use custom macros in
UEdefinitions.hto switch between different offset sets easily.
- Ensure the
View UEDumper version and product information
masterThe compiled
UEDumper.exebinary contains embedded versioning and product metadata. This information can be retrieved from the file's properties in Windows or via resource inspection tools.Product Metadata:
- ProductName:
UEDumper - ProductVersion:
2.0.0.0 - FileDescription:
Unreal engine dumper with live inspect - InternalName:
UEDumper.exe - OriginalFilename:
UEDumper.exe - LegalCopyright:
Copyright (C) 2023 Spuckwaffel - FileVersion:
2.0.0.0
- ProductName: