Code Monkey home page Code Monkey logo

uedumper's Introduction

UEDumper - Unreal Engine Dumper
Logo

License Stars Forks Views

UEDumper is a all in one Unreal Engine Dumper that supports Unreal Engine 4.19 - Unreal Engine 5.3.0 and a live editor, where you can view the generated SDK at runtime and modify the games' memory.

FeaturesGetting StartedYour GameUsageContributingLicenseShowcaseDiscord

Features

  • Rich GUI with the help of the ImGui library.
  • Unreal Engine 4.19 - 5.3.0 support without having to modify any internal structures of the code.
  • SDK generator and editor.
  • New MDK type generator.
  • Live editor to read/write the games' memory.
  • Saving the SDK and MDK to use it in your C++ project.
  • Well documented source code for the Engine.
  • Simple Definitions that change the Engine's behavior.
  • Support for Dumpspace.

Getting Started

Please download the latest release and not the master branch as it might contain unstable code!

This project DOES NOT work out of the box! To support your game, you still have to reverse it on your own to find the information that is stated below. If you are not familiar with Unreal Engine or reverse engineering you will have a difficult time!

  1. UE Version
    • You can find the correct UE version by right-clicking the shipping application and navigating to Properties→Details
  2.  Offsets or signatures
    • GObjects
    • GNames
    • Optional: GWorld and other offsets for the live editor
  3. FName Decryption
    • Some games encrypt the FNames in the Name array. The Engine requires you to know and add the decryption routine. 
    • If there is no encryption, you can ignore this.
  4. Game settings
    • Most of the time the default settings in UEdefinitions.h work fine, but sometimes not. If you are 100% sure your offsets are set and correct, you might have to toggle macro definitions such as WITH_CASE_PRESERVING_NAME or STATS. More info to that is in the file.
    • A few games like Fortnite or PUBG might change the internal structures of the Engine that aren't normal (by modifying UE) and UEDumper won't be able to dump correctly unless you adjust them by yourself. UEDumper can not provide any info where these changes have been made. The fortnite branch in this repo will give you an example how modifications could look like.

Need help? Feel free to join the discord for additional help and finding tutorials how to find these settings for your game.

 

Support for your game

If you found all the information required by the step above, you can set them in the files stated below.

UE Version and Game settings

In UEdefinitions.h (Engine/Userdefined/UEdefinitions.h) set the UE_VERSION macro to your UE version. In the file are multiple macros defined for specific internal structs of the engine you have to set too as stated in Getting Started.

Additionally, you can add a custom macro for your game in case your game has specific internal struct changes.

Offsets or signatures

In Offsets.h (Engine/Userdefined/Offsets.h) add all your offsets for your game. Please make sure to read all the comments in the file before wondering why the engine or live editor does not find your offset. When adding an offset, make sure the name parameter is unique, otherwise errors might occur. The offsets GObjects and GNames must have the name OFFSET_GNAMES and OFFSET_GOBJECTS.

Again, you can add a custom macro in UEdefinitions.h for each game for easier switching of the offsets.

FName Decryption

In FName_decryption.h (Engine/Core/FName_decryption.h) you can add your custom decryption function. Make sure the macro USE_FNAME_ENCRYPTION is set to TRUE! The caller function (in Engine/Core/Core.cpp@EngineCore::FNameToString) expects to get the decrypted name in the inputBuf parameter back. Additionally, please check if the engine gets the namePoolChunk/FNameEntry correctly (in Engine/Core/Core.cpp@EngineCore::FNameToString), this might vary from game to game!

Again, you can add a custom macro in UEdefinitions.h for each game for easier switching of the decryption and reading of the entry.

Reading and writing memory

As almost every popular game uses an anticheat, you might have to add your custom read write function for this project. The default implementation is basic ReadProcessMemory / WriteProcessMemory. You can add your routines in driver.h (Memory/driver.h). If possible, don't modify any parameters of the function. If you do, make sure it's compatible with the caller function (in Memory/Memory.cpp@Memory::read and Memory::write). This applies for the getBaseAddress function too.

Modifying the engine

As stated before, some games such as Fortnite or PUBG make manual changes to the engine that cannot be implemented by default by toggling a macro. You have to figure that out on your own what structs they changed. However, any manually defined Unnreal Engine class is in UnrealClasses.cpp and UnrealClasses.h (Engine/UEClasses/) and changes should only appear there.

Usage

If you set all information and are ready to dump, there is nothing from stopping you. Usage is quite straight forward and the Dumper will throw Errors when dumping if the offsets or settings are incorrect. A video showcasing UEDumper and its capabilities is linked below.

The Live editor is experimental and requires basic knowledge how classes and structures work. Any reading or writing in the Live editor may cause game or dumper crashes.

Once you are done looking into your game, you can either save your project or save a SDK/MDK and Dumpspace files.

 

Contributing

Contribution is always appreciated! I will most likely not add support for Unreal Engine 3 or before, but you can.

Please keep in mind that i will not accept any pull requests that change the entire code base, do not use any caching, arent documented or just messy. 

This project is a very large project but very stable and uses a lot caching for almost everything in order to work properly and fast. However, if you find any better solutions, feel free to create a pull request to implement it.

 

Thank you

This project was made entirely by me and I spent a lot of free time in this project and after all i still released it to the public entirely free. 

Special thanks to Blue Fire for the idea, help and suggestions.

Also special thanks to guttir14 (and all contributers to UnrealDumper-4.25) and CorrM (and all contributers to Unreal-Finder-Tool), I've used their projects as a reference while making this tool.

Remember to only use this for personal use, this has been done entirely for research purposes only and should not be used in any bad way.

 

License

This project is licensed under the terms of the MIT license.

Showcase

Here a video on YouTube showcasing the game Only UP

Join the discord for any questions and help here.

Info

This project was not made for monetary gain and was not designed to target any games or developers who create Unreal Engine games or work at Unreal Engine. UEDumper is solely a third party tool allowing other skilled developers to view their target games' internal structure using Unreal Engines own Reflection System.

uedumper's People

Contributors

spuckwaffel avatar zzyxdev avatar sleekz avatar clauadv avatar zeroclear avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.