From aaff48322b547f9e04933ec154e974889d4cbf0b Mon Sep 17 00:00:00 2001 From: hexomethyl <86240431+hexomethyl@users.noreply.github.com> Date: Sat, 23 Apr 2022 02:50:20 +1000 Subject: [PATCH] Support for Squad (#83) * Support for Squad * Squad engine struct //Thanks @guttir14 @Xed0sS --- Dumper/engine.cpp | 77 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/Dumper/engine.cpp b/Dumper/engine.cpp index 2fbc3fe..7a4c1cf 100644 --- a/Dumper/engine.cpp +++ b/Dumper/engine.cpp @@ -68,6 +68,76 @@ struct { } Default; static_assert(sizeof(Default) == sizeof(Offsets)); +struct +{ + uint16 Stride = 2; + struct + { + uint16 Size = 24; + } FUObjectItem; + struct + { + uint16 Number = 4; + } FName; + struct + { + uint16 Info = 0; + uint16 WideBit = 0; + uint16 LenBit = 6; + uint16 HeaderSize = 2; + } FNameEntry; + struct + { + uint16 Index = 0xC; + uint16 Class = 0x10; + uint16 Name = 0x18; + uint16 Outer = 0x20; + } UObject; + struct + { + uint16 Next = 0x28; + } UField; + struct + { + uint16 SuperStruct = 0x40; + uint16 Children = 0x48; + uint16 ChildProperties = 0; + uint16 PropertiesSize = 0x50; + } UStruct; + struct + { + uint16 Names = 0x40; + } UEnum; + struct + { + uint16 FunctionFlags = 0x98; + uint16 Func = 0xC0; + } UFunction; + struct + { + uint16 Class = 0; + uint16 Next = 0; + uint16 Name = 0; + } FField; + struct + { + uint16 ArrayDim = 0; + uint16 ElementSize = 0; + uint16 PropertyFlags = 0; + uint16 Offset = 0; + uint16 Size = 0; + } FProperty; + struct + { + uint16 ArrayDim = 0x30; + uint16 ElementSize = 0x34; + uint16 PropertyFlags = 0x38; + uint16 Offset = 0x44; + uint16 Size = 0x70; // sizeof(UProperty) + } UProperty; +} Squad; +static_assert(sizeof(Squad) == sizeof(Offsets)); + struct { uint16 Stride = 4; struct { @@ -406,6 +476,12 @@ struct { {"\x48\x8d\x0d\x00\x00\x00\x00\xe8\x00\x00\x00\x00\xc6\x05\x00\x00\x00\x00\x00\x0f\x10\x03", 22}, //GName {"\x48\x8B\x05\x00\x00\x00\x00\xC1\xF9", 9},//Gobject nullptr + }, + {//SquadGame.exe + &Squad, + {"\x4C\x8D\x05\x00\x00\x00\x00\xEB\x16\x48\x8D\x0D\x00\x00\x00\x00\xE8\x00\x00\x00\x00", 22}, //GName + {"\x48\x8D\x1D\x00\x00\x00\x00\x8B\x05\x00\x00\x00\x00\x39\x45\x88\x7C\x20\x48\x8D\x45\x88\x48\x89\x85\x90\x05\x00\x00", 30}, //Gobject + nullptr } }; @@ -428,6 +504,7 @@ std::unordered_map games = { {"Dauntless-Win64-Shipping",&engines[12]}, {"ProjectBoundarySteam-Win64-Shipping",&engines[0]}, {"Prospect-Win64-Shipping",&engines[0]}, + {"SquadGame", &engines[13]}, }; STATUS EngineInit(std::string game, void* image) {