Developer knowledge network · moderated exchange

UnreliableCode-Community

Community für Entwicklerforschung, Reverse Engineering und Codierung

Knowledge indexLive
4Categories
919Threads
2.8KBeiträge
Analysis

Unreal Engine Actor iteration: GWorld -> ULevel -> AActor Array

ue5_explorer
UE Specialist
MEMBER
Vertreter: 107
Beitrittsdatum: Mar 2020
Beiträge: 6
Danke: 69
Vor 1 Monaten · Jul 2, 2026 6:26 PM
#1

For anyone reversing Unreal Engine games (UE4 / UE5):

  1. Find GWorld pointer (offset varies per build, look for strings "World %s" in .rdata).
  2. UWorld->PersistentLevel at offset 0x30.
  3. ULevel->Actors array is an array of AActor* pointers (TArray<AActor*> at offset 0x98):
CPP
uintptr_t persistentLevel = Read<uintptr_t>(gWorld + 0x30);
uintptr_t actorArray = Read<uintptr_t>(persistentLevel + 0x98);
int actorCount = Read<int>(persistentLevel + 0xA0);

for (int i = 0; i < actorCount; i++) {
    uintptr_t actor = Read<uintptr_t>(actorArray + (i * 8));
    if (!actor) continue;
    int actorId = Read<int>(actor + 0x18);
    // Match actorId in GNames pool...
}
vtable_slayer
Senior Reverser
MEMBER
Vertreter: 215
Beitrittsdatum: Mar 2018
Beiträge: 86
Danke: 61
Vor 1 Monaten · Jul 2, 2026 9:51 PM
#2

Inside AActor, read RootComponent (offset 0x130 or 0x190) to get RelativeLocation (Vector3) and RelativeRotation (Rotator).

ptr_arithmetic
C++ Wizard
MEMBER
Vertreter: 162
Beitrittsdatum: May 2018
Beiträge: 73
Danke: 42
Vor 1 Monaten · Jul 3, 2026 4:12 AM
#3

Clean UE hierarchy. GWorld pattern scanning with wildcards works reliably across minor engine revisions.