Developer knowledge network · moderated exchange

مجتمع الكود غير الموثوق به

أبحاث المطورين، مجتمع الهندسة العكسية والترميز

Knowledge indexيعيش
4Categories
919Threads
2.8Kدعامات
Analysis

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

ue5_explorer
UE Specialist
MEMBER
مندوب: 107
تاريخ الانضمام: Mar 2020
دعامات: 6
شكرًا: 69
1 months ago · 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
مندوب: 215
تاريخ الانضمام: Mar 2018
دعامات: 86
شكرًا: 61
1 months ago · 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
مندوب: 162
تاريخ الانضمام: May 2018
دعامات: 73
شكرًا: 42
1 months ago · Jul 3, 2026 4:12 AM
#3

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