Coder Social home page Coder Social logo

corrm / unreal-finder-tool Goto Github PK

View Code? Open in Web Editor NEW
432.0 28.0 169.0 44.04 MB

Useful tool to help you fetch and dump Unreal Engine 4 Games information.

License: GNU General Public License v3.0

C++ 75.08% C 24.92%
unreal-engine games modding-games finder-info ue4

unreal-finder-tool's Introduction

Hi ๐Ÿ‘‹, I'm Islam Nofl

A Desktop, Mobile Programmer and full-stack web developer! I love code and the community

corrm

  • ๐Ÿ”ญ Iโ€™m currently working on CheatGear

  • ๐ŸŒฑ Iโ€™m currently learning AI

Connect with me:

Languages and Tools:

android angular arduino azure bash bootstrap c circleci cplusplus csharp css3 docker dotnet electron firebase gcp git html5 java javascript linux mssql mysql nginx nodejs opencv postman python pytorch redux rust sass sqlite tailwind travisci typescript unity unreal webpack xamarin

corrm

ย corrm

corrm

unreal-finder-tool's People

Contributors

barbosicks avatar corrm avatar cxmplex avatar johmarjac avatar jwright4531 avatar skupfer avatar songce74 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unreal-finder-tool's Issues

Infinity search

I tried use this tool on Survival Postapocalypse Now (UE 4.18 without anticheat) to find GObjects, but I can't find him because of the endless searching :(

Crash on SaveStruct

void Package::SaveStructs(const fs::path & path) const
{
	extern IGenerator* generator;
	std::string name = GenerateFileName(FileContentType::Structs, *this);

	std::ofstream os(path / name);//on here

	PrintFileHeader(os, true);

	if (!constants.empty())
	{
		PrintSectionHeader(os, "Constants");
		for (auto&& c : constants) { PrintConstant(os, c); }

		os << "\n";
	}

	if (!Enums.empty())
	{
		PrintSectionHeader(os, "Enums");
		for (auto&& e : Enums) { PrintEnum(os, e); os << "\n"; }

		os << "\n";
	}

	if (!ScriptStructs.empty())
	{
		PrintSectionHeader(os, "Script Structs");
		for (auto&& s : ScriptStructs) { PrintStruct(os, s); os << "\n"; }
	}

	PrintFileFooter(os);
	os.close();
}
Call Stack:

KernelBase.dll!00007ff9781a9129()	unknow
	vcruntime140.dll!00007ff963cb486d()	unknow
	UnrealFinderTool.exe!std::filesystem::_Check_convert_result(const __std_fs_convert_result _Result)  54	C++
	UnrealFinderTool.exe!std::filesystem::_Convert_narrow_to_wide(const __std_code_page _Code_page, const std::basic_string_view<char, std::char_traits<char> > _Input)  71	C++
	[inline] UnrealFinderTool.exe!std::filesystem::_Convert_stringoid_to_wide(const std::basic_string_view<char, std::char_traits<char> >)  264	C++
	[inline] UnrealFinderTool.exe!std::filesystem::_Convert_Source_to_wide(const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &)  362	C++
	[inline] UnrealFinderTool.exe!std::filesystem::path::{ctor}(const std::basic_string<char, std::char_traits<char>, std::allocator<char> > &)  783	C++

UnrealFinderTool.exe!Package::SaveClasses(const std::filesystem::path & path) 807 C++
UnrealFinderTool.exe!Package::Save(const std::filesystem::path & path) 113 C++
UnrealFinderTool.exe!SdkGenerator::ProcessPackages::__l2::(UEObject * obj, ParallelOptions &) 261 C++
[inline] UnrealFinderTool.exe!std::_Func_class<void, unsigned __int64 &, ParallelOptions &>::operator()(unsigned __int64 &) 124 C++
UnrealFinderTool.exe!ParallelWorker<std::vector<unsigned __int64, std::allocator >, unsigned __int64>::Worker() 108 C++
[external]

How i can use the generated SDK?

i generated the SDK, both internal and external, but how i can build a trainer that adds fullbright, unlimited power (on all levels with Torch/Battery power (rechargeable or not?), (and a god mode to avoid jumpscares) and how i can load that mod/function?

Filling the json with game data help

I ask this question as none did about how json files creation
@CorrM can you please create a small tutorial or explain how the json work I want to know how to do json for game called code vein

ue 4.18

GNames are invalid

Im using the GName found from the tool, to make a SDK, but it says "Gname is invalid"

image

image

A lot UnknownData

I use this tool dump the game "Remnant" with config
{
"name": "UStruct",
"super": "UField",
"vars": [
{ "pad_1": "16" },
{ "SuperField": "UStruct*" },
{ "Children": "UField*" },
{ "PropertySize": "int" },
{ "MinAlignment": "int" },
{ "pad_2": "48" }
],
"note": ""
}
no crash but a lot UnknownData
What should I do?

no function dump

SAOFB.zip

I see on some of the files have function dump , and some just empty tool log attached include photo

the engine used for that game is 4.17
but I using the 4.14 because this was the most close to the game version however with this settings the dump was done completely
1

Application crashing when searching for GNames

Hello!

When trying to generate an SDK for Fortnite 6.10, I am able to find the GObjects but the Unreal Finder Tool crashes when trying to find the GNames.

If you know how to fix this, I would greatly appreciate it. Thanks!

UEnum looks bad?

Was trying to find the explanation for this error when using the SDK creator for The Outer Worlds. I know the game is very new, but figured I'd give it a shot.

Doesn't end up dumping anything unfortunately.

"Not Valid Process ID. !!"

I'm attempting to dump PUBG, but whenever i press the Find button i get a error saying Not Valid Process Id (I tried multiple different versions, i must just be missing something obvious).

video

What could be the reason for this? BeDaisy & Battleye services are not running.

Warning: Not Valid Process ID

I get the message from the subject line when I attempt to use the tool to dump PUBG. It occurs when I click "Find" on GObjects or GNames. It finds the correct Process ID when I hit the search button and I can see it is grabbing the correct Process ID number for Tslgame.exe. Any ideas?

Some wrong stuff

Okay, so at first I wanna say, AWESOME tool!!!

However some bugs I found. The generated SDK classes all include SDK.h but the SDK.hpp file is generated so it throws thousands of errors. Have to rename SDK.hpp to SDK.h then it works.

Also when a SDK is generated the package counter is increased. But when without closing tool generating another sdk it doesnt reset counter. just a small thing nothing bad

NameDump is incomplete in some games.

I found that in some games NameDump was incomplete(i.e. lost some names). This could be because that in NamesStore.cpp:30 for (int i = 0; i < 15; ++i). The limit for chunks is too small for some games, changing it to 30 or so may fix this problem.
Cheers

game using gameguard

I play game called blade & soul complete using unreal engine 4.22

however the client is encrypted and engine config files not exist any idea what can I do?

Sorting is slow

Everything works great for me building form the source except the sorting after generation

I comment out below and it generates the SDK, If I leave it in it takes 2 hours and sometimes doesnt complete. The generation on my PC already takes 45 minutes without sorting (20k objects)

SdkGenerator::ProcessPackages

	if (!packages.empty())
	{
		state = "Sorting";
		// std::sort doesn't work, so use a simple bubble sort
		//std::sort(std::begin(packages), std::end(packages), PackageDependencyComparer());
		const PackageDependencyComparer comparer;
		for (auto i = 0u; i < packages.size() - 1; ++i)
		{
			for (auto j = 0u; j < packages.size() - i - 1; ++j)
			{
				state = std::to_string(i) + " - " + std::to_string(j);

				if (!comparer(packages[j], packages[j + 1]))
				{
					std::swap(packages[j], packages[j + 1]);
				}
			}
		}
	}

Support UWP Games

Does look like that "All UE4 Games, (32/64bit)" isn't true for Sea of Thieves, unfortunately. I mean, the part of finding GObjects/GNames (as of 92d38af) is (good work).

Trying all addresses generated with 2.2.0/2.2.1 the result always is either a crash of the game or a crash of the app (no error shown, after the NamesDump).

Build from source, the app crashes right a way (white window opens and closes without an error being shown). Could send you a build log. But it's running using the Local Windows Debugger.

Build from source it finishes after the CoreUObject dump (1/180k+) or due to (trying different addresses) "xC*5: Access violation reading location 0x000.."

If you need anything/logs, let me know.

Wrong indirection level in generated SDK

I had a problem that every parameter in generated SDK had extra indirection level (float became float*, UWorld* became UWorld**, etc.):

// Wrong
void UCanvas::K2_DrawBox(struct FVector2D* ScreenPosition, struct FVector2D* ScreenSize, float* Thickness, struct FLinearColor* RenderColor) { ... }
// Correct
void UCanvas::K2_DrawBox(const struct FVector2D& ScreenPosition, const struct FVector2D& ScreenSize, float Thickness, const struct FLinearColor& RenderColor) { ... }

After debugging I found out that due to typos in Package::GenerateMethods following piece of code performs reads of garbage data. If read resulted in 0 or 1, bug wasn't noticable but in my case I had large negative numbers there.

void Package::GenerateMethods(const UEClass& classObj, std::vector<Method>& methods) const
{
	// prop represents UFunction which should NOT be casted to UEProperty/UProperty because inheritance sequence looks like this: UFunction -> UStruct -> UField -> UObject
	// We are only using GetNext here so casts should be to UEField/UField
	for (auto prop = classObj.GetChildren().Cast<UEProperty>(); prop.IsValid(); prop = prop.GetNext().Cast<UEProperty>())
	{
		if (prop.IsA<UEFunction>())
		{
			// param represents UProperty, this is fine, inheritance sequence: UProperty -> UField -> UObject
			for (auto param = function.GetChildren().Cast<UEProperty>(); param.IsValid(); param = param.GetNext().Cast<UEProperty>())
			{
				//...
				
				if (p.ParamType == Type::Default)
				{
					// Here is the major problem, GetArrayDim() should be called on UProperty representing current parameter (param variable) NOT on UFunction which makes no sense and will always read garbage
					if (prop.GetArrayDim() > 1)
					{
						p.CppType = p.CppType + "*";
					}
					else if (info.CanBeReference)
					{
						p.PassByReference = true;
					}
				}
				
				// prop usage seems invalid here as well for same reason, why would we need same prop (UFunction) for every p? This should be param
				parameters.emplace_back(std::make_pair(prop, std::move(p)));
			}
			
			// In current state this is usless because every first is exactly the same and isn't even UEProperty/UProperty
			std::sort(std::begin(parameters), std::end(parameters), [](auto && lhs, auto && rhs) { return ComparePropertyLess(lhs.first, rhs.first); });
		}
	}
}

I will submit a pull request for this, issue posted for reference.

Can't find GObjects and find wrong GNames on PUBG mobile

I am running PUBG mobile on Gameloop emulator, I tried to use both easy and hard mode to find GObjects but it found nothing, and GNames finder found a GNames but it was not the correct one, game process was freezed and different SDK versions were tried.

what is this

game: dauntless
ue version: 4.20
issue: ur tool works completely fine in debug mode but fucks up and crashes 24/7 in release mode

Miss Names

Remnant have more than 250k names,but only dump to index 245759

FText support

I have been playing around with this tool for a few weeks and have finally gotten good results, using a slightly modified version based off of the SDK-New-Features branch since it produces much more usable results with a few minor fixes.

I have been able to inject (internal) and call many different functions successfully, but I have hit a road block in the area of FText, since many fields in this particular game use FTexts instead of FStrings.

As part of the UKismetTextLibrary class, I get many utility functions, including these:

...
static struct FString STATIC_Conv_TextToString(const struct FText& InText);
static struct FText STATIC_Conv_StringToText(const struct FString& inString);
...
// Function Engine.KismetTextLibrary.Conv_TextToString
// (Final, Native, Static, Public, HasOutParms, BlueprintCallable, BlueprintPure)
// Parameters:
// struct FText   InText      (ConstParm, Parm, OutParm, ReferenceParm)
// struct FString ReturnValue (Parm, OutParm, ZeroConstructor, ReturnParm)

struct FString UKismetTextLibrary::STATIC_Conv_TextToString(const struct FText& InText){
    static auto fn = UObject::FindObject<UFunction>("Function Engine.KismetTextLibrary.Conv_TextToString");

    struct{
        struct FText   InText;
        struct FString ReturnValue;
    } params;
    params.InText = InText;

    auto flags = fn->FunctionFlags;
    fn->FunctionFlags |= 0x00000400;

    static auto defaultObj = StaticClass()->CreateDefaultObject();
    defaultObj->ProcessEvent(fn, &params);

    fn->FunctionFlags = flags;

    return params.ReturnValue;
}
// Function Engine.KismetTextLibrary.Conv_StringToText
// (Final, Native, Static, Public, BlueprintCallable, BlueprintPure)
// Parameters:
// struct FString inString    (Parm, ZeroConstructor)
// struct FText   eturnValue  (Parm, OutParm, ReturnParm)

struct FText UKismetTextLibrary::STATIC_Conv_StringToText(const struct FString& inString){
    static auto fn = UObject::FindObject<UFunction>("Function Engine.KismetTextLibrary.Conv_StringToText");

    struct{
        struct FString inString;
        struct FText   ReturnValue;
    } params;
    params.inString = inString;

    auto flags = fn->FunctionFlags;
    fn->FunctionFlags |= 0x00000400;

    static auto defaultObj = StaticClass()->CreateDefaultObject();
    defaultObj->ProcessEvent(fn, &params);                     <--- Fatal Error

    fn->FunctionFlags = flags;

    return params.ReturnValue;
}

While STATIC_Conv_TextToString works perfectly, STATIC_Conv_StringToText instantly Fatal Errors.

SDK::FString str = SDK::UKismetTextLibrary::STATIC_Conv_TextToString(whateverFText); <--- works fine
SDK::FText txt = SDK::UKismetTextLibrary::STATIC_Conv_StringToText(L"Gamer Time"); <--- Fatal Error

This appears to be the same for (at least some) other functions in UKismetTextLibrary that return FText as well, including FText->FText ones like STATIC_TextToUpper.

Doing some debugging, the error occurs inside ProcessEvent (the call to fn crashes):

inline void ProcessEvent(class UFunction* function, void* parms) {
    auto fn = (GetVFunction<void(*)(UObject*, class UFunction*, void*)>(this, 64));
    return fn(this, function, parms); <--- Fatal Error
}

(note that ProcessEvent does work for many other functions)

Additionally, without full FText support, I'm missing FText::FromString (and FText::AsCultureInvariant), which would serve the same purpose as STATIC_Conv_StringToText.

I'm not sure why FText is hardcoded like it is; do we not know the format of the UnknownData?
Am I just misunderstanding something? (I'm an experienced programmer but new to UE4)

Does this work with other games?
Otherwise, do we know of another way to create an instance of an FText from a string?

Any info would be appreciated!

Dumping UWP Applications

Hi,

I am attempting to use this tool to dump an SDK for Sea of Thieves. Currently, the tool is unable to find the GObjects address for this game.
Are there any modifications that can be made to the source to enable the tool to get this address?

I have left it running on "Hard Mode" for upwards of an hour... with no success.

Thanks for your work on this tool, hopefully we can get this working.

Wrong GNames address

Tried this tool on multiple unreal engine games. On ARK it never finds GObject addresses. On Borderlands 2 it crashes and on Moons of Madness it finds everything but says wrong GNames address (there is only one).

I've tried following the video tutorial. Game is paused while scanning. What am I doing wrong?

image
image

startup error

I have an error on startup "Program encountered an issue and was termindated. dump information is located in dumps folder in program directory
Dumps.zip

Stack Overflow during package sort phase

Using both the new features and master branch are resulting in a full SDK being generated but a stack overflow exception being thrown during the package sorting phase.

UnrealFinderTool.exe!std::unordered_map<UEObject,Package const *,std::hash<UEObject>,std::equal_to<UEObject>,std::allocator<std::pair<UEObject const ,Package const *>>>::operator[](const UEObject &) Line 401
UnrealFinderTool.exe!PackageDependencyComparer::operator()(const Package & lhs, const Package & rhs) Line 27

It appears some sort of infinite recursion is being reached as there's well over 5k nested instances of PackageDependencyComparer::operator() being logged. Increasing stack size just results in a longer time before the exception is thrown. I've increased the stack as far as 16GB to see if eventually the sort completes but I had no success there.

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.