From e152fa7603976785b130b829cccf47b35e329fdc Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Mon, 15 Mar 2021 07:47:26 +0100 Subject: FIX(positional-audio): Update Among Us plugin to work with v2021.3.5s https://store.steampowered.com/news/app/945360/view/3050597789009577255 --- plugins/amongus/Game.cpp | 5 ++--- plugins/amongus/structs.h | 28 ++++++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/plugins/amongus/Game.cpp b/plugins/amongus/Game.cpp index 5a41e72d1..decf24576 100644 --- a/plugins/amongus/Game.cpp +++ b/plugins/amongus/Game.cpp @@ -18,11 +18,10 @@ Game::Game(const procid_t id, const std::string name) : m_ok(false), m_proc(id, return; } - // 74 39 jz short loc_???????? + // 75 58 jnz short loc_???????? // A1 ?? ?? ?? ?? mov eax, AmongUsClient_c ** // 8B 40 5C mov eax, [eax+5Ch] - // 8B 00 mov eax, [eax] - const std::vector< uint8_t > clientPattern = { 0x74, 0x39, 0xA1, '?', '?', '?', '?', 0x8B, 0x40, 0x5C, 0x8B, 0x00 }; + const std::vector< uint8_t > clientPattern = { 0x75, 0x58, 0xA1, '?', '?', '?', '?', 0x8B, 0x40, 0x5C }; m_client = m_proc.findPattern(clientPattern, iter->second); if (!m_client) { diff --git a/plugins/amongus/structs.h b/plugins/amongus/structs.h index 02e0d3af0..0f02a5bab 100644 --- a/plugins/amongus/structs.h +++ b/plugins/amongus/structs.h @@ -9,9 +9,6 @@ #include typedef uint32_t ptr_t; -typedef int32_t sptr_t; - -typedef ptr_t il2cpp_array_size_t; // Originally uintptr_t enum class DisconnectReason { ExitGame = 0x0, @@ -48,7 +45,7 @@ struct Il2CppType { uint32_t bits; }; -struct Il2CppClass_1 { +struct Il2CppClass_0 { ptr_t image; ptr_t gcDesc; ptr_t name; @@ -69,7 +66,6 @@ struct Il2CppClass_1 { ptr_t methods; ptr_t nestedTypes; ptr_t implementedInterfaces; - ptr_t interfaceOffsets; }; struct UnityEngine_Vector2_Fields { @@ -93,7 +89,7 @@ struct String_o { }; struct UnityEngine_Object_Fields { - sptr_t cachedPtr; + ptr_t cachedPtr; }; struct InnerNet_InnerNetClient_Fields : UnityEngine_Object_Fields { @@ -101,11 +97,13 @@ struct InnerNet_InnerNetClient_Fields : UnityEngine_Object_Fields { uint32_t netIdCnt; float timer; ptr_t spawnableObjects; + ptr_t nonAddressableSpawnableObjects; bool inOnlineScene; ptr_t destroyedObjects; ptr_t allObjects; ptr_t allObjectsFast; - ptr_t streams; + ptr_t messageWriterArray; + int32_t unknown; ptr_t networkAddress; int32_t networkPort; ptr_t connection; @@ -155,13 +153,13 @@ struct CustomNetworkTransform_o { }; struct AmongUsClient_Fields : InnerNet_InnerNetClient_Fields { - int32_t autoOpenStore; GameMode gameMode; ptr_t onlineScene; ptr_t mainMenuScene; ptr_t gameDataPrefab; ptr_t playerPrefab; ptr_t shipPrefabs; + ptr_t nonAddressableShipPrefabs; int32_t tutorialMapId; float spawnRadius; DiscoverState discoverState; @@ -174,7 +172,8 @@ struct AmongUsClient_StaticFields { }; struct AmongUsClient_c { - Il2CppClass_1 _1; + Il2CppClass_0 _0; + ptr_t interfaceOffsets; ptr_t staticFields; }; @@ -199,18 +198,21 @@ struct PlayerControl_Fields : InnerNet_InnerNetObject_Fields { ptr_t nameText; ptr_t lightPrefab; ptr_t myLight; + ptr_t textTranslator; ptr_t collider; ptr_t myPhysics; ptr_t netTransform; ptr_t currentPet; ptr_t hatRenderer; - ptr_t myRend; - ptr_t hitBuffer; + ptr_t spriteRenderer; + ptr_t colliderArray; ptr_t myTasks; ptr_t scannerAnims; ptr_t scannersImages; ptr_t closest; bool isNew; + bool isDummy; + bool notRealPlayer; ptr_t cache; ptr_t itemsInRange; ptr_t newItemsInRange; @@ -225,7 +227,8 @@ struct PlayerControl_StaticFields { }; struct PlayerControl_c { - Il2CppClass_1 _1; + Il2CppClass_0 _0; + ptr_t interfaceOffsets; ptr_t staticFields; }; @@ -238,6 +241,7 @@ struct PlayerControl_o { struct GameData_PlayerInfo_Fields { uint8_t playerId; ptr_t playerName; + bool unknown; uint8_t colorId; uint32_t hatId; uint32_t petId; -- cgit v1.2.3