Developer knowledge network ยท moderated exchange

UnreliableCode Community

Developer Research, Reverse Engineering & Coding Community

Knowledge indexLive
4Categories
919Threads
2.8KPosts
Guide

Parsing Tool Cupboard building privilege authorization from BuildingPrivlidge class

unity_il2cpp_dan
IL2CPP Reverser
MEMBER
Rep: 46
Join Date: Jun 2020
Posts: 4
Thanks: 15
1 months ago ยท Jul 21, 2026 4:34 PM
#1

To check if your local player is authorized on a Tool Cupboard (TC) or detect enemy player IDs authorized on nearby bases:

  1. Locate BuildingPrivlidge entity in entity list.
  2. Read authorizedPlayers list (List<PlayerNameID> at offset 0x2A8).
  3. Iterate the authorized SteamID64 array.
CPP
int authCount = Read<int>(authList + 0x18);
uintptr_t itemsArray = Read<uintptr_t>(authList + 0x10);
for (int i = 0; i < authCount; i++) {
    uint64_t steamId = Read<uint64_t>(itemsArray + 0x20 + (i * 0x18));
    std::string playerName = ReadUnicodeString(Read<uintptr_t>(itemsArray + 0x28 + (i * 0x18)));
    printf("[TC AUTH]: %s (%llu)\n", playerName.c_str(), steamId);
}
rust_recoil_king
Member
MEMBER
Rep: 190
Join Date: May 2022
Posts: 5
Thanks: 48
1 months ago ยท Jul 21, 2026 7:44 PM
#2

Useful for base raiding to see who lives in a base and check if they are currently online.

vtable_slayer
Senior Reverser
MEMBER
Rep: 215
Join Date: Mar 2018
Posts: 86
Thanks: 61
1 months ago ยท Jul 22, 2026 11:48 AM
#3

Confirmed working. List structure is standard .NET List<T> layout.